衆所周知,xen支持虛擬機的動態遷移,我們實現了一個關於虛擬機動態遷移的實例:
具體的操作如下:
(1) 首先安裝drbd的安裝
DRBD(Distributed Replicated Block Device),分佈式複製塊設備,是一種通過TCP/IP網絡實現塊設備數據實時鏡像的方案
linux version: 2.6.9-5.EL
drbd version: drbd-8.3.1.tar.gz
下載地址: http://oss.linbit.com/drbd/
主機
主機名:iptx1
IP:172.16.16.15
drbd分區:/dev/sda6 200M
備機
主機名:iptx2
IP:172.16.16.11
drbd分區:/dev/sda6 200M
修改/etc/hosts
172.16.16.15 iptx1
172.16.16.11 iptx2
1. DRBD安裝
# tar zxvf drbd-8.3.1.tar.gz
# cd drbd-8.3.1
# make
# make install
2. 測試DRBD模塊是否加載成功
# cd drbd-8.3.1
# insmod drbd/drbd.ko 或者 # modprobe drbd
# lsmod | grep drbd
提示: drbd 267132 0
3. 配置DRBD
# vi /etc/drbd.conf
-----------------------------
global { usage-count yes; }
common { syncer { rate 100M; } }
resource r0 {
protocol C;
net {
cram-hmac-alg sha1;
shared-secret "FooFunFactory";
allow-two-primaries;
}
on iptx1 {
device /dev/drbd0;
disk /dev/sda6;
address 172.16.16.15:7789;
meta-disk internal;
}
on iptx2 {
device /dev/drbd0;
disk /dev/sda6;
address 172.16.16.11:7789;
meta-disk internal;
}
}
-----------------------------
將該文件分別拷貝到兩臺主機上的/etc下面,兩臺主機上一樣
4. DRBD啓動
1) 創建供DRBD記錄信息的數據塊
# drbdadm create-md r0
創建塊設備後不需要格式化磁盤分區
刪除磁盤分區格式
# dd if=/dev/zero bs=1M count=1 of=/dev/sda6
2) 啓動drbd服務
# service drbd start 或者 /etc/init.d/drbd start
正常情況提示:Starting DRBD resources: [ ].
如果提示找不到peer,請輸入yes永久等待,請檢查/etc/hosts和iptables
查看狀態: service drbd status
[root@iptx1 mnt]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.1 (api:88/proto:86-89)
GIT-hash: fd40f4a8f9104941537d1afc8521e584a6d3003c build by
root@localhost , 2010-11-19 14:49:22
m:res cs ro ds p mounted fstype
0:r0 Connected Secondary/ Secondary UpToDate/UpToDate C
3) 初始化一個爲主機(在iptx1上執行)
drbdsetup /dev/drbd0 primary -o
等待同步完成……
[root@iptx1 mnt]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.1 (api:88/proto:86-89)
GIT-hash: fd40f4a8f9104941537d1afc8521e584a6d3003c build by
root@localhost , 2010-11-19 14:49:22
m:res cs ro ds p mounted fstype
0:r0 Connected Primary /Secondary UpToDate/UpToDate C
5. DRBD驗證
1) 在主機上執行
格式化塊設備(只需要格式化主機上的drbd0)
# mkfs.ext3 /dev/drbd0
掛載
# mount /dev/drbd0 /mnt/drbd
創建一個文件
# dd if=/dev/zero of=/mnt/drbd0/tempfile1.tmp bs=104857600 count=2
2) 操作完成後,在備機上執行
先停止DRBD
# /etc/init.d/drbd stop
將sda6進行掛載
# mount /dev/sda6 /mnt/drbd
# ls /mnt/drbd -hl
total 201M
drwx------ 2 root root 12K Jul 28 23:44 lost+found
-rw-r--r-- 1 root root 200M Jul 29 00:20 tempfile1.tmp
# umount /mnt/drbd
6.DRBD的主備機切換
有時,你需要將DRBD的主備機互換一下.可以執行下面的操作:
在主機上,先要卸載掉DRBD設備.
[root@iptx1 /]# umount /mnt/drbd
將主機降級爲”備機”.
[root@iptx1 /]# drbdadm secondary r0
[root@iptx1 /]# cat /proc/drbd
version: 8.3.1 (api:88/proto:86-89)
GIT-hash: fd40f4a8f9104941537d1afc8521e584a6d3003c build by
root@localhost , 2010-11-19 14:49:22
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:211748 nr:0 dw:11000 dr:208733 al:27 bm:14 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
現在,兩臺主機都是”備機”.
在備機iptx2上,將它升級爲”主機”.
[root@iptx2 /]# drbdadm primary r0
[root@iptx2 /]# cat /proc/drbd
GIT-hash: fd40f4a8f9104941537d1afc8521e584a6d3003c build by
root@iptx2 , 2010-11-18 15:18:44
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r---
ns:0 nr:37 dw:37 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
(2) 在根據上述操作完成安裝後,在primary機器的/dev/sda6中加入虛擬機的鏡像,然後完成同步操作,使用xen虛擬機 遷移指令完成遷移。
xm migrate --live <domU> <destination-host>
可以具體查詢xen指令和drbd的使用。
(3) 如果在同步進行過程中意外中斷了,下次啓動drbd時,
cat /proc/drbd
出現Secondary/Unknown ,Primary/Unknown 兩臺機器的drbd 無法連接
在secondary機器上執行drbdadm -- --discard-my-data connect r0,然後重新啓動drbd便可連接上。