> CentOS > CentOS服务器 > 文件同步 >

远程数据同步工具--DRBD的介绍与使用


目录:
 
一、什么是DRBD
(一)什么是DRBD
(二)DRBD工作原理图
(三)DRBD协议说明
二、DRBD编译安装
(一)DRBD的编译安装
1 DRBD软件包的获取
2 DRBD的编译
3 DRBD的安装
4查看安装是否成功
(二)DRBD配置文件说明
1 查看DRBD版本
2 查看DRBD安装路径
3 查看/etc/drbd.conf文件
4 官方配置文件示例
5 DRBD配置文件说明
(三)DRBD相关命令
1 检查安装是否成功
2 查看版本信息
3 DRBD启动命令
4 创建DRBD设备命令
5 设置主节点
三、DRBD实例测试
(一)测试环境
(二)测试目的
(三)DRBD的安装配置及使用
1 DRBD的安装
2 DRBD的配置
3 DRBD的启动
4 DRBD的使用
四、问题排除及注意事项
(一)问题排除
1 配置时报错
2 使用时报错
3 重新安装(或者重配置)时报错
4 DRBD出现脑裂
(二)注意事项
(三)网上相关资料
附录一:DRBD配置文件
 
 
 
 
一、什么是DRBD
DRBD® refers to block devices designed as a building block to form high availability (HA) clusters. This is done by mirroring a whole block device via an assigned network. DRBD can be understood as network based raid-1.
--摘自DRBD官方网站
(一)什么是DRBD
从DRBD官方网站的说明可以看出DRBD的几个特点:
1、DRBD是一种块设备
2、可用于高可用集群(HA)
3、通过网络实现块设备数据实时镜像
4、类似于一个网络RAID-1
所谓DRBD,是分布式复制块设备,是一种通过TCP/IP网络实现块设备数据实时镜像的方案。,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中.
本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.
在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,
切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
 
(二)DRBD工作原理图
 
工作原理拓朴图
 
 
+——–+
        |  文件系统 |
        +——–+
             |
             V
        +———-+
        |   块设备层  |
        | (/dev/drbd1) |
        +———-+
         |            |
         |            |
         V           V
   +—————-+    +—————+
   |  本地硬盘   |   | 远程主机硬盘 |
   | (/dev/sdb1)  |   | (/dev/sdb1)  |
   +——————+ +——————–+
 
DRBD流程图
 
 
(三)DRBD协议说明
 
A 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
 
B 收到接收确认就认为完成了写入操作。
 
C 收到写入确认就认为完成了写入操作。
 
 
还可以选择其它参数来将数据传输给磁盘和网络选项。更多详情,请参见drbdsetup 手册页。
 
二、DRBD编译安装
在两个节点上都需要编译安装DRBD。
 
DRBD需要内核模块支持,2.6.33后的Linux内核已内置DRBD的支持,在此版本前,安装时需要kernel-devel包,同时编译drbd时要带上–with-km(否则执行make之后不会生成drbd.ko模块文件)。
(一)DRBD的编译安装
1、DRBD软件包的获取
[root@www tmp]# wget http://oss.linbit.com/drbd/8.3/drbd-8.3.10.tar.gz
2、DRBD的编译
解压:
[root@www tmp]# tar -zxvf drbd-8.3.10.tar.gz
 
进入:
[root@www tmp]# cd drbd-8.3.10
 
编译:
[root@www drbd-8.3.10]# ./configure –prefix=/ –with-km
 
[root@www drbd-8.3.10]# make
 
3、DRBD的安装
[root@www drbd-8.3.10]# make install
 
4、查看安装是否成功
[root@www drbd-8.3.10]# drbdadm
 
 
 
USAGE: drbdadm [OPTION...] [-- DRBDSETUP-OPTION...] COMMAND {all|RESOURCE…}
 
 
 
