说明:qht02对应ip:192.168.1.2 同时也是nfs存储(当然也可以用一台单独的nfs server)
qht03对应ip:192.168.1.3
1:现在我有两台机器,分别为192.168.1.2和192.168.1.3 已经在192.168.1.2上用xen安装了vm02 虚拟机
放在了/xen目录下 ##我已经安装好了一个vm02虚拟机,如果没有安装,直接安装就可以了! 但要把虚拟机放到nfs存储上,这样才能进行live migration, vmware的esx下vmtion也需要把vmdk文件放到存储上,如果将vm放到本地(不共享出来),在两个机器机器间迁移是不可能的!
2:用vmware workstation 添加一块硬盘。
重启虚拟机
mkdir /bak
cd /xen
mv vm02 ../bak #备份到/bak目录下,挂载后分区后,重新mv到/xen目录下!
fdisk /dev/hdb
n
p
1
两次回车
w
即可分出一个/dev/hdb1分区!
格式化该分区:
mkfs -t ext3 /dev/hdb1
3:挂载/dev/hdb1分区到/xen目录下
mount /dev/hdb1 /xen
然后 mv /bak/vm02 /xen下!
4:配置nfs服务!
[root@qht02 xentest]# service nfs status
rpc.mountd is stopped
nfsd is stopped
rpc.rquotad is stopped
[root@qht02 xentest]# service portmap start
Starting portmap: [ OK ]
[root@qht02 xentest]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@qht02 xentest]# exportfs -rv
exporting *:/xen
[root@qht02 xentest]# showmount -e 192.168.1.2
Export list for 192.168.1.2:
/xen *
5:确认迁移的环境
[root@qht02 xentest]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.000000000000 yes
xenbr0 8000.feffffffffff no peth0
vif0.0
[root@qht03 /]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.000000000000 yes
xenbr0 8000.feffffffffff no peth0
vif0.0
确认两者的网络环境一样!(Make sure the Xen networking bridges are configured correctly and have the same name on both hosts:)
6:修改/etc/xen下的xend-config.sxp文件, 修改后grep后如下显示
[root@qht02 xen]# grep xend-relocation /etc/xen/xend-config.sxp |grep -v '#'
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts-allow '')
[root@qht02 xen]# pwd
/etc/xen
[root@qht02 xen]# ls xend-config.sxp
xend-config.sxp
[root@qht02 xen]# service xend restart
restart xend: [ OK ]
同样qht03机器上的 配置一样的:
[root@qht03 xen]# grep xend-relocation /etc/xen/xend-config.sxp |grep -v '#'
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts-allow '')
[root@qht03 xen]# pwd
/etc/xen
[root@qht03 xen]# ls xend-config.sxp
xend-config.sxp
[root@qht03 xen]# service xend restart
restart xend: [ OK ]
7:重启qht02和qht03 上的xend服务,并确认8002端口在监听
[root@qht02 xen]# lsof -i :8002
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
python 4540 root 5u IPv4 13073 TCP *:teradataordbms (LISTEN)
[root@qht03 xen]#lsof -i :8002
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
python 4072 root 5u IPv4 11784 TCP *:teradataordbms (LISTEN)
8:在qht03上挂载qht02上的/xen 目录
[root@qht03 xen]# df /xen/
Filesystem 1K-blocks Used Available Use% Mounted on
192.168.1.2:/xen/ 8256608 1206624 6630560 16% /xen
[root@qht03 xen]# file /xen/vm02
/xen/vm02: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 10265535 sectors, code offset 0x48
[root@qht03 xen]# df /xen/
Filesystem 1K-blocks Used Available Use% Mounted on
192.168.1.2:/xen/ 8256608 1206624 6630560 16% /xen
[root@qht03 xen]# file /xen/vm02
/xen/vm02: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 10265535 sectors, code offset 0x48
[root@qht03 xen]#
注意:需要注意的是,A-->B传送vm(同时A作为nfs服务器),A,B的Mount目录必须一致,这样VM的配置文件才可以对应到正确的Local disk img.
9:在qht02上启动虚拟机,save和restore 它!
[root@qht02 ~]# xm create vm02
Using config file "/etc/xen/vm02".
Started domain vm02
[root@qht02 ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 413 1 r----- 151.3
vm02 1 300 1 -b---- 0.5
[root@qht02 ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 413 1 r----- 155.4
vm02 1 299 1 -b---- 19.4
[root@qht02 ~]# cd /xen
[root@qht02 xen]# ls
lost+found vm02
[root@qht02 xen]# time xm save vm02 vm02.sav
real 1m16.331s
user 0m0.068s
sys 0m0.244s
[root@qht02 xen]# xm list ##原来vm02在运行的的,运行xm save后 vm02 就已经停了
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 413 1 r----- 231.3
[root@qht02 xen]# ls
lost+found vm02 vm02.sav
[root@qht02 xen]# du -sh *
16K lost+found
1.1G vm02
301M vm02.sav
[root@qht02 xen]# time xm restore vm02.sav
real 0m5.879s
user 0m0.016s
sys 0m0.020s
[root@qht02 xen]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 413 1 r----- 53.5
vm02 1 299 1 -b---- 0.0
[root@qht02 xen]#
10:在qht02 机器上 192.168.1.2上执行:
[root@qht02 xen]# xm migrate --live vm02 192.168.1.3
[root@qht02 xen]#
该命令执行完毕后执行xm list显示如下: ##显然原来在运行的vm02 已经不在该物理机上运行了!
[root@qht02 xen]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 410 1 r----- 64.5
[root@qht02 xen]#
11:同时在qht03上 即192.168.1.3上执行如下:
[root@qht03 ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 278 1 r----- 61.9
vm02 1 299 0 -bp--- 0.0 ##显然还在migrate
[root@qht03 ~]# xm list ##从现在的显示来看vm02已经迁移都该物理机上了!
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 278 1 r----- 63.2
vm02 1 299 1 -b---- 0.2 ##
[root@qht03 ~]# xm console vm02
CentOS release 5.3 (Final)
Kernel 2.6.18-128.el5xen on an i686
ungeoxliu login: root
Password:
Last login: Sat Jul 28 14:27:08 on xvc0
[root@ungeoxliu ~]# ifconfig ##ip地址为192.168.1.8
eth0 Link encap:Ethernet HWaddr 00:16:3E:58:CC:A7
inet addr:192.168.1.8 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe58:cca7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2399 errors:0 dropped:0 overruns:0 frame:0
TX packets:277 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:760739 (742.9 KiB) TX bytes:30118 (29.4 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)
在migrate过程中,可以在windows下打开一个cmd窗口,ping 192.168.1.8 -t(在迁移的过程中会发现没有丢包)
xm migration过程中的问题:
1:见附件
在192.168.1.3上执行的上述命令,因为vm02 运行在192.168.1.2上, vm02根本没有在192.168.1.3上运行,古会有此提示! 在192.168.1.2上执行 xm migrate --live vm02 192.168.1.3 即可将运行的vm02 迁移到192.168.1.3上!