lustre1.6.5+drbd主备切换
生活随笔
收集整理的這篇文章主要介紹了
lustre1.6.5+drbd主备切换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前些日子把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才會接管~~!
好了再有不理解的地方希望可以多多交流!
本文轉自Deidara 51CTO博客,原文鏈接:http://blog.51cto.com/deidara/126714,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的lustre1.6.5+drbd主备切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NA-NP-IE系列实验13:使用子网地
- 下一篇: 马哥运维学习作业(二)