前些日子把lustre安装完毕了,考虑到了如果一个节点死了怎么办?所以就想到了主辅切换,开始就想到了两个工具,第一个就是iscsitarget网络共享磁盘,第二个就是drbd,因为出于对drbd熟悉一点,就先测试drbd,中途遇到不少问题,慢慢的一一解决了!这次测试我开了不5台虚拟机,为了完全模拟生产环境。如你测试可以相应的少开虚拟机。
mds :192.168.6.20
mds1 :192.168.6.21
ost :192.168.6.22
ost1 :192.168.6.23
client:192.168.6.24
mds mds1 ost ost2 每台机器都有 1G 的 sdb硬盘 用于测试!
需要 安装软件 drbd-8.3.0 hearbeat-2.30
1.首先在每台机器上编译内核安装lustre 如有不会的请看我上篇写的文章lustre 安装: [url]http://deidara.blog.51cto.com/400447/125071[/url] 因为我出于方便就把 两个deb包考过来安装,在每台机器上安装!
2.在mds mds1 上编译安装drbd
shell $> tar zxvf drbd-8.3.0.tar.gz
shell $> cd drbd-8.3.0
shell $> make clean
shell $> make KDIR=/usr/src/linux-2.6.22 (注意这个地方必须是你编译lustre的内核,如果不是,你从网上下载 linux-2.6.22内核,然后打上lustre补丁,make modules后才能正常编译 drbd不然会报错!)
shell $> groupadd haclient 建立组不然会提示警告
shell $> chgrp haclient /sbin/drbdsetup
shell $> chmod o-x /sbin/drbdsetup
shell $> chmod u+s /sbin/drbdsetup
安装drbd 如果有问题,可以看我的blog :
[url]http://deidara.blog.51cto.com/400447/105875[/url]
3.配置mds mds1 上的 drbd.conf
查找 after "r2";
注释掉这一行,因为我们 只需要 r0
修改默认的 . amd {
device /dev/drbd0;
disk /dev/hde5;
address 192.168.22.11:7788;
flexible-meta-disk internal;
}
on alf {
device /dev/drbd0;
disk /dev/hdc5;
address 192.168.22.12:7788;
meta-disk internal;
}
}
改为
on mds {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.6.20:7788;
flexible-meta-disk internal;
. mds1 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.6.21:7788;
meta-disk internal;
}
}
最后,把 后边的 全部注释掉或者删掉! mds与mds1配置一样!
5,调试drbd 手动切换 drbd 主辅
在mds与mds1上 执行
mds $> drbdadm create-md r0 #“r0”是我们在drbd.conf里定义的,初始化
mds1 $> drbdadm create-md r0
mds $> /etc/init.d/drbd start
mds1 $> /etc/init.d/drbd start
mds $> cat /proc/drbd
显示了drbd当前的状态.第一行的st表示两台主机的状态,都是”备机”状态.
ds是磁盘状态,都是”不一致”状态.
mds $> drbdsetup /dev/drbd0 primary -o
mds $> cat /proc/drbd
就可以看到主备机状态分别是”主/备”,主机磁盘状态是”实时”,备机状态是”不一致”.且数据开始同步
稍等一会,在数据同步完后,再查看一下drbd1的DRBD状态
mds $>cat /proc/drbd
好了,磁盘状态都是”实时”,表示数据同步完成了.
你现在可以把主机上的DRBD设备挂载到一个目录上进行使用.备机的DRBD设备无法被挂载,因为它是
用来接收主机数据的,由DRBD负责操作.
在mds 执行
mds $> mkfs.lustre --reformat --fsname=testfs --mdt --mgs --failnode=mds1 /dev/drbd0
### 创建 lustre文件系统 reformat 参数是格式化,fsname 文件名字 --failnode参数是 lustre failover 功能~
mds $> mount -t lustre /dev/drbd0 /opt (挂载到/opt 目录)
DRBD的主备机切换有时,你需要将DRBD的主备机互换一下.可以执行下面的操作:
在主机上,先要卸载掉DRBD设备
mds $> umount /opt
将主机降级为”备机”
mds $> drbdadm secondary r0
mds $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds, 2009-01-14 02:05:53
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r---
ns:132 nr:20480 dw:20612 dr:270 al:5 bm:15 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
已经降到了备机
在mds1上执行
mds1 $> drbdadm primary r0
mds1 即为升为 主!
6,在mds 和 mds1 安装使用 hearbeat,让drbd 手动切换为自动切换,hearbeat我出于升力气,就apt-get 安装了,大家可以使用源码包安装
shell $> apt-get install hearbeat
shell $> cd /usr/share/doc/heartbeat
shell $> gunzip ha.cf.gz
shell $> gunzip haresources.gz
shell $> mv ha.cf haresouroes authkeys /etc/ha.d/
shell $> chmod 600 authkeys
shell $> vim authkeys
auth 1
1 crc
把这两行注释去掉
shell $> vim ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
auto_failback off
node mds
node mds1
ping 192.168.6.1
respawn hacluster /usr/lib/heartbeat/ipfail
shell $> vim haresouroes
mds 192.168.6.25 drbddisk::r0 Filesystem::/dev/drbd0::/opt::lustre
7.最后的调试,于查看日志!
mds $> /etc/init.d/hearbeat start
mds $> tailf /var/log/messges
mds1 $> /etcinit.d/hearbeat start
mds $> tailf /var/log/messages
Jan 15 21:40:11 mds kernel: [ 4000.216541] Lustre: MGS MGS started
Jan 15 21:40:11 mds kernel: [ 4000.240713] Lustre: Enabling user_xattr
Jan 15 21:40:11 mds kernel: [ 4000.242264] Lustre: 8634:0:(mds_fs.c:460:mds_init_server_data()) RECOVERY: service testfs-MDT0000, 1 recoverable clients, last_transno 57
Jan 15 21:40:11 mds kernel: [ 4000.268658] Lustre: MDT testfs-MDT0000 now serving dev (testfs-MDT0000/130da46d-1bef-9e79-4da2-a0e5005f60ab), but will be in recovery for at least 5:00, or until 1 client reconnect. During this time new clients will not be allowed to connect. Recovery progress can be monitored by watching /proc/fs/lustre/mds/testfs-MDT0000/recovery_status.
Jan 15 21:40:11 mds kernel: [ 4000.268691] Lustre: 8634:0:(lproc_mds.c:262:lprocfs_wr_group_upcall()) testfs-MDT0000: group upcall set to /usr/sbin/l_getgroups
Jan 15 21:40:11 mds kernel: [ 4000.268709] Lustre: testfs-MDT0000.mdt: set parameter group_upcall=/usr/sbin/l_getgroups
Jan 15 21:40:11 mds kernel: [ 4000.269073] Lustre: 8634:0:(mds_lov.c:1008:mds_notify()) MDS testfs-MDT0000: in recovery, not resetting orphans . testfs-OST0000_UUID
Jan 15 21:40:11 mds kernel: [ 4000.269079] Lustre: 8634:0:(mds_lov.c:1008:mds_notify()) Skipped 1 previous similar message
Jan 15 21:40:11 mds kernel: [ 4000.287049] Lustre: Server testfs-MDT0000 . device /dev/drbd0 has started
Jan 15 21:40:11 mds Filesystem[8579]: INFO: Success
我们可以看到很多信息,看到最后一行,已经 Success文件系统已经被挂载,
mds $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds, 2009-01-14 00:39:29
0: cs:WFConnection ro:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:20596 nr:660 dw:788 dr:20750 al:5 bm:10 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12
然后我们把mds关机~在mds1一直执行这 tailf /var/log/message查看日志
mds $> shutdown -h now
mds1 $> tailf /var/log/message
Jan 15 22:00:56 mds1 kernel: [ 5250.672618] drbd0: role( Secondary -> Primary )
Jan 15 22:00:56 mds1 Filesystem[5920]: INFO: Resource is stopped
Jan 15 22:00:56 mds1 ResourceManager[5665]: info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /opt lustre start
Jan 15 22:00:56 mds1 Filesystem[5996]: INFO: Running start for /dev/drbd0 . /opt
Jan 15 22:00:57 mds1 kernel: [ 5251.766369] kjournald starting. Commit interval 5 seconds
Jan 15 22:00:57 mds1 kernel: [ 5251.768068] LDISKFS-fs warning: maximal mount count reached, running e2fsck is recommended
Jan 15 22:00:57 mds1 kernel: [ 5251.771802] LDISKFS FS . drbd0, internal journal
Jan 15 22:00:57 mds1 kernel: [ 5251.771944] LDISKFS-fs: recovery complete.
Jan 15 22:00:57 mds1 kernel: [ 5251.776258] LDISKFS-fs: mounted filesystem with ordered data mode.
Jan 15 22:00:57 mds1 kernel: [ 5251.894315] kjournald starting. Commit interval 5 seconds
Jan 15 22:00:57 mds1 kernel: [ 5251.899051] LDISKFS-fs warning: maximal mount count reached, running e2fsck is recommended
Jan 15 22:00:57 mds1 kernel: [ 5251.903082] LDISKFS FS . drbd0, internal journal
Jan 15 22:00:57 mds1 kernel: [ 5251.903095] LDISKFS-fs: mounted filesystem with ordered data mode.
Jan 15 22:00:57 mds1 kernel: [ 5252.158408] Lustre: MGS MGS started
可以看到 mds1 已经接管了,执行命令看一下~
mds1 $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds1, 2009-01-14 00:39:29
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r---
ns:20596 nr:660 dw:788 dr:20750 al:5 bm:10 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12
mds1 $> mount
root@mds1:~# mount
/dev/sda1 . / type ext3 (rw,relatime,errors=remount-ro)
tmpfs . /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/proc . /proc type proc (rw,noexec,nosuid,nodev)
sysfs . /sys type sysfs (rw,noexec,nosuid,nodev)
varrun . /var/run type tmpfs (rw,nosuid,mode=0755)
varlock . /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev . /dev type tmpfs (rw,mode=0755)
tmpfs . /dev/shm type tmpfs (rw,nosuid,nodev)
devpts . /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl . /sys/fs/fuse/connections type fusectl (rw)
securityfs . /sys/kernel/security type securityfs (rw)
/dev/drbd0 . /opt type lustre (rw) ---已经挂载上了
好了我们现在 把mds开机
开机后
mds $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds, 2009-01-14 02:05:53
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r---
ns:0 nr:12 dw:12 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
好已经变为辅机了,
8,开机 启动
ln -s /etc/init.d/drbd /etc/rc2.d/S60drbd
ln -s /etc/init.d/drbd /etc/rc3.d/S60drbd
ln -s /etc/init.d/drbd /etc/rc4.d/S60drbd
ln -s /etc/init.d/drbd /etc/rc5.d/S60drbd
9,配置 ost ost1
shell $>mkfs.lustre --reformat --fsname=testfs --ost --mgsnode=mds@tcp0 --mgsnode=mds1@tcp0 /dev/sdb
## --mgsnode=mds@tcp0 --mgsnode=mds1@tcp0 意思是有一台正常就不会影响使用~
shell $> mount -t lustre /dev/sdb /opt
10,配置 client
shell $> mount -t lustre mds@tcp0:mds1@tcp0:/testfs /opt
shell $> cd /opt
shell $> touch test
shell $> ls
test
shell $> dd if=/dev/zero of=test1 bs=1024 count=40000
执行后 在ost 与 ost1 上执行 df -lh 查看结果
ost $> df -lh
/dev/sdb 1008M 34M 924M 4% /opt
ost1 $> df -lh
/dev/sdb 1008M 73M 885M 8% /opt
我们可以清楚看到 40M 的数据写到了 ost1上
再在 client 上执行
client $> dd if=/dev/zero of=test2 bs=1024 count=40000
再去 两台 ost 上查看 结果数据写到了 ost 上
11,在线切换,看 ost 与 client 是否能正常工作~,因为刚刚做过切换测试,现在的 主机是 mds1,那么我就把 mds1关机,看mds接管后,是否正常~
mds1 $> shutdown -h now
ost $> taif /var/log/message 在一台OST 上查看日志
Jan 15 22:24:33 ost kernel: [ 1424.924073] Lustre: Request x49 sent from MGC192.168.6.20@tcp to NID 192.168.6.21@tcp 100s ago has timed out (limit 100s).
Jan 15 22:26:13 ost kernel: [ 1524.787044] Lustre: Request x54 sent from MGC192.168.6.20@tcp to NID 192.168.6.21@tcp 100s ago has timed out (limit 100s).
Jan 15 22:26:13 ost kernel: [ 1524.787135] Lustre: Changing connection for MGC192.168.6.20@tcp to MGC192.168.6.20@tcp_0/192.168.6.20@tcp
Jan 15 22:26:13 ost kernel: [ 1524.802552] Lustre: 3501:0:(import.c:700:ptlrpc_connect_interpret()) MGS@MGC192.168.6.20@tcp_0 changed server handle from 0xcb3cb29f8eba6fc0 to 0x441e063eb5523617 - evicting.
Jan 15 22:26:13 ost kernel: [ 1524.803661] Lustre: MGC192.168.6.20@tcp: Reactivating import
Jan 15 22:26:13 ost kernel: [ 1524.803673] Lustre: MGC192.168.6.20@tcp: Connection restored to service MGS using nid 192.168.6.20@tcp
这里会有一段时间的,好服务已经切换到 mds上了 我们去 client去看一下。
client $> ls
test test1 test2
三个文件没有我呢题~
好了 热切换已经OK了,注意的是切换的时候会有一段时间不能读写是正常的!
注意了,测试的时候不要在虚拟机禁用网卡,因为你禁用网卡 eth0:0 这个虚拟IP并没有卸载掉,所以你在 开启网卡的时候会导致 drbd 都认为自己是 主服务器,会导致 drbd_split-brain错误,如果出现这个错误,在 当前 辅机器上执行(注意是当前, cat /proc/drbd查看)
drbdadm secondary r0 (我的是r0你的是多少就多少)
drbdadm disconnect r0
drbdadm -- --discard-my-data connect r0
在当前 主机上执行
drbdadm connect r0
我之演示的是 MDS 切换,OST 切换也是如此,
不过是 mkfs.lustre 创建文件系统的时候也要加,slave机器!
--failnode=ost_slave
只有加了 slave才会接管~~!
好了再有不理解的地方希望可以多多交流!
mds :192.168.6.20
mds1 :192.168.6.21
ost :192.168.6.22
ost1 :192.168.6.23
client:192.168.6.24
mds mds1 ost ost2 每台机器都有 1G 的 sdb硬盘 用于测试!
需要 安装软件 drbd-8.3.0 hearbeat-2.30
1.首先在每台机器上编译内核安装lustre 如有不会的请看我上篇写的文章lustre 安装: [url]http://deidara.blog.51cto.com/400447/125071[/url] 因为我出于方便就把 两个deb包考过来安装,在每台机器上安装!
2.在mds mds1 上编译安装drbd
shell $> tar zxvf drbd-8.3.0.tar.gz
shell $> cd drbd-8.3.0
shell $> make clean
shell $> make KDIR=/usr/src/linux-2.6.22 (注意这个地方必须是你编译lustre的内核,如果不是,你从网上下载 linux-2.6.22内核,然后打上lustre补丁,make modules后才能正常编译 drbd不然会报错!)
shell $> groupadd haclient 建立组不然会提示警告
shell $> chgrp haclient /sbin/drbdsetup
shell $> chmod o-x /sbin/drbdsetup
shell $> chmod u+s /sbin/drbdsetup
安装drbd 如果有问题,可以看我的blog :
[url]http://deidara.blog.51cto.com/400447/105875[/url]
3.配置mds mds1 上的 drbd.conf
查找 after "r2";
注释掉这一行,因为我们 只需要 r0
修改默认的 . amd {
device /dev/drbd0;
disk /dev/hde5;
address 192.168.22.11:7788;
flexible-meta-disk internal;
}
on alf {
device /dev/drbd0;
disk /dev/hdc5;
address 192.168.22.12:7788;
meta-disk internal;
}
}
改为
on mds {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.6.20:7788;
flexible-meta-disk internal;
. mds1 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.6.21:7788;
meta-disk internal;
}
}
最后,把 后边的 全部注释掉或者删掉! mds与mds1配置一样!
5,调试drbd 手动切换 drbd 主辅
在mds与mds1上 执行
mds $> drbdadm create-md r0 #“r0”是我们在drbd.conf里定义的,初始化
mds1 $> drbdadm create-md r0
mds $> /etc/init.d/drbd start
mds1 $> /etc/init.d/drbd start
mds $> cat /proc/drbd
显示了drbd当前的状态.第一行的st表示两台主机的状态,都是”备机”状态.
ds是磁盘状态,都是”不一致”状态.
mds $> drbdsetup /dev/drbd0 primary -o
mds $> cat /proc/drbd
就可以看到主备机状态分别是”主/备”,主机磁盘状态是”实时”,备机状态是”不一致”.且数据开始同步
稍等一会,在数据同步完后,再查看一下drbd1的DRBD状态
mds $>cat /proc/drbd
好了,磁盘状态都是”实时”,表示数据同步完成了.
你现在可以把主机上的DRBD设备挂载到一个目录上进行使用.备机的DRBD设备无法被挂载,因为它是
用来接收主机数据的,由DRBD负责操作.
在mds 执行
mds $> mkfs.lustre --reformat --fsname=testfs --mdt --mgs --failnode=mds1 /dev/drbd0
### 创建 lustre文件系统 reformat 参数是格式化,fsname 文件名字 --failnode参数是 lustre failover 功能~
mds $> mount -t lustre /dev/drbd0 /opt (挂载到/opt 目录)
DRBD的主备机切换有时,你需要将DRBD的主备机互换一下.可以执行下面的操作:
在主机上,先要卸载掉DRBD设备
mds $> umount /opt
将主机降级为”备机”
mds $> drbdadm secondary r0
mds $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds, 2009-01-14 02:05:53
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r---
ns:132 nr:20480 dw:20612 dr:270 al:5 bm:15 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
已经降到了备机
在mds1上执行
mds1 $> drbdadm primary r0
mds1 即为升为 主!
6,在mds 和 mds1 安装使用 hearbeat,让drbd 手动切换为自动切换,hearbeat我出于升力气,就apt-get 安装了,大家可以使用源码包安装
shell $> apt-get install hearbeat
shell $> cd /usr/share/doc/heartbeat
shell $> gunzip ha.cf.gz
shell $> gunzip haresources.gz
shell $> mv ha.cf haresouroes authkeys /etc/ha.d/
shell $> chmod 600 authkeys
shell $> vim authkeys
auth 1
1 crc
把这两行注释去掉
shell $> vim ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
auto_failback off
node mds
node mds1
ping 192.168.6.1
respawn hacluster /usr/lib/heartbeat/ipfail
shell $> vim haresouroes
mds 192.168.6.25 drbddisk::r0 Filesystem::/dev/drbd0::/opt::lustre
7.最后的调试,于查看日志!
mds $> /etc/init.d/hearbeat start
mds $> tailf /var/log/messges
mds1 $> /etcinit.d/hearbeat start
mds $> tailf /var/log/messages
Jan 15 21:40:11 mds kernel: [ 4000.216541] Lustre: MGS MGS started
Jan 15 21:40:11 mds kernel: [ 4000.240713] Lustre: Enabling user_xattr
Jan 15 21:40:11 mds kernel: [ 4000.242264] Lustre: 8634:0:(mds_fs.c:460:mds_init_server_data()) RECOVERY: service testfs-MDT0000, 1 recoverable clients, last_transno 57
Jan 15 21:40:11 mds kernel: [ 4000.268658] Lustre: MDT testfs-MDT0000 now serving dev (testfs-MDT0000/130da46d-1bef-9e79-4da2-a0e5005f60ab), but will be in recovery for at least 5:00, or until 1 client reconnect. During this time new clients will not be allowed to connect. Recovery progress can be monitored by watching /proc/fs/lustre/mds/testfs-MDT0000/recovery_status.
Jan 15 21:40:11 mds kernel: [ 4000.268691] Lustre: 8634:0:(lproc_mds.c:262:lprocfs_wr_group_upcall()) testfs-MDT0000: group upcall set to /usr/sbin/l_getgroups
Jan 15 21:40:11 mds kernel: [ 4000.268709] Lustre: testfs-MDT0000.mdt: set parameter group_upcall=/usr/sbin/l_getgroups
Jan 15 21:40:11 mds kernel: [ 4000.269073] Lustre: 8634:0:(mds_lov.c:1008:mds_notify()) MDS testfs-MDT0000: in recovery, not resetting orphans . testfs-OST0000_UUID
Jan 15 21:40:11 mds kernel: [ 4000.269079] Lustre: 8634:0:(mds_lov.c:1008:mds_notify()) Skipped 1 previous similar message
Jan 15 21:40:11 mds kernel: [ 4000.287049] Lustre: Server testfs-MDT0000 . device /dev/drbd0 has started
Jan 15 21:40:11 mds Filesystem[8579]: INFO: Success
我们可以看到很多信息,看到最后一行,已经 Success文件系统已经被挂载,
mds $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds, 2009-01-14 00:39:29
0: cs:WFConnection ro:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:20596 nr:660 dw:788 dr:20750 al:5 bm:10 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12
然后我们把mds关机~在mds1一直执行这 tailf /var/log/message查看日志
mds $> shutdown -h now
mds1 $> tailf /var/log/message
Jan 15 22:00:56 mds1 kernel: [ 5250.672618] drbd0: role( Secondary -> Primary )
Jan 15 22:00:56 mds1 Filesystem[5920]: INFO: Resource is stopped
Jan 15 22:00:56 mds1 ResourceManager[5665]: info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /opt lustre start
Jan 15 22:00:56 mds1 Filesystem[5996]: INFO: Running start for /dev/drbd0 . /opt
Jan 15 22:00:57 mds1 kernel: [ 5251.766369] kjournald starting. Commit interval 5 seconds
Jan 15 22:00:57 mds1 kernel: [ 5251.768068] LDISKFS-fs warning: maximal mount count reached, running e2fsck is recommended
Jan 15 22:00:57 mds1 kernel: [ 5251.771802] LDISKFS FS . drbd0, internal journal
Jan 15 22:00:57 mds1 kernel: [ 5251.771944] LDISKFS-fs: recovery complete.
Jan 15 22:00:57 mds1 kernel: [ 5251.776258] LDISKFS-fs: mounted filesystem with ordered data mode.
Jan 15 22:00:57 mds1 kernel: [ 5251.894315] kjournald starting. Commit interval 5 seconds
Jan 15 22:00:57 mds1 kernel: [ 5251.899051] LDISKFS-fs warning: maximal mount count reached, running e2fsck is recommended
Jan 15 22:00:57 mds1 kernel: [ 5251.903082] LDISKFS FS . drbd0, internal journal
Jan 15 22:00:57 mds1 kernel: [ 5251.903095] LDISKFS-fs: mounted filesystem with ordered data mode.
Jan 15 22:00:57 mds1 kernel: [ 5252.158408] Lustre: MGS MGS started
可以看到 mds1 已经接管了,执行命令看一下~
mds1 $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds1, 2009-01-14 00:39:29
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r---
ns:20596 nr:660 dw:788 dr:20750 al:5 bm:10 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12
mds1 $> mount
root@mds1:~# mount
/dev/sda1 . / type ext3 (rw,relatime,errors=remount-ro)
tmpfs . /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/proc . /proc type proc (rw,noexec,nosuid,nodev)
sysfs . /sys type sysfs (rw,noexec,nosuid,nodev)
varrun . /var/run type tmpfs (rw,nosuid,mode=0755)
varlock . /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev . /dev type tmpfs (rw,mode=0755)
tmpfs . /dev/shm type tmpfs (rw,nosuid,nodev)
devpts . /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl . /sys/fs/fuse/connections type fusectl (rw)
securityfs . /sys/kernel/security type securityfs (rw)
/dev/drbd0 . /opt type lustre (rw) ---已经挂载上了
好了我们现在 把mds开机
开机后
mds $> cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@mds, 2009-01-14 02:05:53
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r---
ns:0 nr:12 dw:12 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
好已经变为辅机了,
8,开机 启动
ln -s /etc/init.d/drbd /etc/rc2.d/S60drbd
ln -s /etc/init.d/drbd /etc/rc3.d/S60drbd
ln -s /etc/init.d/drbd /etc/rc4.d/S60drbd
ln -s /etc/init.d/drbd /etc/rc5.d/S60drbd
9,配置 ost ost1
shell $>mkfs.lustre --reformat --fsname=testfs --ost --mgsnode=mds@tcp0 --mgsnode=mds1@tcp0 /dev/sdb
## --mgsnode=mds@tcp0 --mgsnode=mds1@tcp0 意思是有一台正常就不会影响使用~
shell $> mount -t lustre /dev/sdb /opt
10,配置 client
shell $> mount -t lustre mds@tcp0:mds1@tcp0:/testfs /opt
shell $> cd /opt
shell $> touch test
shell $> ls
test
shell $> dd if=/dev/zero of=test1 bs=1024 count=40000
执行后 在ost 与 ost1 上执行 df -lh 查看结果
ost $> df -lh
/dev/sdb 1008M 34M 924M 4% /opt
ost1 $> df -lh
/dev/sdb 1008M 73M 885M 8% /opt
我们可以清楚看到 40M 的数据写到了 ost1上
再在 client 上执行
client $> dd if=/dev/zero of=test2 bs=1024 count=40000
再去 两台 ost 上查看 结果数据写到了 ost 上
11,在线切换,看 ost 与 client 是否能正常工作~,因为刚刚做过切换测试,现在的 主机是 mds1,那么我就把 mds1关机,看mds接管后,是否正常~
mds1 $> shutdown -h now
ost $> taif /var/log/message 在一台OST 上查看日志
Jan 15 22:24:33 ost kernel: [ 1424.924073] Lustre: Request x49 sent from MGC192.168.6.20@tcp to NID 192.168.6.21@tcp 100s ago has timed out (limit 100s).
Jan 15 22:26:13 ost kernel: [ 1524.787044] Lustre: Request x54 sent from MGC192.168.6.20@tcp to NID 192.168.6.21@tcp 100s ago has timed out (limit 100s).
Jan 15 22:26:13 ost kernel: [ 1524.787135] Lustre: Changing connection for MGC192.168.6.20@tcp to MGC192.168.6.20@tcp_0/192.168.6.20@tcp
Jan 15 22:26:13 ost kernel: [ 1524.802552] Lustre: 3501:0:(import.c:700:ptlrpc_connect_interpret()) MGS@MGC192.168.6.20@tcp_0 changed server handle from 0xcb3cb29f8eba6fc0 to 0x441e063eb5523617 - evicting.
Jan 15 22:26:13 ost kernel: [ 1524.803661] Lustre: MGC192.168.6.20@tcp: Reactivating import
Jan 15 22:26:13 ost kernel: [ 1524.803673] Lustre: MGC192.168.6.20@tcp: Connection restored to service MGS using nid 192.168.6.20@tcp
这里会有一段时间的,好服务已经切换到 mds上了 我们去 client去看一下。
client $> ls
test test1 test2
三个文件没有我呢题~
好了 热切换已经OK了,注意的是切换的时候会有一段时间不能读写是正常的!
注意了,测试的时候不要在虚拟机禁用网卡,因为你禁用网卡 eth0:0 这个虚拟IP并没有卸载掉,所以你在 开启网卡的时候会导致 drbd 都认为自己是 主服务器,会导致 drbd_split-brain错误,如果出现这个错误,在 当前 辅机器上执行(注意是当前, cat /proc/drbd查看)
drbdadm secondary r0 (我的是r0你的是多少就多少)
drbdadm disconnect r0
drbdadm -- --discard-my-data connect r0
在当前 主机上执行
drbdadm connect r0
我之演示的是 MDS 切换,OST 切换也是如此,
不过是 mkfs.lustre 创建文件系统的时候也要加,slave机器!
--failnode=ost_slave
只有加了 slave才会接管~~!
好了再有不理解的地方希望可以多多交流!
转载于:https://blog.51cto.com/deidara/126714