Linux KVM

冷迁移:

 

 

----step1:

查看当前要迁移的虚拟机Name

virsh list --all

Eg:

[root@localhost]#virsh list --all

Id   Name                          State

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

-    machine1610              shut off

 

 

 

----step2:

查看该虚拟机的磁盘镜像文件所在位置

virsh domblklistmachine1610

Eg:

[root@localhost]#virsh domblklist machine1610

Target    Source

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

vda       /mnt/sdb/KVM/libvirt/machine1610.img

hda       -

 

 

----step3

使用qemu-imageconvert命令缩小需迁移的虚拟机的磁盘的大小 [注意-O选项根据KVM虚拟机实际磁盘格式选择]

[此命应用场景:KVM 上创建的虚拟机分配磁盘为256GB,运行后至需要迁移时,仅使用约10GB的空间。du -h显示确实为10GB。但ls -hl看到的结果则为257G]

[scp至目标host机时,实际所传大小为257GB,执行此命令后,镜像文件缩小至约10GB。]

[局限:仅能缩小未曾分配的空间,若虚拟机曾经使用过50G的空间,则此命令执行后只能缩小至50GB左右,若要完全释放,可使用dd命令将虚拟机的磁盘空间用0写满.然后删除该文件后关闭虚拟机,再重新执行step3,可获得10GB的镜像文件。若网络带宽资源不紧张,则dd命令使用意义不大]

Eg:

qemu-img convert-O qcow2 machine1610.img machine1610.new.img

mvmachine1610.new.img machine1610.img

 

 

----step4:

获取需迁移虚拟机的xml文件

Eg:

virsh dumpxmlmachine1610 > machine1610.xml

 

 

----step5:

将虚拟机的xml文件和经过qemu-image的img文件一同复制至目标host机上:

 

 

----step6:

若目标img文件位于目标host机的路径与源host机的路径不同,请修改目标host机上的xml文件

修改位置<source file='/mnt/sdb/KVM/libvirt/machine1610.img'/>

Eg:

vimmachine1610.img

   <disk type='file' device='disk'>

     <driver name='qemu' type='qcow2' cache='writeback'/>

     <source file='/mnt/sdb/KVM/libvirt/machine1610.img'/>

     <backingStore/>

     <target dev='vda' bus='virtio'/>

     <alias name='virtio-disk0'/>

     <address type='pci' domain='0x0000' bus='0x00' slot='0x08'function='0x0'/>

   </disk>

 

 

----step7:

使用virshdefine命令依据xml文件在目标host上创建虚拟机

Eg:

virsh definemachine1610.xml

 

 

----step8:

确定虚拟机使用的网络确实存在.若不存在,创建或更换

 

----step9

启动虚拟机

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