DRBD安装配置
环境:两台运行着 Centos6.5.X86_64的机器
安装前的准备:
主机名 IP 磁盘名 容量
master(主) 192.168.174.128 /dev/sdb1 20G
backup(备) 192.168.174.130 /dev/sdb1 20G
分别在两台机器上修改相应主机名并在/etc/hosts的文件中加入
master 192.168.174.128
backup 192.168.174.130
源码安装需要安装一些依赖包
yum install -y kernel-devel flex kernel-headers
1.源码下载
下载地址: http://oss.linbit.com/drbd/
cd /usr/local/src
wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
2.安装
# tar zxvf drbd-8.4.3.tar.gz # cd drbd-8.4.3.tar.gz # ./configure --prefix=/usr/local/drbd --with-km # make KDIR=/usr/src/kernels/2.6.32-431.el6.x86_64/ # make install # mkdir -p /usr/local/drbd/var/run/drbd # cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/init.d/ # chkconfig --add drbd |
安装drbd模块
# cd drbd # make clean # make make KDIR=/usr/src/kernels/2.6.32-431.el6.x86_64/ # cp drbd.ko /lib/modules/2.6.32-431.el6.x86_64/kernel/lib/ # modprobe drbd # lsmod|grep drbd //如下显示已加载 drbd 325786 4 libcrc32c 1246 1 drbd |
3.配置
1) 编辑全局配置global_common.conf文件
# cd /usr/local/drbd/etc/drbd.d/
# vim global_common.conf //主要的基本配置如下:
global { usage-count yes; } common { protocol C; disk { on-io-error detach; } syncer { rate 1024M; } } |
2) 创建drbd资源文件
# vim /usr/local/drbd/etc/drbd.d/drbd.res //写入如下内容;
resource r1 { on master { device /dev/drbd0; disk /dev/sdb1; address 192.168.174.128:7789; meta-disk internal; } on slave { device /dev/drbd0; disk /dev/sdb1; address 192.168.174.130:7789; meta-disk internal; } } |
4.启动 (两台机器的安装和配置文件都是一样的)
启动前先创建资源
分别在两台机器上运行:drbdadm create-md r1
运行此命令可能会出错,解决方法:
在机器上运行:dd if=/dev/zero of=/dev/sdb1 bs=1M count=100
再执行 drbdadm create-md r1
#/etc/init.d/drbd start
#drbdadm role r1
Secondary/Secondary //此表示两台机器都是备机;
在主的机器上运行:
#drbdadm primary all //把此机器设置主机,在哪个机器上运行,哪个就是主机;
#drbdadm -- --overwrite-data-of-peer primary all //若是drbdadm primary all命令运行失败,则执行此命令,设置主机;
#drbdadm role r1
Primary/Secondary //此表示 主备节点已设置;
#cat /proc/drbd //查看drbd的状态
version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@master, 2015-02-05 16:06:01 1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r--- ns:42688 nr:0 dw:0 dr:42688 al:0 bm:2 lo:4 pe:0 ua:4 ap:0 [==>.................] sync'ed: 14.7% (262464/305152)K finish: 0:02:58 speed: 1,440 (1,292) K/sec resync: used:1/31 hits:2669 misses:3 starving:0 dirty:0 changed:3 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
主备机状态分别是”主/备”,主机磁盘状态是”实时”,备机状态是”不一致”.
在第3行,可以看到数据正在同步中,即主机正在将磁盘上的数据,传递到备机上.现在的进度是14.7%.同步完成后如下:
version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@master, 2015-02-05 16:06:01 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:20964116 nr:0 dw:463280 dr:20965513 al:103 bm:1280 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 |
5.使用DRBD
你现在可以把主机上的DRBD设备挂到目录下使用,备机上的DRBD设备无法挂载
master# mkdir /qq
master# mount /dev/sdb1 /qq
master# df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 3.2G 14G 19% / tmpfs 242M 0 242M 0% /dev/shm /dev/sda1 194M 27M 158M 15% /boot /dev/drbd0 20G 172M 19G 1% /qq |
现在,我们在qq目录里建立一个200M的文件:
master# dd if=/dev/zero of=/qq/test bs=1M count=200
操作完成后,在slave(备机)上执行:
我们先停止DRBD(以下是在备机上操作)
master# /etc/init.d/drbd stop
现在,我们可以将hdb1进行挂载
slave# mount /dev/drbd1 /mnt
slave# ls /mnt/ -hl
总用量 201M drwx------ 2 root root 12K 2月 6 16:44 lost+found -rw-r--r-- 1 root root 200M 2月 6 17:20 test slave# umount /mnt |
可以看到,在主机master上产生的文件test.tmp,也完整的保存在备机slave的DRBD分区上.
这就是DRBD的网络RAID-1功能. 在主机上的任何操作,都会被同步到备机的相应磁盘分区上,达到数据备份的效果.
6.主备切换
有时,你需要将DRBD的主备机互换一下.可以执行下面的操作:
在主机上,先要卸载掉DRBD设备.
#umount /qq
将主机降级为”备机”:
#drbdadm secondary r1
#cat /proc/drbd (drbdadm role r1)
可以看到Secondary/Secondary,这说明两台主机都成备机了;
在备机slave上,将它升级为”主机”:
# drbdadm primary r1
# cat /proc/drbd (或者drbdadm role r1)
出现 Primary/Secondary 说明主备已经切换过来;
现在可以挂载使用/dev/drbd,数据也会同步到主机上。
# mount /dev/drbd /mnt
DRBD的安装配置到此,以后还需要多配置。