zoukankan      html  css  js  c++  java
  • KVM Block Migrate

    qemu-kvm-0.12 adds block migration feature

    虽然都是root.img 但是在不同的目录上,因为是测试调试,所以直接将qmp输出到标准输出。

    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中

    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:localhost:10010

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

    在VM1上执行:migrate -d -b tcp:localhost: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。

  • 相关阅读:
    php js表单登陆验证
    jQuery Ajax 简单的实现跨域请求
    常见http代码错误原因及处理
    使用git做服务器端代码的部署
    mysql之消息队列
    MySQL触发器使用详解
    mysql之触发器before和after的区别
    mysql之触发器trigger
    手把手教你使用Git
    xcode: {} 花括号缩进一个空格
  • 原文地址:https://www.cnblogs.com/fengrenzw/p/3339910.html
Copyright © 2011-2022 走看看