OPTIONS:
 
 {–stacked|-S}
 
 {–dry-run|-d}
 
 {–verbose|-v}
 
 {–config-file|-c} val
 
 {–config-to-test|-t} val
 
 {–drbdsetup|-s} val
 
 {–drbdmeta|-m} val
 
 {–drbd-proxy-ctl|-p} val
 
 {–sh-varname|-n} val
 
 {–force|-f}
 
 {–peer|-P} val
 
 {–version|-V}
 
 
 
COMMANDS:
 
 attach                             detach                             
 
 connect                            disconnect                         
 
 up                                 down                               
 
 primary                            secondary                          
 
 invalidate                         invalidate-remote                  
 
 outdate                            resize                             
 
 syncer                             verify                             
 
 pause-sync                         resume-sync                        
 
 adjust                             wait-connect                       
 
 wait-con-int                       role                               
 
 cstate                             dstate                             
 
 dump                               dump-xml                           
 
 create-md                          show-gi                            
 
 get-gi                             dump-md                            
 
 wipe-md                            hidden-commands                    
 
 
 
Version: 8.3.10 (api:88)
 
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by root@www.promise3.com, 2011-04-26 10:47:49
 
 
 
missing arguments
 
 
(二)DRBD配置文件说明
1、查看DRBD版本
[root@www drbd-8.3.10]# cat /proc/drbd 
 
version: 8.3.10 (api:88/proto:86-96)
 
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by root@www.promise3.com, 2011-04-22 16:38:33
 
2、查看DRBD安装路径
[root@www drbd-8.3.10]# whereis drbd
 
drbd: /etc/drbd.d /etc/drbd.conf /lib/drbd
 
PS:新版本的DRBD的配置文件已拆分成多个,全部放在/etc/drbd.d/目录,具体可参考/etc/drbd.conf中的配置.
3、查看/etc/drbd.conf文件
[root@www etc]# cat drbd.conf 
 
# You can find an example in  /usr/share/doc/drbd…/drbd.conf.example
 
 
 
include "drbd.d/global_common.conf";
 
include "drbd.d/*.res";
 
4、官方配置文件示例
#For the purposes of this guide, we assume a minimal setup in line with the examples given in the previous sections:
global {
  usage-count yes;
}
common {
  protocol C;
}
resource r0 {
  on alice {
    device    /dev/drbd1;
    disk      /dev/sda7;
    address   10.1.1.31:7789;
    meta-disk internal;
  }
  on bob {
    device    /dev/drbd1;
    disk      /dev/sda7;
    address   10.1.1.32:7789;
    meta-disk internal;
  }
}
5、DRBD配置文件说明
#*.res配置文件说明,*即自己命名的配置文件名
global { usage-count yes; }
# 是否参加DRBD使用者统计.默认是yes
 
protocol C;
 # 使用协议C.表示收到远程主机的写入确认后,则认为写入完成.
 
resource r0 
# 一个DRBD设备(即:/dev/drbdX),叫做"资源".里面包含一个DRBD设备的主备节点的相关信息.
 
