1详细阐述了虚拟机热迁移和冷迁移的流程、影响热迁移速度的因素(如带宽、脏页速率)以及相关的查看和配置方法,还提到了华为FusionSphere OpenStack中针对热迁移的一些特殊设置和操作。
网页2时间是:2023-08-13
虚拟机迁移一共有两种类型,分别是冷迁移和热迁移,冷迁移需要在虚拟机关机状态下进行,所以冷迁移会中断业务;热迁移支持虚拟机在开启状态下进行迁移,迁移过程中用户基本无感知(非绝对)。
冷迁移流程大致可以分为两个步骤,一是迁移,二是确认,冷迁移和resize是一样的流程,大致流程如下(以共享存储为例,如果是本地磁盘,则增加拷贝磁盘到目标主机的步骤):
1)对虚拟机的状态进行校验,只有虚拟机为ACTIVE和STOP状态才能进行冷迁移。
2)选择目标节点,对目标节点的资源进行预占
3)源主机停止虚拟机,断开与存储的连接,拷贝虚拟机配置文件
4)目标主机挂载存储,创建虚拟机
5)迁移成功后,释放源主机上的资源
6)(可选)如在Active状态下进行了冷迁移,迁移完成后会更新虚拟机状态为Active
冷迁移的约束:
1)VM 必须在迁移前处于 ACTIVE 或 STOPPED 状态
2)计算节点必须配置SSH互信并相互连接
虚拟机热迁移,是将一个运行状态的虚拟机,在不影响其正常运行状态的前提下,将其迁移到另一个物理主机上运行,其大致流程如下(以共享磁盘为例):
1)对虚拟机的状态进行校验,虚拟机为ACTIVE状态才能进行热迁移。
2)选择目标节点,对目标节点的资源进行预占
3)迁移虚拟机
迁移前准备:目标主机检查资源是否具备迁移条件(网络、存储、镜像、CPU topo等)
迁移中:
源主机:将内存信息拷贝到目标主机,达到一定条件后触发事件,暂停虚拟机。
目标主机:在源主机拷贝数据的过程中启动虚拟机(暂停状态),待源主机停止虚拟机后,目标主机恢复虚拟机。
迁移后:
目标主机:获取虚拟机的XML信息,创建虚拟机qemu路径,生成虚拟机XML文件
源主机:停止虚拟机,断开虚拟机的网络,删除源主机的虚拟机文件。
Tips:在一般情况下,虚拟机热迁移用户无感知,但在一些比较敏感的情况下,热迁移时会有IP地址冲突、NTP时间偏移等告警出现,虽说可能是毫秒甚至是微秒级别的暂停,有些程序依旧能感知到。
二、影响虚拟机热迁移的参数
- 带宽
带宽对热迁移至关重要,很大程度上决定了热迁移的速度,云环境的计算节点至少具备10GB及以上的迁移带宽,在vmware的解决方案中,可以给热迁移单独规划一个网络平面,提高迁移的可靠性,在华为FusionSphere OpenStack运营商的解决方案中,热迁移使用管理平面网络,通常为Physnet1。
华为FusionSphere OpenStack可以为热迁移进程进行限速,避免由于热迁移占满带宽影响其它虚拟机业务。
配置路径1:cps > 配置 > openstack > nova,配置热迁移带宽,默认500M,设置为0即为不限制
配置路径2:cps > 配置 > 多网元管理 > nova
如果在迁移过程中发现速率远远低于物理带宽,可以登录到CPS查看相关配置,或者排查是否有网络丢包。
查看迁移速率登录到源主机
virsh domjobinfo
[root@openstack-con03 ~]#virsh domjobinfo 323
Job type: Unbounded
Operation: Outgoing migration
Time elapsed: 139135 ms
Data processed: 15.146 GiB
Data remaining: 6.812 MiB
Data total: 4.016 GiB
Memory processed: 15.146GiB
Memory remaining: 6.812 MiB(剩余脏页内存)
Memory total: 4.016 GiB(总内存)
Memory bandwidth: 107.902MiB/s(迁移速率)
Dirty rate: 34398 pages/s
Iteration: 2247
Constant pages: 950532
Normal pages: 3960697
Normal data: 15.109 GiB
Expected downtime:1240 ms
Setup time: 50 ms
查看带宽限制的两种方法
在CPS界面查看
查看nova-compute配置文件登录到任意计算节点
cat nova-compute.conf | grep live_migration_bandwidth
查看丢包:ping测试 - 脏页速率
首先热迁移过程中虚拟机是不停机的,所以会不断有业务程序产生新的数据,这部分数据我们称为脏页数据,脏页数据和网络带宽对热迁移的速度起到了决定性的作用。
用以下命令查看脏页速率,second建议设置为1,检查3次。登录源主机
virsh getdirtyrate
如果脏页速率大于迁移带宽,那么迁移将无法完成,按照我们的经验,在10GB环境下,如果脏页速率大于400Mb/s,不建议热迁移,建议冷迁移。
当脏页速率大于迁移带宽且迁移时间过长时,可能会造成以下影响:
1)长时间占用主机资源,虚拟机长时间处于中间态。
2)如果开启了降频技术,由于网络带宽不足,长期降频会导致虚拟机出现卡顿和ping延迟现象。查看自动降频是否开启,如果有则表示开启
cat nova-compute.conf | grep VIR_MIGRATE_AUTO_CONVERGE
华为FusionSphere OpenStack支持设置热迁移超时时间,可以根据业务需求进行设置,设置入口与带宽限制入口一致,超时后迁移任务失败退出。
也可以自行取消热迁移任务,有两种方法:方法1:登录任意节点,导入环境变量
查询迁移任务ID
nova migration-list | grep <虚拟机uuid>
使用nova命令取消迁移任务
nova live-migration-abort <虚拟机uuid> <迁移任务ID>
方法2:登录源主机后台,取消任务
virsh domjobabort <虚拟机uuid>
}
网页2同样围绕虚拟机迁移展开,内容与网页1有较多重复,都着重强调了带宽和脏页速率对热迁移速度的影响,以及相关的查看、配置和应对措施。
网页3时间是:2023-08-13
虚拟化平台中的热迁移技术原理及实现机制详解 知乎 (zhihu.com)
虚拟化平台中的热迁移技术是一种允许正在运行的虚拟机从一台物理机移动到另一台物理机的技术,它通过将虚拟机的运行状态(包括CPU状态、内存数据、设备状态等)从源主机传输到目标主机,并在目标主机上恢复运行,从而实现虚拟机的无缝迁移,在这个过程中,为了保证数据的一致性和完整性,需要采用一些特殊的技术和算法来处理内存数据的传输和同步,常见的热迁移技术包括预拷贝(Pre-copy)、后拷贝(Post-copy)和混合拷贝等,预拷贝是最常用的一种方式,它在迁移开始前先复制一份虚拟机的内存数据到目标主机,然后在迁移过程中不断更新这份数据,直到满足一定的条件后才进行最后的切换,这种方式可以减少数据传输量和迁移时间,但也需要消耗更多的内存资源,后拷贝则是在迁移完成后再复制内存数据,这种方式虽然简单,但可能会导致数据丢失或不一致,混合拷贝则是结合了预拷贝和后拷贝的优点,先进行一部分预拷贝,然后再进行后拷贝,以平衡性能和资源消耗,还有一些其他的优化技术可以提高热迁移的效率,例如压缩算法、增量更新等,这些技术可以根据具体的应用场景和需求进行选择和组合,虚拟化平台中的热迁移技术是一个复杂而重要的领域,它涉及到多个方面的知识和技术,包括操作系统、网络、存储、虚拟化等,只有深入理解这些技术和原理,才能更好地应用和发展虚拟化技术。
预拷贝过程又分为三个阶段:
- 迭代预拷贝阶段:在这个阶段,源主机不断地将内存页面复制到目标主机,同时记录哪些页面被修改过(即脏页),这个过程会持续多次迭代,每次迭代都会复制所有未被修改过的页面,直到满足一定的停止条件为止。
- 停止与切换阶段:当迭代预拷贝阶段完成后,源主机上的虚拟机会被暂停,此时最后一次复制所有未被修改过的页面到目标主机,并记录下当前的脏页信息,源主机将CPU状态、设备状态等信息发送给目标主机,目标主机根据这些信息恢复虚拟机的运行状态,将虚拟机的网络连接从源主机切换到目标主机,完成整个热迁移过程。
- 后拷贝阶段(可选):在切换完成后,如果还有少量脏页没有传输完成,目标主机可以直接从源主机读取这些脏页的数据,而不需要等待它们被完全复制过来,这样可以进一步减少停机时间和提高迁移效率,这种方式也存在一定的风险,因为如果在后拷贝阶段发生错误,可能会导致数据不一致或丢失,需要根据实际情况谨慎选择是否启用后拷贝功能。
为了提高热迁移的性能和效率,可以采取以下几种优化措施: - 增加网络带宽:如前面所述,网络带宽是影响热迁移速度的重要因素之一,通过增加网络带宽或使用高速网络技术(如InfiniBand),可以显著提高数据传输速度,从而加快热迁移进程。
- 优化内存使用:合理配置虚拟机的内存大小和交换空间,避免内存不足导致频繁的换入换出操作,还可以采用内存压缩技术来减少需要传输的数据量。
- 调整脏页阈值:适当调整脏页阈值可以平衡预拷贝阶段的迭代次数和停机时间,如果脏页阈值设置得过高,会导致预拷贝阶段迭代次数过多,延长迁移时间;如果设置得过低,则会增加停机时间,需要根据实际环境和需求找到一个合适的平衡点。
- 使用SSD存储:相比传统的机械硬盘,SSD具有更高的读写速度和更低的延迟,将虚拟机的磁盘镜像存储在SSD上可以显著提高I/O性能,减少数据复制时间。
- 并行化处理:利用多线程或多进程技术对数据复制和状态传输进行并行化处理,可以充分利用硬件资源,提高迁移速度,在预拷贝阶段可以同时复制多个内存页面到目标主机。
- 压缩数据传输:通过对传输的数据进行压缩,可以减少网络带宽的占用,提高数据传输效率,需要注意的是压缩和解压缩操作也会消耗一定的CPU资源,因此需要权衡利弊后决定是否启用压缩功能。
- 增量更新:只传输自上次检查点以来发生变化的数据块,而不是整个内存或磁盘映像,这可以大大减少需要传输的数据量,尤其是在内存使用量大且变化频繁的情况下效果更为明显,但实现起来相对复杂,需要维护额外的元数据来跟踪数据块的变化情况。
- 缓存机制:在源主机和目标主机之间建立缓存机制,临时存储已经复制但尚未验证的数据,这样可以避免重复传输相同的数据,提高整体效率,还可以利用缓存来平滑网络波动带来的影响,保证数据传输的稳定性。
上述优化措施并非孤立存在,而是可以相互结合使用的,既可以增加网络带宽又可以使用SSD存储来进一步提高性能;或者同时采用压缩算法和增量更新来减少数据传输量等等,具体如何选择取决于具体的应用场景、硬件条件以及性能要求等因素。
虚拟化平台中的热迁移技术是一个复杂而重要的领域,它涉及到多个方面的知识和技术。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/64391.html