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, 动态迁移
创建共享存储;
两台机器挂载共享存储(手工挂载; 使用资源池);
启动动态迁移;
创建迁移后的虚拟机配置文件;
重新定义虚拟机.
来源: http://www.bubuko.com/infodetail-3385113.html