内容:如何在不影响原有数据的情况下配置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, 401409Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: doneThis 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:0mount到/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同步的测试就做完了,这样看来就算硬盘上已有数据,也是可行的。有兴趣的朋友可以亲自尝试一下,正式环境操作前请做好备份工作。
而且直接配置文件是效率最高的,通过其它驱动效率都相对较低,BDB
这个测试不太准确,看官方的测试结果:http://bind-dlz.sourceforg
为什么使用BDB时QPS这么低? 我在bind版本基本相似的环境中测试的
It is quite useful and interesting too.
VIRT 的上限是64G,也就是36位, cat /proc/cpuinfo的结果是:addre
昨天要准备用线程重写webbench,试验了下Fedora Linux 2.6.35.14
不明白您的具体的意思是什么?
已经发送到你QQ邮箱