on alice {
# 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.
 
device    /dev/drbd1;
disk      /dev/sda7;
# /dev/drbd1使用的磁盘分区是/dev/sda7
 
address   10.1.1.31:7789;
# 设置DRBD的监听端口,用于与另一台主机通信
(三)DRBD相关命令
1、检查安装是否成功
[root@www ~]# drbdadm
 
2、查看版本信息
[root@www ~]# cat /proc/drbd 
 
3、DRBD启动命令
[root@www ~]# service drbd start
 
 
 –==  Thank you for participating in the global usage survey  ==–
 
The server's response is:
 
Starting DRBD resources: no resources defined!
 
或者用如下命令:
[root@www ~]# /etc/init.d/drbd start
 
Starting DRBD resources: no resources defined!
 
PS:提示没有定义“资源”,这是因为刚安装好的DRBD,默认没有*.res配置文件。具体配置见<三、DRBD实例测试>
4、创建DRBD设备命令
[root@www ~]# drbdadm create-md r0
PS:r0 表示创建定义的“资源”,在配置文件*.res中的 resource r0;也可以直接用all代替,表示创建配置文件里所有的“资源“。
5、设置节点为主节点
设置当前节点为主节点
[root@www ~]# drbdadm — –overwrite-data-of-peer primary all
 
PS:手动创建硬件设备drbd
mknod /dev/drbd0 b 147 0
mknod /dev/drbd1 b 147 1
mknod /dev/drbd* b 147 *
或者利用shell命令建立多个:
#for i in $(seq 0 15) ; do mknod /dev/drbd$i b 147 $i ; done
 
三、DRBD实例测试
(一)测试环境
PC1:
[root@www ~]# uname -a && head -n 1 /etc/issue && ifconfig
 
Linux www.promise3.com 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
 
CentOS release 5.4 (Final)
 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C6:28:AA  
 
          inet addr:172.16.10.3  Bcast:172.16.10.255  Mask:255.255.255.0
 
          inet6 addr: fe80::20c:29ff:fec6:28aa/64 Scope:Link
 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
          RX packets:454 errors:0 dropped:0 overruns:0 frame:0
 
          TX packets:387 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:1000 
 
          RX bytes:48913 (47.7 KiB)  TX bytes:52007 (50.7 KiB)
 
          Base address:0×2000 Memory:d8920000-d8940000 
 
PC2:
[root@www ~]# uname -a && head -n 1 /etc/issue && ifconfig
 
Linux www.promise16.com 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
 
CentOS release 5.4 (Final)
 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:33:39:61  
 
          inet addr:172.16.10.16  Bcast:172.16.10.255  Mask:255.255.255.0
 
          inet6 addr: fe80::20c:29ff:fe33:3961/64 Scope:Link
 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
          RX packets:179 errors:0 dropped:0 overruns:0 frame:0
 
          TX packets:189 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:1000 
 
          RX bytes:18026 (17.6 KiB)  TX bytes:26902 (26.2 KiB)
 
          Base address:0×2000 Memory:d8920000-d8940000 
 
PC1和PC2两台机器中DRBD使用的分区均为/dev/sdb1,大小为20GB:
   Device Boot      Start         End      Blocks   Id  System
 
/dev/sdb1               1        2610    20964793+  83  Linux
 
 
(二)测试目的
利用DRBD技术,通过TCP/IP网络实现块设备数据实时镜像的方案。利用这种方案,单一主节点模式(single primary mode)双机系统能够实时地将数据保存在主备节点的磁盘中,同时验证在正常情况下两个节点的数据是一样的。
(三)DRBD的安装配置及使用
1、DRBD的安装
在PC1和PC2上都要安装
安装步骤见<二 DRBD编译安装>
2、DRBD的配置
(1)在PC1上创建并配置/etc/drbd.d/data.res(文件名可自定义,后缀为res)
[root@www ~]# vim /etc/drbd.d/data.res 
 
resource data {
 
  on www.promise3.com {
 
    device    /dev/drbd0;
 
    disk      /dev/sdb1;
 
    address   172.16.10.3:7789;
 
    meta-disk internal;
 
  }
 
  on www.promise16.com {
 
    device    /dev/drbd0;
 
    disk      /dev/sdb1;
 
    address   172.16.10.16:7789;
 
    meta-disk internal;
 
  }
 
}
 
 
(2)将配置文件拷贝到PC2上
[root@www ~]# scp /etc/drbd.d/data.res 172.16.10.16:/etc/drbd.d/
 
root@172.16.10.16's password: 
 
data.res                                      100%  290     0.3KB/s   00:00 
 
(3)在PC1和PC2上创建DRBD数据块
[root@www ~]# drbdadm create-md all
 
Writing meta data…
 
initializing activity log
 
NOT initialized bitmap
 
New drbd meta data block successfully created.
 
success
 
 
3、DRBD的启动
 
在PC1和PC2上启动DRBD
(1)确认两台要镜像的机器是否正常,之间的网络是否通畅,需要加载的硬盘是否处于umount状态。
(2)确认是否已加载drbd.ko模块
[root@www ~]# lsmod |grep drbd
 
如无加载,则先加载模块
[root@www ~]# insmod /path/drbd.ko
或者
[root@www ~]# modprobe drbd
 
(3)PC1启动(等待PC2的启动):
[root@www ~]# /etc/init.d/drbd start
 
Starting DRBD resources: [ d(data) n(data) ]……….
 
***************************************************************
 
 DRBD's startup script waits for the peer node(s) to appear.
 
 - In case this node was already a degraded cluster before the
 
   reboot the timeout is 0 seconds. [degr-wfc-timeout]
 
 - If the peer was available before the reboot the timeout will
 
   expire after 0 seconds. [wfc-timeout]
 
   (These values are for resource 'data'; 0 sec -> wait forever)
 
 To abort waiting enter 'yes' [  26]:
 
(4)PC2启动:
[root@www ~]# /etc/init.d/drbd start
 
Starting DRBD resources: [ d(data) n(data) ].
(5)查看是否监听7789端口
[root@www ~]# netstat -atn |grep 7789
 
tcp        0      0 172.16.10.3:41763           172.16.10.16:7789           ESTABLISHED 
 
tcp        0      0 172.16.10.3:7789            172.16.10.16:55397          ESTABLISHED 
 
 
 
4、DRBD的使用
 
以下在PC1上操作:
(1)设置当前节点为主节点
[root@www ~]# drbdadm — –overwrite-data-of-peer primary all
 
 
(2)格式化块设备
[root@www ~]# mkfs.ext3 /dev/drbd1
 
 
(3)创建挂载点
[root@www ~]# mkdir /data
 
 
(4)挂载块设备到/data
[root@www ~]# mount /dev/drbd1 /data/
 
 
(5)创建目录或文件以待验证DRBD的备份
[root@www ~]# mkdir /data/doc && touch /data/text && ll /data
 
總計 20
 
drwxr-xr-x 2 root root  4096  4月 26 14:50 doc
 
drwx—— 2 root root 16384  4月 26 14:44 lost+found
 
-rw-r–r– 1 root root     0  4月 26 14:50 text
 
 
(6)卸载块设备
[root@www ~]# umount /data/
 
 
(7)切换主节点为从节点
[root@www ~]# drbdadm secondary all
 
 
以下在PC2上操作
(1)从当前节点切换为主节点
[root@www ~]# drbdadm primary all
 
 
(2)创建挂载点
[root@www ~]# mkdir /databak
 
 
(3)挂载块设备
[root@www ~]# mount /dev/drbd1 /databak/
 
 
(4)查看验证DRBD的备份
[root@www ~]# ll /databak/
 
總計 20
 
drwxr-xr-x 2 root root  4096  4月 26 14:50 doc
 
drwx—— 2 root root 16384  4月 26 14:44 lost+found
 
-rw-r–r– 1 root root     0  4月 26 14:50 text
 
 
(5)在PC2上拷贝软件,查看过程
 
查看软件包:
[root@www databak]# ls -la /home/qqing/src/squid-3.1.12-20110410.tar.bz2 
 
-rw-rw-r– 1 qqing qqing 2489095  4月 11 09:07 /home/qqing/src/squid-3.1.12-20110410.tar.bz2
 
 
在后台拷贝:
[root@www databak]# cp /home/qqing/src/squid-3.1.12-20110410.tar.bz2 . &
 
在PC2查看过程:
 
[root@www databak]# cat /proc/drbd 
 
version: 8.3.10 (api:88/proto:86-96)
 
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by root@www.promise16.com, 2011-04-22 16:50:48
 
 
 
 1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r—–
 
    ns:1757796 nr:465036 dw:467528 dr:1755421 al:3 bm:107 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:19087064
 
        [>...................] sync'ed:  9.0% (18636/20472)M
 
        finish: 4:11:50 speed: 1,252 (1,512) K/sec
 
[1]+  Done                    cp -i /home/qqing/src/squid-3.1.12-20110410.tar.bz2 .
 
 
在PC1查看过程:
[root@www ~]# cat /proc/drbd 
 
version: 8.3.10 (api:88/proto:86-96)
 
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by root@www.promise3.com, 2011-04-26 10:47:54
 
 
 
 1: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r—–
 
    ns:465036 nr:1557340 dw:2022336 dr:230 al:347 bm:96 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:19084256
 
        [>...................] sync'ed:  9.0% (18636/20472)M
 
        finish: 4:11:06 speed: 1,264 (1,508) want: 250 K/sec
 
 
四、问题排除及注意事项
(一)问题排除
1、配置时报错
[root@www ~]# drbdadm create-md all
 
md_offset 21467942912
 
al_offset 21467910144
 
bm_offset 21467254784
 
 
 
Found ext3 filesystem
 
    20964792 kB data area apparently used
 
    20964116 kB left usable by current configuration
 
 
 
Device size would be truncated, which
 
would corrupt data and result in
 
'access beyond end of device' errors.
 
You need to either
 
   * use external meta data (recommended)
 
   * shrink that filesystem first
 
   * zero out the device (destroy the filesystem)
 
Operation refused.
 
 
 
Command 'drbdmeta 1 v08 /dev/sdb1 internal create-md' terminated with exit code 40
 
drbdadm create-md data: exited with code 40
 
解决方法:
[root@www ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=128
 
128+0 records in
 
128+0 records out
 
134217728 bytes (134 MB) copied,0.844466 秒,159 MB/s
 
[root@www ~]# drbdadm create-md all
 
Writing meta data…
 
initializing activity log
 
NOT initialized bitmap
 
New drbd meta data block successfully created.
 
success
 
2、使用时报错
错误1:
[root@www ~]# mount /dev/drbd1 /data/data/
 
mount: block device /dev/drbd1 is write-protected, mounting read-only
 
mount: 錯誤的媒介形態
 
[root@www ~]# drbdadm — –overwrite-data-of-peer primary all
 
出现这个错误是因为操作步骤出错,解决方法:
[root@www ~]# drbdadm — –overwrite-data-of-peer primary all
 
[root@www ~]# mount /dev/drbd1 /data/data/
即挂载之前要先切换当前节点为主节点
错误2:
[root@www ~]# mount /dev/drbd1 /data/data/
 
mount: you must specify the filesystem type
出现这个错误是因为未对块设备进行格式化,解决方法:
[root@www ~]# mkfs.ext3 /dev/drbd1
 
3、重新安装(或者重配置)时报错
[root@www ~]# drbdadm create-md all
 
Device '1' is configured!
 
Command 'drbdmeta 1 v08 /dev/sdb1 internal create-md' terminated with exit code 20
 
drbdadm create-md data: exited with code 20
 
 
解决方法:
[root@www ~]# mkfs.ext3 /dev/sdb1
 
mke2fs 1.39 (29-May-2006)
 
Filesystem label=
 
OS type: Linux
 
Block size=4096 (log=2)
 
Fragment size=4096 (log=2)
 
2621440 inodes, 5241198 blocks
 
262059 blocks (5.00%) reserved for the super user
 
First data block=0
 
Maximum filesystem blocks=4294967296
 
160 block groups
 
32768 blocks per group, 32768 fragments per group
 
16384 inodes per group
 
Superblock backups stored on blocks: 
 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
 
        4096000
 
 
 
Writing inode tables: done                            
 
Creating journal (32768 blocks): done
 
Writing superblocks and filesystem accounting information: done
 
 
 
This filesystem will be automatically checked every 37 mounts or
 
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 
[root@www ~]# drbdadm create-md all
 
md_offset 21467942912
 
al_offset 21467910144
 
bm_offset 21467254784
 
 
 
Found ext3 filesystem
 
    20964792 kB data area apparently used
 
    20964116 kB left usable by current configuration
 
 
 
Device size would be truncated, which
 
would corrupt data and result in
 
'access beyond end of device' errors.
 
You need to either
 
   * use external meta data (recommended)
 
   * shrink that filesystem first
 
   * zero out the device (destroy the filesystem)
 
Operation refused.
 
 
 
Command 'drbdmeta 1 v08 /dev/sdb1 internal create-md' terminated with exit code 40
 
drbdadm create-md data: exited with code 40
 
[root@www ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=128
 
128+0 records in
 
128+0 records out
 
134217728 bytes (134 MB) copied,0.844466 秒,159 MB/s
 
[root@www ~]# drbdadm create-md all
 
Writing meta data…
 
initializing activity log
 
NOT initialized bitmap
 
New drbd meta data block successfully created.
 
success
 
4、DRBD出现脑裂
 
脑裂后,两个节点间数据不同步,主从关系失效,需要按下面的步骤修复:
 
1、在从节点执行:
 
[root@www ~]# drbdadm secondary data
 
[root@www ~]# drbdadm — –discard-my-data connect data
 
2、在主节点上,通过cat /proc/drbd查看状态,如果不是WFConnection状态,需要再手动连接:
 
[root@www ~]# drbdadm connect dbdadta
 
PS:节点间连接命令
drbdadm connect|disconnect all
 
(二)注意事项
1、主备服务器同步的两个分区大小最好相同(网上没有关于分区大小是否一定要相同的确切说法)
2、开始同步两个节点的磁盘,需要一定时间,在同步完成前,不要重启,否则会重新同步。
3、挂载之前一定要先切换当前节点为主节点
4、两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。
5、处于从节点(secondary)状态的服务器不能加载drbd块设备
6、将主节点切换为从节点之前要先卸载
7、一台机切换为主节点之前,要确保另一台机已切换为从节点
(三)网上相关资料
其它问题
 
    1、超时限制的工作原理是怎样的呢?
 
       主节点在发出数据块之后,会等待另一个节点在某一时间范围内做出响应(该时间范围可以通过drbdsetup 中的超时限制选项进行设置)。
 
       一旦另一个节点超过该时限仍未做出响应,主节点就会断开连接并尝试着重新再建立一个连接。
 
    2、为什么超时限制短点好呢?
 
       如果另一个节点停机,主节点会就地等待,阻断所有正在向DRBD 设备写入数据的应用。这样一来,一直要等到超时限制过后它才会判断出
 
       另一个节点已经停机,而您的应用就会停滞这么长时间。
 
    3、为什么短的超时限制会导致timeout/resync/connect 的情况发生呢?
 
       如果次节点的IO 子系统较慢,就会发生这种情况。
 
    4、什么是“延迟数据包”?
 
       为改进这种状况,我产生了“延迟期限”数据包的设想。当次节点意识到它将超时的时候,它就会发送这种数据包。
 
    5、如果看到出现了timeout/resync/connect 情况时,您会怎么办?
 
       延长超时限制。(因为connect-int 和pint-int 需要比超时限制更长,所以也要相应地延长它们)
 
    6、tl-size
 
       对于syslog 中出现“transfer log too small”(传输日志太小)这样的信息,该采取的措施需要很大篇幅来描述。
 
    7、SyncAll 只运行了一半,但我觉得它实在太慢了!
 
       您可以在运行时使用drbdsetup 工具里的syncer 子命令来重新配置同步参数。请参见drbdsetup man page(手册页)了解更多信息。
 
 
 
安装和设置
 
    1、问:我能加次级设备吗(至少只读)?
 
       答:DRBD 对此没有限制,但是您的文件系统会变得非常混乱,因为它无法了解底层设备的变化。总之,没有ext2、ext3、reiserFS、JFS 或XFS,
 
        它不能工作。如果您需要的不只是一个镜像,而是共享文件系统,那您可以使用GFS 或OpenGFS,但它们速度较慢。这也是DRBD 不允许加载次级
 
        设备的原因。因此如果您要加载次级设备,可以先把次级设置为主设备。同时加载的话,两个设备均不能工作。
 
    2、问: DRBD 能使用两个容量大小不同的设备吗?
 
        答: 一般情况下可以,但有些问题需要注意:
 
        本地DRBD 使用的是配置的磁盘容量,与物理容量相等。如果没有给出,则将被设置为物理容量。连接时,设备容量将设置为两个节点中最小容量。
 
        如果缺少常识的话,您可能会碰到一些问题:如果您先是在一个节点上使用drbd ,而且没有配置好磁盘容量,之后又连接了一个容量较小的设备。
 
        这时,drbd 设备容量在运行时就会变小。在系统记录里,您会发现一条信息提示“your size hint is bogus,please change to some value”
 
        (您的容量信息不真实,请更改)。这样一来就会让设备顶级的文件系统造成混淆。
 
        因此,如果您的设备容量不同,请明确地为DRBD 设置所使用的容量。
 
    3、问: XFS 能和DRBD 一起使用吗?
 
        答:XFS 使用动态块大小,因此需要配备DRBD 0.7 或更高版本。
 
    4、问:当我试着加载drbd 模块时,遇到了下面的问题:
 
        compiled for kernel version 2.4.18-4GB while this kernel is version 2.4.18-64GB-SMP.
 
        答:您的实际内核与要在其上构建drbd 的内核的.config 不一致。在
 
        SuSE Linux 上,您可以使用下面的命令进行配置:
 
        cd /usr/src/linux/
 
        make cloneconfig
 
        make dep
 
        通常,您不必重新编译内核,只编译drbd 即可。以后的DRBD 版本将在创建过程中解决这一问题。
 
 
 
操作问题
 
    1、问:为什么drbdsetup /dev/nb0 复制((完全同步))的速度那么慢?
 
        答:出于历史原因,复制需要回写数据。而在回写数据时,很多物理设备的速度都非常慢。在更新的DRBD 版本中可能会解决这一问题。
 
 
 
    2、问:像st、ns、nr、dw、dr 等字段在/proc/drdb 中有什么含义?
 
    答:
 
表4. /proc/drbd
 
Field        说明                  值:
 
cs         连接状态               出现的值:
 
                    o Unconfigured:设备在等待配置。
 
                    o Unconnected:连接模块时的过渡状态。
 
                    o WFConnection:设备等待另一测的配置。
 
                    o WFReportParams:过渡状态,等待新TCP 连接的第一个数据包时。.
 
                    o SyncingAll:正将主节点的所有模块复制到次级节点上。.
 
                    o SyncingQuick:通过复制已被更新的模块(因为现在次级节点已经离开了集群)来更新次级节点。
 
                    o Connected:一切正常。
 
                    o Timeout:过渡状态。
 
st         状态(设备的作用)      可能的值为:
 
                    o 本地/远程一级状态
 
                    o 二级状态
 
                    o 未知(这不是一种作用)
 
ns    网络发送    模块号码
 
nr    网络接收    模块号码
 
dw   磁盘写入    模块号码
 
DR   磁盘读取    模块号码
 
of    运行中(过时的)模块号码
 
pe   待解决的    模块号码
 
ua    未答复的    模块号码(最好为0) 
 
附录一:DRBD配置文件
 
见附件 <drbd.conf>、<drbd.d/data.res>、<drbd.d/global_common.conf>
 


(责任编辑:IT)