zoukankan      html  css  js  c++  java
  • 恒天云技术分享系列(一)—虚拟机热迁移

     转自恒天云:http://www.hengtianyun.com/download-show-id-7.html

    1.概述

    热迁移(Live Migration,又叫动态迁移、实时迁移),即虚拟机保存/恢复(Save/Restore):将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。

    openstack热迁移

    OpenStack有两种在线迁移类型:live migration和block migration。

    • Live migration需要实例保存在共享存储中,这种迁移主要是实例的内存状态的迁移,速度会很快。

    • Block migration除了实例内存状态要迁移外,还得迁移磁盘文件,速度会慢些,但是它不要求实例存储在共享文件系统中。

    2.总体需求

    目前,openstack的horizon中并没有实现热迁移的用户接口。我们需要在horizon中实现下面的功能。

    • 实现基于本地存储的热迁移
    • 前台可指定目标机器

    1). 前台功能描述

    在云主机列表中,更多下拉框中包含迁移操作,点击【迁移】时,弹出目标机器列表,可供选择。

    2). 后台功能描述

    注意os-migrateLive是“热迁移”,虚拟机不会停机。migrate操作会先将虚拟机停掉,也就是所谓的“冷迁移”(H版本的horizon中有类似功能“移植”),live-migration是在虚拟机active状态下的操作,且不允许热迁移到本机。

    live-migration允许用户指定block_migration参数,表示是否进行块迁移。有几种情况:

    • block_migration=True,但系统使用了共享存储,抛异常;
    • block_migration=False,但系统没有使用共享存储且虚拟机没有使用后端系统卷,抛异常;

    注意事项:

    需要配置计算节点的/etc/hosts文件,使相互之间能够用主机名访问。

    如果在virt driver层失败,虚拟机状态会重置为active,所以当调用live-migration后,但查询虚拟机发现没有发生迁移,且状态仍是active,则很有可能是在计算节点出现异常。

    在线迁移过程中,会有几秒左右的停顿现象,然后恢复正常。

    3.技术设计

    1). 系统配置

    修改 /etc/libvirt/libvirtd.conf:

    before : #listen_tls = 0

    after : listen_tls = 0

    before : #listen_tcp = 1

    after : listen_tcp = 1

    add: auth_tcp = "none"

    修改 /etc/init/libvirt-bin.conf

    before : exec /usr/sbin/libvirtd -d

    after : exec /usr/sbin/libvirtd -d –l

    修改 /etc/default/libvirt-bin

    before :libvirtd_opts=" -d"

    after :libvirtd_opts=" -d -l"

    重启服务:

    $ stop libvirt-bin && start libvirt-bin

    $ ps -ef | grep libvirt

    /etc/nova/nova.conf增加:

    live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE

    2). Web设计

    /openstack_dashboard/dashboards/admin/instances/view.py

    添加MigrateView方法,获取主机列表并过滤当前虚拟机所在的主机

    /openstack_dashboard/dashboards/admin/instances/workflow/migrate_instance.py

    获取前台传递的参数,调用server_migrate方法

  • 相关阅读:
    20162330 2016-2017-2《程序设计与数据结构》课程总结
    强化学习--Policy Gradient
    59. Spiral Matrix II
    54. Spiral Matrix(剑指offer 19)
    58. Length of Last Word
    c++ string split
    神经网络反向传播,通俗理解
    大话设计模式C++ 备忘录模式
    57. Insert Interval
    c++ sort
  • 原文地址:https://www.cnblogs.com/hengtianyun/p/3670693.html
Copyright © 2011-2022 走看看