libvirt虚拟机热迁移

简介: 验证不同迁移特性下的热迁移效率。

测试环境

使用物理机搭建的虚拟化系统,创建一台虚拟机,规格为64核心+64G内存+100G硬盘,对该虚拟机进行热迁移测试。

测试工具

虚拟机内安装stressapptest工具,用于对虚拟机的CPU和内存进行压力测试。
该工具命令行支持的参数有:

  • -M mbytes:测试内存的大小。
  • -s seconds:运行时长。
  • -m threads:运行的线程数量。

auto-converge功能测试

测试命令为:

virsh migrate instance-00000092 qemu+ssh://nova@173.20.6.3/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --auto-converge --auto-converge-initial 20 --auto-converge-increment 10

auto-converge功能支持配置以下参数:

  • auto-converge-initial:初始抑制CPU频率的比例。
  • auto-converge-increment:CPU频率抑制比例的增量。

进行两组测试。在虚拟机内运行stressapptest工具,测试以上两个参数取不同数值,对于热迁移的影响。

压力测试持续300秒

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。热迁移结果如下表:

- 第一次测试(ms) 第二次测试(ms) 第三次测试(ms) 迁移平均耗时(ms) CPU抑制比例
不启用 360623 377804 353191 363872 0
20+10 377880 367238 352691 365936 20
30+15 367804 370674 369798 369425 30
50+15 375558 353734 366094 365128 50

以上测试,全部在stressapptest进程结束后才开始抑制CPU。

压力测试持续1800秒

虚拟机内部执行stressapptest -s 1800 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行1800秒。热迁移结果如下表:

- 迁移平均耗时(ms) CPU抑制比例
不启用 1880362 0
20+10 1866481 99
30+15 1870586 99
50+15 1856928 99

以上测试,全部在stressapptest进程结束前就开始抑制CPU。

post-copy功能测试

使用virsh命令行迁移虚拟机,post-copy功能需要通过两步操作完成:

  1. 热迁移时,指定--postcopy参数用于启用post-copy。
virsh migrate instance-00000092 qemu+ssh://nova@173.20.6.3/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --postcopy
  1. 此时热迁移处于pre-copy模式,需要通过virsh migrate-postcopy instance-00000092切换到post-copy模式。

进行两组测试。在虚拟机内运行stressapptest工具,分别测试启用、禁用post-copy对于热迁移的影响。

压力测试持续300秒

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。热迁移结果如下:

  • 不开启post-copy模式,热迁移需要363872毫秒。
  • 开启并切换到post-copy模式,热迁移需要110721毫秒。

压力测试持续1800秒

虚拟机内部执行stressapptest -s 1800 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行1800秒。热迁移结果如下:

  • 不开启post-copy模式,热迁移需要1880362毫秒。
  • 开启并切换到post-copy模式,热迁移需要123528毫秒。

异常情况测试

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。
切换到post-copy模式,迁移过程中kill源节点虚拟机qemu进程。热迁移进程异常退出,目标节点虚拟机被删除,源节点虚拟机关机。源节点虚拟机开机后运行正常。

限制说明

post-copy模式和tunnelled模式不能同时使用,具体原因可参考这篇文章

xbzrle功能测试

不开启auto-converge和post-copy模式

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。
源节点打开xbzrle:

virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_capability xbzrle on"
virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_cache_size 64m"

迁移虚拟机到目标节点:

virsh migrate instance-00000092 qemu+ssh://nova@173.20.6.3/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed

分别测试xbzrle cache大小为64M、2G、16G、64G,对于热迁移效率的影响,结果如下:

- 迁移耗时(ms) xbzrle transferred(kbytes)
不启用xbzrle 363872 0
64M 375216 16459
2G 377491 572021
16G 391000 4793304
64G 395465 8720814

测试中发现,在第3轮拷贝内存时,才切换到xbzrle模式。

开启auto-converge模式

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。
源节点打开xbzrle:

virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_capability xbzrle on"
virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_cache_size 64m"

迁移虚拟机到目标节点,启用auto-converge模式,参数配置为20、10:

virsh migrate instance-00000092 qemu+ssh://nova@173.20.6.3/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --auto-converge --auto-converge-initial 20 --auto-converge-increment 10

分别测试xbzrle cache大小为64M、2G、16G、64G,对于热迁移效率的影响,结果如下:

- 迁移耗时(ms) xbzrle transferred(kbytes)
不启用xbzrle 363872 0
64M 388984 22104
2G 396148 594680
16G 385768 1697644
64G 391059 1614807

开启post-copy模式

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。
源节点打开xbzrle:

virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_capability xbzrle on"
virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_cache_size 64m"

迁移虚拟机到目标节点,启用并切换到post-copy模式:

virsh migrate instance-00000092 qemu+ssh://nova@173.20.6.3/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --postcopy
virsh migrate-postcopy instance-00000092

分别测试xbzrle cache大小为64M、2G、16G、64G,对于热迁移效率的影响,结果如下:

- 迁移耗时(ms) xbzrle transferred(kbytes)
不启用xbzrle 363872 0
64M 115689 0
2G 113653 0
16G 106635 0
64G 109059 0

xbzrle transferred均为0 kbytes,证明未使用到xbzrle。

测试结论

本次测试过程中,未出现stressapptest进程崩溃,也未出现虚拟机崩溃、重启,测试过程未出现异常情况。

  • post-copy模式比auto-converge模式的迁移效率高。
  • auto-converge模式下,影响热迁移效率的因素有多种。增大auto-converge-initial、auto-converge-increment参数,能够尽早的抑制CPU频率,缩短迁移时间。除此之外,虚拟机的负载大小也影响热迁移效率。
  • 对于虚拟机内存负载较高的场景,xbzrle模式无法有效提升热迁移的效率。

OpenStack nova对应配置说明

[libvirt]
live_migration_tunnelled=false
live_migration_permit_post_copy=true
live_migration_permit_auto_converge=false

live_migration_permit_post_copy和live_migration_permit_auto_converge不能同时启用。

live_migration_tunnelled

配置为true,则使用管道模式进行热迁移。

live_migration_permit_post_copy

配置为true,则启用post-copy模式。
迁移过程中,nova会计算是否需要切换到post-copy模式。计算规则为:

内存拷贝进度 = (上一轮待拷贝内存总量 - 本轮待拷贝内存总量) / 上一轮待拷贝内存总量

若内存拷贝进度小于10%,则切换到post-copy模式。
热迁移过程中也可以通过执行nova live-migration-force-complete命令手动切换到post-copy模式。

live_migration_permit_auto_converge

配置为true,则使用auto-converge模式。nova不支持配置auto-converge-initial和auto-converge-increment,libvirt中对应配置的默认值为20和10。

相关文章
|
4月前
|
存储 网络协议 虚拟化
如何操作VMware ESXi虚拟机的迁移?
如何操作VMware ESXi虚拟机的迁移?
187 1
|
1月前
|
存储 KVM 虚拟化
倚天产品介绍|倚天虚拟化:虚拟机热迁移特性介绍
热迁移分为热迁移和冷迁移,冷迁移过程中有一段明显的时间VM的服务不可用,而热迁移的服务的服务暂停时间非常短。热迁移过程中无需关闭或者长时间暂停VM,VM保持正常运行,只有在热迁移临近结束时有一个非常短暂的停机切换时间。热迁移可保证了VM服务的可用性,提升业务的连续性和用户体验。
|
3月前
|
虚拟化
VMware使用 - 虚拟机迁移或删除
VMware使用 - 虚拟机迁移或删除
28 0
|
9月前
|
存储 负载均衡 监控
Linux-虚拟机迁移步骤
虚拟机迁移步骤
247 0
|
4月前
|
存储 测试技术
虚拟机热迁移性能优化方案
此次在CLK2023分享的课题,其中的大部分内容之前已通过视频公开课的方式在网络上分享过,PPT中的内容写得更详细,并且新增了部分内容。
90 0
|
7月前
|
存储 KVM 虚拟化
倚天虚拟化:虚拟机热迁移特性介绍
热迁移分为热迁移和冷迁移,冷迁移过程中有一段明显的时间VM的服务不可用,而热迁移的服务的服务暂停时间非常短。热迁移过程中无需关闭或者长时间暂停VM,VM保持正常运行,只有在热迁移临近结束时有一个非常短暂的停机切换时间。热迁移可保证了VM服务的可用性,提升业务的连续性和用户体验。
|
10月前
|
存储 监控 网络安全
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
834 0
|
10月前
|
存储 XML 缓存
关于云平台虚拟机核心组件 libvirt 热迁移流程及关键参数介绍 | 龙蜥技术
一键了解libvirt虚拟机热迁移整体流程,迁移方式及关键迁移参数作用及影响。
|
11月前
|
算法 云计算 虚拟化
硬件加速器IAA的最佳实践解读和libvirt虚拟机热迁移流程简介| 第80-81期
本周二,了解 IAA 加速器的原理及其应用&云上最佳实践;libvirt 虚拟机热迁移整体流程等。

热门文章

最新文章