DRBD研究资料

DRBD 研究资料


作者:沈小然

翻译:沈小然

msn :[email protected]

   公司:北京方标讯业科技有限公司

   日期:2007912

 

  


1         DRBD是什么?

DRBD Linux 操作系统的一个分布式远程块设备。它允许您在远程机器上通过一个专用网络建立一个本地块设备的实时镜像,你看它就像一个网络上的raid-1。与双机软件结合使用。

DRBD接管数据流把它们写进本地磁盘并且发送到其他的主机上。

一个集群服务需要的另外一些成员就是heartbeat和工作在同一个块设备上的某类应用程序。这类成员例如:

A filesystem & fsck. (文件系统或者fsck

A journaling FS. (日志型文件系统)

A database with recovery capabilities. (带有恢复能力的数据库)

2         DRBD如何工作?

每个设备(DRBD提供一个以上的这些设备)都有一个身份,被称为主或从设备。主设备节点被映射为逻辑设备/dev/drbdX。每次写操作都发送到本地的下级块设备,以及从设备节点。从设备简单地写入数据给它的下级块设备。读操作总是在本地完成。

如果主节点失败,heatbeat开始切换从设备转变为主设备身份,并开启应用服务程序。(如果你使用的是一个非日志文件系统,这就涉及到运行fsck

如果失败的节点再次恢复,它就成为一个新的从设备节点并且与主设备连接做同步。当然这些将在后台运行不会中断服务。

并且,当然我们仅仅再次同步那些实际上发生过改变的数据。如果可能DRBD总是会执行智能同步。开启DRBD0.7系列产品的服务后,你能够在必设大小尺寸里定义一个“活动配置”,这个配置使DRBD有可能有一个控制在13秒内的总同步时间,不必担心设备的容量大小(当前支持4TB以上),甚至是一个有物理损坏的活动节点。

3         DRBD如何与当前的HA集群连系起来?

根据我对大多数HA集群(例如HPCompaq,……)的了解它们都是使用共享存储磁盘,因此磁盘设备被连接给多个节点(连接可以由SCSI总线或光线通道做到)。

DRBD提供给你一个大约原理类似的共享设备,但是它不需要任何稀奇古怪的硬件设备做支撑。它运行在IP网络基础之上,在我的印象中要比那些特殊的存储网络廉价得多。

4         DRBD和集群文件系统

你可以任意运行DRBD设置一个节点作为主设备角色同时设置一个节点作为从设备角色。这种做法是正统的故障切换集群。你应该在你使用一个普通日志文件系统(例如ext2ext3XFSJFSreiserFS……)时运用DRBD技术,而且DRBD技术必须在上面的文件系统下运行。

自从DRBD-8.0.0版本以来,你能够同时设置两个节点都作为主设备角色,授权挂载一个集群文件系统(一个物理并行文件系统)到兼容的两个节点之一上。例如像OCFS2GFS这样的文件系统。

5         DRBD安装概述


5.1       DRBD支持的操作系统:

Suse,Debian,Redhat

5.2       安装前提条件

gcc,make,etc

5.3       DRBD 协议说明

A 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。

B 收到接收确认就认为完成了写入操作。

C 收到写入确认就认为完成了写入操作。

您还可以附加其它参数来将数据传输给磁盘和网络选项。更多详情,请参见drbdsetup 手册页。

5.4       安装系统环境

主设备角色:192.168.0.247hostnamecluster

Red Hat Enterprise Linux AS release 4-up3,内核版本:2.6.9-34.EL

从设备角色:192.168.0.245hostnametest

Red Hat Enterprise Linux AS release 4-up3,内核版本:2.6.9-34.EL

5.4.1        安装主设备角色

5.4.1.1         解包编译安装

# tar zxvf drbd-8.0.6.tar.gz

# cd drbd-8.0.6

# make

# make install

安装成功后将在/sbin/下生成命令文件:drbdadm    drbdmeta   drbdsetup

配置文件:/etc/drbd.conf,启动脚本/etc/init.d/drbd

源码文件:/lib/modules/2.6.9-34.EL/kernel/drivers/block/drbd.ko

注:源码包里scripts/drbd.conf文件是安装前的源文件,如果/etc/drbd.conf损坏可以用这个替换。

5.4.1.2         以模块方式挂载drbd模块

# cd /usr/src/drbd-8.0.6/drbd        进入安装包drbd目录

# insmod drbd.ko

# lsmod

Module   Size        Used by

Drbd       222948  0

出现上面信息说明挂载成功,一切顺利。

5.4.1.3         配置 drbd.conf 文件

1)主设备分区表cluster

Filesystem            Size  Used Avail Use% Mounted on

/dev/hda6             8.0G  2.8G  4.9G  36% /

/dev/hda1              97M  8.4M   84M  10% /boot

/dev/hda5             9.7G  913M  8.3G  10% /data

none                  189M     0  189M   0% /dev/shm

/dev/hda2             9.9G  965M  8.5G  11% /home

/dev/hda3             8.7G  350M  7.9G   5% /opt

从设备分区表test

Filesystem            Size  Used Avail Use% Mounted on

/dev/hda6             7.7G  2.2G  5.2G  30% /

/dev/hda1              99M  8.4M   86M   9% /boot

/dev/hda5             9.7G   55M  9.1G   1% /data

none                  252M     0  252M   0% /dev/shm

/dev/hda8             3.5G   39M  3.2G   2% /home

/dev/hda7             4.9G   42M  4.6G   1% /opt

/dev/hda3             9.7G  118M  9.1G   2% /var

2)配置/etc/hosts文件,将主从机的主机名各自添加进对方的文件里。

