且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

kvm(九)客户机vm的迁移

更新时间:2022-09-24 18:08:18

本文系统:centos 6.5 x64

静态迁移:将vm的配置文件及磁盘文件进行copy到另外一台kvm主机即可

动态迁移:基于nfs的动态迁移和基于gfs的动态迁移


一、静态迁移:

我们将Aries主机的vm(vm2 )迁移到 lansgg主机上;

思路就是将 vm2 的配置文件及磁盘文件 copy 到对端主机,重新define 即可

kvm(九)客户机vm的迁移

copy文件

kvm(九)客户机vm的迁移

因为磁盘目录和配置文件一致,所以直接进行define即可

kvm(九)客户机vm的迁移

可以看到启动成功、迁移完成。

二、动态迁移:基于nfs的动态迁移

相比静态迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机动态迁移无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目 录结构虚拟机磁盘文件,这里使用nfs来实验,当然也可以采用GFS2集群文件系统来实现,本文的动态迁移是基于共享存储动态迁移。

KVM动态迁移目前有两种,一种是基于共享存储的动态迁移,一种是基于基于数据块的动态迁移,需要qemu-kvm-0.12.2以上版本支持。

kvm(九)客户机vm的迁移

主机A: 

hostname:Aries

ip:192.168.100.128

主机B:

hostname:daf

ip:192.168.100.141

NFS主机:

hostname:nfs

ip:192.168.100.140

实验目的:将主机A的虚拟机 vmTest 迁移到 主机B 上

1、将nfs主机的上存储 sdb1 进行nfs共享:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@nfs ~]# yum install rpcbind nfs-utils* -y
[root@nfs /]# cat /etc/exports 
/nfs         192.168.100.0/24(rw,sync,no_root_squash) 
[root@nfs /]# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /nfs type ext4 (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
[root@nfs /]# /etc/init.d/rpcbind start
[root@nfs /]# /etc/init.d/nfs start
[root@nfs /]# /etc/init.d/rpcidmapd start



2、分别在其他两台主机挂载nfs

1
2
3
4
5
6
[root@Aries ~]# mkdir /nfs/Data
[root@Aries ~]# showmount -e 192.168.100.140
Export list for 192.168.100.140:
/nfs 192.168.100.0/24
[root@Aries ~]# mount -t nfs 192.168.100.140:/nfs /nfsData
[root@Aries ~]# mkdir /nfsData/kvm
1
2
3
4
5
6
[root@daf kvm]# mkdir /nfsData
[root@daf kvm]# showmount -e 192.168.100.140
Export list for 192.168.100.140:
/nfs 192.168.100.0/24
[root@daf kvm]# mount -t nfs 192.168.100.140:/nfs /nfsData
[root@daf kvm~]# mkdir /nfsData/kvm

3、在Aries上创建虚拟机 vmTest

1
[root@Aries ~]#  virt-install --name=vmTest --ram 512 --vcpus=1 --disk path=/nfsData/kvm/vmTest.img,size=7,bus=virtio --accelerate --cdrom=/iso/CentOS-6.5-x86_64-bin-DVD1.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
1
2
3
4
5
6
7
8
9
10
[root@Aries ~]# virsh list 
 Id    名称                         状态
----------------------------------------------------
 2     vmTest                         running
 
[root@Aries ~]# virsh domblklist vmTest
Target     Source
------------------------------------------------
vda        /nfsData/kvm/vmTest.img
hdc        -

kvm(九)客户机vm的迁移

4、虚拟机迁移:

Ps:确保两节点都有相同的虚拟机磁盘文件存储目录,我们这里是 /nfsData/kvm

1
[root@Aries ~]# virsh migrate --live --verbose vmTest  qemu+ssh://192.168.100.141/system tcp://192.168.100.141

kvm(九)客户机vm的迁移
在原主机的vm已经停机,查看目标主机的vm状态

kvm(九)客户机vm的迁移

已经转移到目标主机,中间会有间断的不可用。

Ps:虽然vm在目标主机成功启动,可是还是没有配置文件,需要生成配置文件

kvm(九)客户机vm的迁移

5、生成配置文件,重新进来define

1
2
[root@daf qemu]# virsh dumpxml vmTest > /etc/libvirt/qemu/vmTest.xml
[root@daf qemu]# virsh define /etc/libvirt/qemu/vmTest.xml

kvm(九)客户机vm的迁移


本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1688760