当前位置 主页 > 网站技术 > 代码类 >

    KVM虚拟机实现在线热迁移的方法步骤(图文)

    栏目:代码类 时间:2019-10-31 18:05

    一、KVM虚拟机的迁移方式及需要注意的问题

    KVM虚拟机的迁移有两种方法:
    1、静态迁移(冷迁移):对于冷迁移,就是在虚拟机关闭状态下,将虚拟机的磁盘文件及.xml配置文件(这两个文件组成了一个虚拟机)复制到要迁移到的目标主机上,然后在目标主机上使用“virsh define *.xml”命令重新定义虚拟机即可。
    2、动态迁移(热迁移):对于热迁移,比较常用,通常是这台服务器上正在跑着一些业务,而这些业务又不允许中断,那么就需要使用热迁移了,这篇博文将详细写出热迁移的步骤。

    1、冷迁移

    通常我们存放虚拟机磁盘的目录都是挂在的一个nfs文件系统的磁盘,而这个磁盘通常是LVM文件系统。所以需要进行冷迁移时,只要在目标主机上挂载这个nfs文件系统,就可以看到要迁移的那个虚拟机的磁盘文件,通常以.qcow2或.raw结尾的,然后,只需将虚拟机的.xml配置文件发送到目标服务器上,然后重新定义一下即可通过“virsh list --all”命令查看到迁移过来的虚拟机。

    2、热迁移

    如果源宿主机和目的宿主机共享存储系统,则只需要通过网络发送客户机的 vCPU 执行状
    态、内存中的内容、虚机设备的状态到目的主机上。否则,还需要将客户机的磁盘存储发到目的主
    机上。共享存储系统指的是源和目的虚机的镜像文件目录是在一个共享的存储上的。

    在基于 共享存储系统 时,KVM 动态迁移的具体过程为:

    1、迁移开始时,客户机依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上。
    2、QEMU/KVM 会监控并记录下迁移过程中所有已被传输的内页的任何修改,并在所有内存页都传输完成后即开始传输在前面过程中内存页的更改内容。
    3、QEMU/KVM 会估计迁移过程中的传输速度,当剩余的内存数据量能够在一个可以设定的时间周期(默认 30 毫秒)内传输完成时,QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态。
    4、至此,KVM 的动态迁移操作就完成了。迁移后的客户机尽可能与迁移前一致,除非目的主机上缺少一些配置,比如网桥等。注意,当客户机中内存使用率非常大而且修改频繁时,内存中数据不断被修改的速度大于KVM能够传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。

    3、迁移的注意事项

    无论是冷迁移还是热迁移,注意事项大都差不多。

    迁移前目标服务器的要求如下:

    最好迁移的服务器cpu品牌一样; 64位只能在64位宿主机间迁移,32位可以迁移32位和64位宿主机; 宿主机中的虚拟机名字不能冲突; 目的宿主机和源宿主机软件配置尽可能的相同,如 有相同的桥接网卡,资源池等; 两台迁移的主机 cat /proc/cpuinfo |grep nx 的设置是相同的NX,全名为“No eXecute”,即“禁止运行”,是应用在CPU的一种技术,用作把存储器区域分隔为只供存储处理器指令集,或只供数据使用。任何使用NX技术的存储器,代表仅供数据使用,因此处理器的指令集并不能在这些区域存储。这种技术可防止大多数的缓冲溢出,即一些恶意程序,把自身的恶意指令集放在其他程序的数据存储区并运行,从而把整台计算机控制。

    小结:

    1、静态迁移

    拷贝镜像文件和虚拟机配置文件; 重新定义此虚拟机。
    2、动态迁移
    创建共享存储; 两台机器挂载共享存储(手工挂载;使用资源池); 启动动态迁移; 创建迁移后的虚拟机配置文件; 重新定义虚拟机。

    二、kvm虚拟机热迁移配置实例