3vi /etc/drbd.conf

resource mail {

        protocol B;

        startup { wfc-timeout 0; degr-wfc-timeout 120; }

        disk { on-io-error detach; }

        syncer {

                rate 10M;

        }

        on cluster {

                device      /dev/drbd0;

                disk        /dev/hda5;

                address     192.168.0.247:7788;

                meta-disk   internal;

        }

        on test {

                device      /dev/drbd0;

                disk        /dev/hda5;

                address     192.168.0.152:7788;

                meta-disk   internal;

        }

}

注意:这个配置文件必须是主机从机完全相同才行,否则服务启动不了。

5.4.1.5         启动 drbd 服务

# /etc/init.d/drbd start

5.4.1.6         检查服务状态,和查看日志

# netstat –an|more

tcp  0      0 192.168.0.152:800           192.168.0.247:33293         ESTABLISHED

# cat /proc/drbd     查看同步信息的状态

version: 8.0.6 (api:86/proto:86)

SVN Revision: 3048 build by root@cluster, 2007-09-25 10:39:33

 0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent B r---

    ns:1098668 nr:0 dw:0 dr:1106240 al:0 bm:67 lo:0 pe:5 ua:237 ap:0

        [==>.................] sync'ed: 10.8% (8927/9999)M

        finish: 2:32:21 speed: 936 (920) K/sec

        resync: used:1/31 hits:68831 misses:68 starving:0 dirty:0 changed:68

        act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0


5.4.2        安装从设备角色

与上面安装主设备步骤相同。略

5.4.3        挂接文件系统

两个节点同时只能有一个是primary,另外的是secondary状态,处于secondary状态的服务器不能挂载drbd设备。

主机从机的挂载磁盘最好是同等大小,否则以小容量的为准。

# sfdisk –s      这里必须用sfdiskfdisk –l无法显示出来)。

/dev/hda:  39082680

/dev/hda1:    102280

/dev/drbd0:  10239888

# mkfs.ext2 /dev/hda5    格式化物理磁盘

# mkdir /data         创建一个挂载点

# mount /dev/drbd0 /data      主机挂接顺利

# mount /dev/drbd0 /data      从机无法挂接,/dev/drbd0被设置为只读模式

mount: block device /dev/drbd0 is write-protected, mounting read-only

mount: Wrong medium type

5.4.4        测试磁盘数据同步

1.在主设备192.168.0.247hostnamecluster

# touch 123.txt /data      创建一个文件在/data分区上

# ls /data        查看/data分区上的数据,呆会对比下从机数据是否与主机的相同。

123.txt  lost+found  mss  userdb  userdb_front

# umount /data              卸载/data分区

# drbdadm secondary mail       切换角色为从设备

2.在从设备192.168.0.152hostnametest

# drbdadm primary mail              切换角色为主设备,这样才能挂接drbd0

# mount /dev/drbd0 /data      挂载顺利

# ls /data        查看/data分区上的数据,挂接上后数据就已经全在了。

123.txt  lost+found  mss  userdb  userdb_front

5.4.5        DRBD支持双机的配置

详见我的Linux_HA技术文档

另外,我已经把这项技术与公司邮件系统结合起来,可以实现无须存储设备数据实时同步的双机热备份技术方案。

7         附件1DRBDHowto参考翻译文档

http://www.slackworks.com/~dkrovich/DRBD/index.html

翻译后的参考文档稍后发表

作者注:完全原创文章,严禁剽窃,转载请注明,谢谢!

你可能感兴趣的:(DRBD研究资料)