`
zhoujinhuang
  • 浏览: 93461 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

一、什么是 DRBD
    DRBD
是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络 RAID
二、 drbd 的应用范围是什么?除此之外,创建高可用性集群还需要什么?
        Drbd
负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服务 ,如 TurboHA 心跳连接,以及一些能在块设备上运行的应用程序。
   
例如:
     
--裸 I/O
     
--文件系统及 fsck
     
--具有恢复能力的数据库。
三、它是如何工作的?
        
每个设备( drbd 提供了不止一个设备)都有一个状态,可能是 状态或 辅助 状态。在带有主要设备的节点上,应用程序应能运行和访问设备( /dev/nbX )。每次写入都会发往本地低层设备和带有 辅助 状态设备的节点中。次要设备只能简单地把数据写入它的低层块设备上。
 
读取数据通常在本地进行。
        
如果主要节点发生故障,心跳将会把辅助设备转换到主状态,并启动其上的应用程序。(如果您将它和无日志 FS 一起 使用 ,则需要运行 fsck )。
   
如果发生故障的节点恢复工作,它就会成为新的辅助节点,而且必须使自己的内容与主节点的内容保持同步。当然,这些操作不会干扰到后台的服务。
四、 drbd 现在 HA 集群有什么关系?
        
大部分现行高可用性集群(如:惠普、康柏等等)使用的是共享存储器,因此存储器连接多个节点(用共享的 SCSI 总线或光纤通道就可以做到)。
    Drbd
也可以作为一个共享的设备,但是它并不需要任何不常见的硬件。它在 IP 网络中运行,而且在价格上 IP 网络要比专用的存储网络经济的多。
   
目前, drbd 每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本将支持 两个节点进行读写存取。
   
这很有用,比如对 GFS 来讲就是如此。兼容性 Drbd 可以在 ide SCSI 分区和整个驱动器之上运行,但不能在回路模块设备上运行。
   
(如果您硬要这样做,它就会发生死锁)。
    Drbd
也不能在回送网络设备中运行。(因为它同样会发生死锁:所有请求都会被发送设备占用,发送流程也会阻塞在 sock_sendmsg ()中。有时,接收线程正从网络中提取数据块,并试图把它放在高速缓存器中;但系统却要把一些数据块从高速缓存器中取到磁盘中。
   
这种情况往往会在接收器的环境下发生,因为所有的请求都已经被接收器块占用了。
五、安装
   
下载软件
   
最新 的稳定版本为 0.6.11 ,您可从 http //www.drbd.org/releases.html 下载它。
   
您可以从 CVS 中得到最新的源文件。注意,有时代码不能进行编译。您可以通过 cvs 或命令行界面得到它:
    [philipp@alf drbd]$

export CVSROOT= :pserver :anonymous@cvs.drbd.org :/var/lib/cvs/drbd
   [philipp@alf drbd]$ cvs login
   
Logging in to anonymous@cvs.drbd.org
    CVS password
[Press the return key]
    [philipp@alf drbd]$ cvs -z9 checkout drbd
   
要获取当前的开发分支,可以使用如下命令:
    [philipp@alf drbd]$ cvs -z9 checkout -r rel-0_7-branch
六、编译包
   
直接编译即可。只需如下操作:
    $ make
    $make install
   
如果您想为 drbd 编译不同版本的内核,您需要定义 KERNVER (包括路径)同时您也要定义 drbd 的安装路径。
    make KERNVER=2.4.22-7 KDIR=/usr/src/linux-2.4.22-7-include
    make KERNVER=2.4.22-7 PREFIX=/local/lib/module/path/ install
   
测试 加载 drbd 模块
   
如果这些都已经创建和安装妥当,您就可以测试加载模块了。
    $ /sbin/insmod drbd
 

如果一切正常,您不会看见任何 ERROR (错误)信息,用 Ismod 程序可以验证模块是否已被加载。
    dev2-98
~/rpm/SPECS # lsmod
    Module Size Used by Tainted
PF
    drbd 40140 0
unused
    ...
    $ dmesg
    ...
    drbd
initialised.Version 0.6.8 api 63/proto 62
   
如果您看到了 drbd ,就表示一切正常。就可以继续执行 rmmod ,并转到举例配置部分。
    $ /sbin/rmmod drbd
   
问题未解决符号
   
如果在加载模块时,出现了如下信息:
    drbd.o
unresolved symbol sock_alloc
    drbd.o
unresolved symbol proc_register
    drbd.o
unresolved symbol schedule_timeout
    ...
   
这就表示您在内核中编译了 CONFIG_MODVERSIONS ,而 DRBD 模块中没有编译 MODVERSIONS ,或者正好相反。这里给出两种解决方案:
   
用不带 MODVERSIONS 的系统: 更改您的内核配置, 删掉 CONFIG_MODVERSIONS 选项。(参见 ~linux/.config 。)重建内核。
   
使用带 MODVERSIONS 模块的系统:编辑 ~drbd/Makefile.vars ,并将 -DMODVERSIONS -DCONFIG_MODVERSIONS 添加到 KERNFLAGS ,最后重建 DRBD
七、命令的使用
    drbdsetup
    drbsetup
drbd 程序套件中的底层配置工具。您可以使用该工具把低层模块设备和 drbd 设备联系起来、安装 drbd 设备对,
   
以便镜像它们的低层模块设备和检查运行 drbd 设备的配置。
   
使用 drbdsetup 的例子
   
假设您的两台机器分别命名为节点 1 10.0.0.10 )和节点 2 10.0.0.20 ),您想在这两台机器上使用 /dev/hdc6 作为它们的低层设备。
   
那么在节点 2 上,您可以发出以下命令:
    $ insmod drbd.o
    $ drbdsetup /dev/nb0 disk /dev/hdc6
    $ drbdsetup /dev/nb0 net 10.0.0.20 10.0.0.10
B
   
在节点 1 上,您可以发出以下命令:
    $ insmod drbd.o
    $ drbdsetup /dev/nb0 disk /dev/hdc6
    $ drbdsetup /dev/nb0 net 10.0.0.10 10.0.0.20
B
    $ drbdsetup /dev/nb0 primary
   
此时,您就可以像在其他设备一样使用 /dev/nb0 了。
    $ mkfs -b 4096 /dev/nb0
    $ mount /dev/nb0 /mnt/mountpoint
     
上例中使用了 “B” 协议。 drbd 允许您选择所需的协议,以控制如何将数据写入辅助设备。
八、 DRBD 协议
   
协议说明
    A
数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
    B
收到接收确认就认为完成了写入操作。
    C
收到写入确认就认为完成了写入操作。
   
您还可以选择其它参数来将数据传输给磁盘和网络选项。更多详情,请参见 drbdsetup 手册页。
九、 Config 和脚本的使用
    drbd.conf
和脚本
   
在上面,我们介绍了 drbdsteup 的使用。 drbd 也允许您直接在 drbd.conf 文件中进行设置。通过正确地设置该文件和使用 init.d/drbd 脚本,
   
您能够轻松让 drbd 在机器启动后正常运行起来。
    drbd.conf
设置举例
   
在本配置中,两台机器分别命名为 thost1 thost2 thost1 IP 地址是 10.1.1.31 thost2 IP 地址是 10.1.1.32
   
我们要在 thost1 /dev/hda7 thost2 /dev/hda7 之间创建镜像。下面是一个完成该操作的 /etc/drbd.conf 文件范例:
        resource drbd0 {
        protocol=B
        fsck-cmd=fsck.ext2 -p -y
        on thost1 {
        device=/dev/nb0
        disk=/dev/hda7
        address=10.1.1.31
        port=7789
        }
        on thost2 {
        device=/dev/nb0
        disk=/dev/hda7
        address=10.1.1.32
        port=7789
        }
        }

    脚本的使用


   
创建了 drbd.conf 文件之后,在 thost1 上运行如下命令:
    $ /etc/rc.d/init.d/drbd start
   
thost2 进行同样的操作,
    $ /etc/rc.d/init.d/drbd start
   
此时,两台设备之间就建立起一个镜像,您可以查看 /proc/drbd 进行核实。
    $ cat /proc/drbd
   
现在您可以在设备上创建一个文件系统,然后把它加载到 thost1 上。
    $ mkfs /dev/nb0
    $ mount /dev/nb0 /mnt/disk
   
恭喜您,现在您已经使用 drbd 创建了一个镜像。要进一步创建高可用性的故障切换系统,请查看脚本子目录,并可结合使用 linux-ha.org 上提供的心跳软件

 

分享到:
评论

相关推荐

    drbd9.0官方中文文档资料.zip

    DRBD(Distributed Replicated Block Device)是一种开源的分布式存储解决方案,主要用在Linux系统上,用于实现数据的高可用性和容错性。DRBD9是其最新的版本,提供了更高效的数据复制和更高的性能。本压缩包“drbd...

    DRBD 安装手册.doc

    DRBD(Distributed Replicated Block Device)是一种用于创建高可用性集群的软件,它通过网络在两台或多台服务器之间实时同步数据,提供磁盘镜像功能,类似于网络RAID。DRBD的主要任务是接收数据,将其写入本地磁盘...

    利用DRBD实现不同单板上的磁盘数据备份

    一、DRBD 详解 DRBD,全称 Distributed Replicated Block Device,是一种分布式复制块设备技术,用于在两台或多台服务器之间实时同步数据。它为系统提供了高可用性(HA)解决方案,使得在一台服务器故障时,另一台...

    drbd84离线安装包

    DRBD的全称是Distributed Replicated Block Device,即分布式复制块设备,是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。DRBD是镜像块设备,是按数据位镜像成一样的数据块。简单说...

    DRBD中文指南|drbd官方指南翻译

    ### DRBD中文指南知识点解析 #### 一、DRBD概览与翻译背景 **DRBD**(Distributed Replicated Block Device)是一种用于实现服务器间数据实时镜像的技术,旨在提高数据的可靠性和可用性。本中文指南是基于官方英文...

    DRBD官方指南(中文)

    DRBD官方指南是一份关于分布式复制块设备(DRBD技术)的详细参考资料,由LINBIT公司赞助并免费提供。DRBD是一种开源的、无共享的、基于软件的复制存储解决方案,它能够在服务器之间实时镜像块设备(如硬盘、分区、...

    DRBD9和LINSTOR用户指南中文版.doc

    《DRBD9和LINSTOR用户指南中文版》是一份详尽的文档,旨在帮助用户理解和使用DRBD 9和LINSTOR这两个关键的存储技术。DRBD(Distributed Replicated Block Device)是一种用于实现数据实时、透明和同步或异步复制的...

    DRBD keepalived负载搭建配置

    DRBD (Distributed Replicated Block Device) 是一种用于创建高可用集群的数据复制技术,它可以将一个磁盘设备的更改实时地复制到另一个节点,确保在主节点故障时能快速切换到备份节点,从而保证服务的连续性和数据...

    drbd安装使用指南中文的

    DRBD(Distributed Replicated Block Device)是一种分布式存储解决方案,用于在两台或多台服务器之间实时同步数据,提供高可用性和灾难恢复能力。本指南将详细介绍DRBD的安装与使用,帮助你理解如何构建一个可靠的...

    drbd-utils-8.9.3

    分布式复制块设备(DRBD, Distributed Replicated Block Device)是一种高效、可靠的软件解决方案,用于在两台或多台服务器之间同步块级别的数据。DRBD的主要目标是提供无共享的存储复制,确保数据的安全性和高可用性...

    Heartbeat DRBD MySQL 高可用方案搭建.docx

    【Heartbeat DRBD MySQL 高可用方案搭建】 在IT领域,构建高可用系统是保障业务连续性和数据安全的重要措施。本方案将详细讲解如何利用Heartbeat、DRBD和MySQL搭建一个高可用环境,确保数据库服务的稳定运行。 **...

    drbd 原理图和依赖关系

    DRBD(Distributed Replicated Block Device)是一种分布式存储解决方案,用于在两台或多台服务器之间实时同步数据。它提供了一种高可用性(HA)的架构,确保在一台服务器出现故障时,另一台服务器能够无缝接管,从而...

    DRBD+MYSQL+keepalived

    ### DRBD+MySQL+Keepalived 部署详解 #### 一、环境描述 本文档详细介绍了一种基于DRBD(Distributed Replicated Block Device)与Keepalived结合的高可用MySQL集群部署方案。该方案旨在通过DRBD实现数据同步复制...

    linux 下 DRBD 基础

    【Linux下DRBD基础】 DRBD,全称为Distributed Replicated Block Device,是一种软件实现的分布式存储解决方案,它能够在无共享环境下实现服务器间块设备内容的实时、透明、同步或异步复制。DRBD的核心功能集成在...

    DRBD配置指南主从模式

    DRBD (Distributed Replicated Block Device) 是一种用于创建高可用性集群的软件,它能够实现数据的实时复制,确保在一个节点出现故障时,另一个节点能够无缝接管服务,避免数据丢失。在主从模式下,DRBD配置通常...

    drbd的工作原理介绍

    Introduction to DRBD deals with DRBD’s basic functionality. It gives a short overview of DRBD’s positioning within the Linux I/O stack, and about fundamental DRBD concepts. It also examines DRBD’s ...

    DRBD编译安装与配置

    DRBD (Distributed Replicated Block Device) 是一种用于Linux系统的数据复制技术,它可以在两台或多台服务器之间创建一个实时、透明的磁盘镜像,从而实现数据的高可用性和故障切换。DRBD的主要功能是将一个物理磁盘...

    三思笔记drbd入门与应用

    ### 三思笔记DRBD入门与应用 #### 1.1 设置操作系统 在开始DRBD配置之前,确保每台服务器(Primary和Secondary)都有正确的主机名设置至关重要。正确的主机名有助于简化后续步骤,并确保DRBD服务能正确识别各节点...

    mysql+heartbeat+drbd软件集合

    Heartbeat和DRBD(Distributed Replicated Block Device)则是用于构建高可用性集群的关键组件,它们可以确保在主服务器出现故障时,系统能无缝切换到备用服务器,从而保障服务不间断。 Heartbeat是一个开源的网络...

    DRBD(磁盘镜像技术)

    【什么是DRBD】 DRBD,全称Distributed Replicated Block Device,是一种用于构建高可用性(HA)集群的网络磁盘镜像技术。它通过网络将一个节点的完整块设备镜像到另一个节点,实现数据的实时同步。DRBD可以视为一种...

Global site tag (gtag.js) - Google Analytics