jiel 发表于 2015-10-10 10:18:54

kvm虚机-块迁移


当服务器使用本地存储时,如果要对上面的虚拟机进行在线迁移,那么就要用到块迁移技术(block migration)





VM1:/usr/libexec/qemu-kvm --enable-kvm -name VM1 -drive file=root.img,if=virtio,boot=on -monitor stdio -vnc 0.0.0.0:0

VM1已经启动,正常进入系统。可以通过5900端口连接到VM1中





在目标主机上创建root.img



qemu-img create -f qcow2 /var/lib/kvm/images/root.img 10G   //大于或等于源虚机的大小
  

VM2:/usr/libexec/qemu-kvm --enable-kvm -name VM2 -drive file=root.img,if=virtio,boot=on -monitor stdio -vnc 0.0.0.0:1 -incoming tcp:0:10010

VM2是监听虚拟机,只有进程单虚拟机并没有启动,vnc的连接状态是僵死,可能描述不正确,端口在,也不拒绝连接,就是挂起。10010是监听的端口





在VM1上执行:migrate -d -b tcp:destination_ip:10010

使用info migrate查看当前状态

(qemu) info migrate

Migration status: active

transferred ram: 74028 kbytes

remaining ram: 74252 kbytes

total ram: 147840 kbytes

transferred disk: 10484736 kbytes

remaining disk: 1024 kbytes

total disk: 10485760 kbytes

在VM2上的状态:

(qemu) Receiving block device images

Completed 100 %

在VM1上的状态:

(qemu) info migrate

Migration status: completed

当在VM2中达到100%时,VM2的vnc5901就可以连接了,而5900就挂起,可以kill掉VM1的进程,因为虚拟机现在已经迁移到VM2中。

这个就是KVM迁移相对比较底层的状态操作。

同理,使用libvirt迁移的时候,其实也是在目标机器上创建一个完全相同配置的虚拟机,开启一个监控监听,然后源机器将数据块(包括ram和disk)迁移到目标机器上,达到100%时,destroy source。









http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm1/



http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm2/index.html



http://libvirt.org/migration.html



http://www.sebastien-han.fr/blog/2012/07/12/openstack-block-migration/

页: [1]
查看完整版本: kvm虚机-块迁移