内容:如何在不影响原有数据的情况下配置drbd

试验目的:在已有数据的硬盘上创建drbd复制
试验环境:vmware模拟环境
192.168.211.128(linux01) CentOS release 5.3 (Final)
192.168.211.129(linux02) CentOS release 5.3 (Final)
drbd-8.3.4版本源码编译安装

试验步骤:

1,添加需要同步的硬盘

首先在虚拟机上为每个系统添加一块新的独立的虚拟硬盘,大小512MB,然后每台机器上执行以下相同的操作

pvcreate /dev/sdb
vgcreate vgtest /dev/sdb
lvcreate -l 127 -n data vgtest

2,格式化分区

然后在linux02并且仅在这台机器上将新建的lv格式化成ext3格式的分区,另外一台机器不用

[root@linux02 ~]# mkfs.ext3 /dev/vgtest/data
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
130048 inodes, 520192 blocks
26009 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
64 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

3,创建文件

将格式化好的分区mount到/data目录下,并在此目录下创建5个有内容的文件,并卸载/data分区,操作如下

[root@linux02 ~]# mount /dev/vgtest/data /data/
[root@linux02 ~]# cd /data/
[root@linux02 data]# for ((i=0;i<=4;i++))
> do
> echo "00$i">$i
> done
[root@linux02 data]# ll
total 17
-rw-r--r-- 1 root root     4 Oct 20 13:45 0
-rw-r--r-- 1 root root     4 Oct 20 13:45 1
-rw-r--r-- 1 root root     4 Oct 20 13:45 2
-rw-r--r-- 1 root root     4 Oct 20 13:45 3
-rw-r--r-- 1 root root     4 Oct 20 13:45 4
[root@linux02 data]# cd
[root@linux02 ~]# umount /data/

4,备份头1024自己的数据

为了实现在已经有数据的硬盘上创建drbd,现在备份/dev/vgtest/data分区的头1024字节的数据,操作如下

dd if=/dev/vgtest/data of=/root/back bs=1M count=1

5,创建drbd相应的设备

下面就来开始创建相应的drbd相关的设备及相应的配置

配置如下:

两台主机上的drbd.conf配置文件相同。下面就可以启动drbd了

linux01上的操作

[root@linux01 ~]# dd if=/dev/zero of=/dev/vgtest/data bs=1M count=1
[root@linux01 ~]# modprobe drbd

[root@linux01 ~]# drbdadm create-md r0
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success

[root@linux01 ~]# drbdadm up r0
可以通过查看/proc/drbd来确认现在drbd的状态,显示如下

[root@linux01 ~]# cat /proc/drbd
version: 8.3.4 (api:88/proto:86-91)
GIT-hash: 70a645ae080411c87b4482a135847d69dc90a6a2 build by root@linux01, 2009-10-16 20:22:50
0: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:520140

linux02上的操作

[root@linux02 ~]# modprobe drbd
[root@linux02 ~]# drbdadm create-md r0
[root@linux02 ~]# drbdadm up r0
查看状态如下

[root@linux02 ~]# cat /proc/drbd
version: 8.3.4 (api:88/proto:86-91)
GIT-hash: 70a645ae080411c87b4482a135847d69dc90a6a2 build by root@linux02, 2009-10-20 12:08:30
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:520140

现在可以看到,两台设备都是从设备,现在需要设置一台机器为主设备,因为我们在linux01上创建了文件,所以由linux01担当primary设备,操作如下

[root@linux01 ~]# drbdsetup /dev/drbd0 primary –o
查看状态如下

[root@linux01 ~]# cat /proc/drbd
version: 8.3.4 (api:88/proto:86-91)
GIT-hash: 70a645ae080411c87b4482a135847d69dc90a6a2 build by root@linux01, 2009-10-16 20:22:50
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
ns:186368 nr:0 dw:0 dr:186368 al:0 bm:11 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:333772
[======>.............] sync'ed: 36.3% (333772/520140)K
finish: 0:00:32 speed: 10,236 (9,808) K/sec

由此看到当前设备已经变成primary了

再来看看linux02上的变化

[root@linux02 ~]# cat /proc/drbd
version: 8.3.4 (api:88/proto:86-91)
GIT-hash: 70a645ae080411c87b4482a135847d69dc90a6a2 build by root@linux02, 2009-10-20 12:08:30
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r----
ns:0 nr:520140 dw:520140 dr:0 al:0 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

这样在linux01上/dev/drbd0就已经是可写的设备了,如果是一块新的硬盘,就可以对drbd0设备进行格式化的操作了,但由于我们已经在linux01上创建了数据,为了保留数据,我们不能进行格式化,现在就需要用到刚才备份出来的头1024字节的数据了,操作如下

