• 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。

  • 相关阅读:
    Cache,ViewState,Session,Application,Static变量
    Java -- 通过 URLConnection 进行http请求中文乱码
    maven
    SpringMVC restful风格下载文件,文件后缀被截掉
    vim 命令
    CentOS -- 命令
    json -- fastjson如何序列化@Transient的字段
    SpringBoot -- 配置mysql、hibernate
    Java -- 泛型父类中获取子类的泛型T
    Excel
  • 原文地址:https://www.cnblogs.com/fengrenzw/p/3339910.html
Copyright © 2020-2023  润新知