本文系统:centos 6.5 x64

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

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


一、静态迁移:

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

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

kvm 替换虚拟机内部文件 kvm迁移虚拟机_配置文件

copy文件

kvm 替换虚拟机内部文件 kvm迁移虚拟机_网络_02

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

kvm 替换虚拟机内部文件 kvm迁移虚拟机_配置文件_03

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

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

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

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

kvm 替换虚拟机内部文件 kvm迁移虚拟机_kvm 替换虚拟机内部文件_04

主机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共享:




[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



[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




[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



[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




[root@Aries ~]          # virsh list          


                    Id    名称                         状态         


          ----------------------------------------------------         


                    2     vmTest                         running         


                    


          [root@Aries ~]          # virsh domblklist vmTest         


          Target     Source         


          ------------------------------------------------         


          vda                  /nfsData/kvm/vmTest          .img         


          hdc        -




kvm 替换虚拟机内部文件 kvm迁移虚拟机_配置文件_05

4、虚拟机迁移:

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


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




kvm 替换虚拟机内部文件 kvm迁移虚拟机_配置文件_06

在原主机的vm已经停机,查看目标主机的vm状态

kvm 替换虚拟机内部文件 kvm迁移虚拟机_运维_07

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

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

kvm 替换虚拟机内部文件 kvm迁移虚拟机_xml_08

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



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


          [root@daf qemu]          # virsh define /etc/libvirt/qemu/vmTest.xml




kvm 替换虚拟机内部文件 kvm迁移虚拟机_配置文件_09


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