[root@linux01 ~]# dd if=/root/back of=/dev/drbd0
2048+0 records in
2048+0 records out
1048576 bytes (1.0 MB) copied, 0.203191 seconds, 5.2 MB/s

然后mount到/data目录看下

[root@linux01 ~]# mount /dev/drbd0 /data/
执行之后并没有报错,使用df看下状态

[root@linux01 ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
7744976   3900480   3444728  54% /
/dev/sda1               101086     12075     83792  13% /boot
tmpfs                    62800         0     62800   0% /dev/shm
/dev/drbd0              503780     10550    467221   3% /data

可以看到,已经可以成功mount使用了。

6,检查原有数据是否存在

现在就来验证一下原有创建的数据是否存在吧,操作如下

[root@linux01 ~]# ll /data/
total 22
-rw-r--r-- 1 root root     4 Oct 16 20:25 0
-rw-r--r-- 1 root root     4 Oct 16 20:25 1
-rw-r--r-- 1 root root     4 Oct 16 20:25 2
-rw-r--r-- 1 root root     4 Oct 16 20:25 3
-rw-r--r-- 1 root root     4 Oct 16 20:25 4
drwx------ 2 root root 12288 Oct 16 20:25 lost+found

由此看到,原来/data目录下的数据还是存在的,看下文件的内容

[root@linux01 ~]# cat /data/3
003

内容也是存在的

到此,在原有数据的硬盘上创建drbd就已经成功了,接下来测试同步数据是否成功

7,测试同步数据

由上可知,原数据保留下来了,那么新的数据和原有数据是否可以同步到linux02上呢,下面就来验证一下,操作如下

先在linux01上创建数据文件5

[root@linux01 ~]# echo "005">/data/5
[root@linux01 ~]# cat /data/5
005

卸载/data目录
[root@linux01 ~]# umount /data/

将linux01上的drbd0设置为secondary
[root@linux01 ~]# drbdsetup /dev/drbd0 secondary
[root@linux01 ~]# cat /proc/drbd
version: 8.3.4 (api:88/proto:86-91)
GIT-hash: 70a645ae080411c87b4482a135847d69dc90a6a2 build by root@linux01, 2009-10-16 20:22:50
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----
ns:521197 nr:0 dw:1057 dr:521249 al:3 bm:34 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

将linux02上的drbd0设置为primary
[root@linux02 ~]# drbdsetup /dev/drbd0 primary -o
[root@linux02 ~]# cat /proc/drbd
version: 8.3.4 (api:88/proto:86-91)
GIT-hash: 70a645ae080411c87b4482a135847d69dc90a6a2 build by root@linux02, 2009-10-20 12:08:30
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:0 nr:521197 dw:521197 dr:0 al:0 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

mount到/data目录上
[root@linux02 ~]# mount /dev/drbd0 /data/
[root@linux02 ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
7744976   2878792   4466416  40% /
/dev/sda1               101086     12073     83794  13% /boot
tmpfs                    62800         0     62800   0% /dev/shm
/dev/drbd0              503780     10551    467220   3% /data

查看/data目录下数据
[root@linux02 ~]# ll /data/
total 24
-rw-r--r-- 1 root root     4 Oct 16 20:25 0
-rw-r--r-- 1 root root     4 Oct 16 20:25 1
-rw-r--r-- 1 root root     4 Oct 16 20:25 2
-rw-r--r-- 1 root root     4 Oct 16 20:25 3
-rw-r--r-- 1 root root     4 Oct 16 20:25 4
-rw-r--r-- 1 root root     4 Oct 16 20:39 5
drwx------ 2 root root 12288 Oct 16 20:25 lost+found
[root@linux02 ~]# cat /data/5
005
[root@linux02 ~]# cat /data/4
004

到此,对于在已有数据的硬盘上创建drbd同步的测试就做完了,这样看来就算硬盘上已有数据,也是可行的。有兴趣的朋友可以亲自尝试一下,正式环境操作前请做好备份工作。

此文章由 flyinweb 于 2010-07-23 14:21:09 编辑

本日志由 flyinweb 于 2010-07-23 11:14:59 发表,目前已经被浏览 4348 次,评论 0 次;

作者添加了以下标签: DRBD

引用通告:http://www.517sou.net/Article/493/Trackback.ashx

评论订阅:http://www.517sou.net/Article/493/Feeds.ashx

评论列表

    暂时没有评论
(必填)
(必填,不会被公开)