From 0261c8ff25ca6a146cfb8f55ccc3fc7700a30770 Mon Sep 17 00:00:00 2001 From: huangchengfei Date: Tue, 3 Jun 2025 21:21:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=83=AD=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E8=99=9A=E6=8B=9F=E6=9C=BA.md=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\350\231\232\346\213\237\346\234\272.md" | 102 +++++++++--------- 1 file changed, 53 insertions(+), 49 deletions(-) diff --git "a/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" "b/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" index 8e3f73016..acce3ea37 100644 --- "a/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" +++ "b/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" @@ -1,10 +1,12 @@ # 热迁移虚拟机 + -- [热迁移虚拟机](#热迁移虚拟机) - - [总体介绍](#总体介绍) - - [应用场景](#应用场景) - - [注意事项和约束限制](#注意事项和约束限制) - - [热迁移操作](#热迁移操作) + +- [热迁移虚拟机](#热迁移虚拟机) + - [总体介绍](#总体介绍) + - [应用场景](#应用场景) + - [注意事项和约束限制](#注意事项和约束限制) + - [热迁移操作](#热迁移操作) @@ -18,41 +20,41 @@ 共享存储和非共享存储热迁移的共同应用场景有: -- 当物理机故障或者负载过重时,可以将运行的虚拟机迁移到另一台物理机上,以避免业务中断,保证业务的正常运行。 -- 当多数的物理机负载过轻时,可以将虚拟机迁移整合,以减少物理机数量,提高资源的利用率。 -- 当物理服务器硬件设备成为瓶颈,比如CPU、内存、硬盘等,需要更换性能更好的硬件,或者需要增加设备,但是又不能关闭虚拟机或者停止业务。 -- 服务器软件升级,比如虚拟化平台升级,就可以把虚拟机从旧版本虚拟化平台热迁移到新版本虚拟化平台。 +- 当物理机故障或者负载过重时,可以将运行的虚拟机迁移到另一台物理机上,以避免业务中断,保证业务的正常运行。 +- 当多数的物理机负载过轻时,可以将虚拟机迁移整合,以减少物理机数量,提高资源的利用率。 +- 当物理服务器硬件设备成为瓶颈,比如CPU、内存、硬盘等,需要更换性能更好的硬件,或者需要增加设备,但是又不能关闭虚拟机或者停止业务。 +- 服务器软件升级,比如虚拟化平台升级,就可以把虚拟机从旧版本虚拟化平台热迁移到新版本虚拟化平台。 对于非共享存储热迁移,还可以应用在如下场景: -- 当物理机故障存储空间不足,需要将运行的虚拟机迁移到另一台物理机上,可以避免业务中断,保证业务的正常运行。 -- 当物理机存储设备老化,性能不能支撑当前业务数据处理,成为系统性能的瓶颈,需要更换性能更强的存储,但是又不能关闭虚拟机或者停止虚拟机,这需要将运行的虚拟机迁移到一个具有更好性能的物理机上。 +- 当物理机故障存储空间不足,需要将运行的虚拟机迁移到另一台物理机上,可以避免业务中断,保证业务的正常运行。 +- 当物理机存储设备老化,性能不能支撑当前业务数据处理,成为系统性能的瓶颈,需要更换性能更强的存储,但是又不能关闭虚拟机或者停止虚拟机,这需要将运行的虚拟机迁移到一个具有更好性能的物理机上。 ### 注意事项和约束限制 -- 热迁移过程中,需要保证网络状态良好。如果发生网络中断,热迁移会暂停,直到网络恢复后才会继续,当发生超时,热迁移会失败。 -- 迁移过程中,不允许对虚拟机进行生命周期和管理虚拟机硬件设备等操作。 -- 虚拟机正在迁移的过程中,应尽可能保证源端、目的端服务器不被意外下电或重启,否则会导致热迁移失败,甚至可能导致虚拟机被下电。 -- 虚拟机正在迁移的过程中,不允许对虚拟机做关机、重启或恢复操作,否则可能会导致热迁移失败,当执行ACPI方式重启时,再执行热迁移会导致虚拟机关闭。 +- 热迁移过程中,需要保证网络状态良好。如果发生网络中断,热迁移会暂停,直到网络恢复后才会继续,当发生超时,热迁移会失败。 +- 迁移过程中,不允许对虚拟机进行生命周期和管理虚拟机硬件设备等操作。 +- 虚拟机正在迁移的过程中,应尽可能保证源端、目的端服务器不被意外下电或重启,否则会导致热迁移失败,甚至可能导致虚拟机被下电。 +- 虚拟机正在迁移的过程中,不允许对虚拟机做关机、重启或恢复操作,否则可能会导致热迁移失败,当执行ACPI方式重启时,再执行热迁移会导致虚拟机关闭。 -- 只支持同构热迁移,即源端和目的端CPU型号需要相同。 -- 跨业务网段虚拟机迁移可以成功,但是到目的端后会出现网络异常,为了防止该情况发生,需要用户保证迁移业务网段一致。 -- 如果源端虚拟机vCPU数大于目的端的物理机CPU核数,则迁移后将会影响到虚拟机的性能,应保证目的端物理机CPU核数大于等于源端虚拟机vCPU数。 +- 只支持同构热迁移,即源端和目的端CPU型号需要相同。 +- 跨业务网段虚拟机迁移可以成功,但是到目的端后会出现网络异常,为了防止该情况发生,需要用户保证迁移业务网段一致。 +- 如果源端虚拟机vCPU数大于目的端的物理机CPU核数,则迁移后将会影响到虚拟机的性能,应保证目的端物理机CPU核数大于等于源端虚拟机vCPU数。 非共享存储热迁移过程中的额外注意事项: -- 不支持迁移源端和目的端为同一个磁盘镜像文件的迁移,用户需要对该类迁移进行特殊处理,提防覆盖写坏数据而导致镜像损坏。 -- 不支持对共享磁盘的迁移,用户需要对该类迁移进行防呆处理。 -- 迁移的目的端镜像只支持文件,不支持裸设备,用户需要对目的端是裸设备的迁移进行防呆处理。 -- 目的端需要创建与源端大小、数量相同的磁盘镜像,否则迁移失败。 -- 混合迁移场景,需要传入迁移的磁盘,不能包括共享和只读的磁盘。 +- 不支持迁移源端和目的端为同一个磁盘镜像文件的迁移,用户需要对该类迁移进行特殊处理,提防覆盖写坏数据而导致镜像损坏。 +- 不支持对共享磁盘的迁移,用户需要对该类迁移进行防呆处理。 +- 迁移的目的端镜像只支持文件,不支持裸设备,用户需要对目的端是裸设备的迁移进行防呆处理。 +- 目的端需要创建与源端大小、数量相同的磁盘镜像,否则迁移失败。 +- 混合迁移场景,需要传入迁移的磁盘,不能包括共享和只读的磁盘。 ## 热迁移操作 ### 前提条件 -- 进行热迁移之前要确保源端和目的端主机之间的网络是互通的,并且源端和目的获得资源权限是对等的,即两端同时能够访问到相同的存储资源和网络资源。 -- 在执行虚拟机热迁移前应当对虚拟机进行健康检查,并确保目的端主机有足够的CPU、内存和存储资源。 +- 进行热迁移之前要确保源端和目的端主机之间的网络是互通的,并且源端和目的获得资源权限是对等的,即两端同时能够访问到相同的存储资源和网络资源。 +- 在执行虚拟机热迁移前应当对虚拟机进行健康检查,并确保目的端主机有足够的CPU、内存和存储资源。 ### 热迁移脏页率预测(可选) @@ -62,13 +64,13 @@ 例如,指定名为 openEulerVM 的虚拟机,计算时间为1s: -``` +```bash virsh qemu-monitor-command openEulerVM '{"execute":"calc-dirty-rate", "arguments": {"calc-time": 1}}' ``` 间隔1s后,查询脏页变化速率: -``` +```bash virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' ``` @@ -78,7 +80,7 @@ virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' 例如,指定名为 openEulerVM 的虚拟机最大停机时间为500ms: -``` +```bash # virsh migrate-setmaxdowntime openEulerVM 500 ``` @@ -86,16 +88,17 @@ virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' 例如,指定名为 openEulerVM 的虚拟机热迁带宽为500Mbps: -``` +```bash # virsh migrate-setspeed openEulerVM --bandwidth 500 ``` 用户可以使用migrate-getspeed来查询虚拟机热迁移过程中的最大带宽。 -``` +```bash # virsh migrate-getspeed openEulerVM 500 ``` + 用户可以使用migrate-set-parameters来设置热迁移时相关的参数,与热迁移压缩的参数如下所示: 1. compress-level: 压缩级别,默认:1 @@ -106,12 +109,13 @@ virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' 例如,指定名为 openEulerVM 的虚拟机热迁算法为zstd,其余参数采用默认设置。 -``` +```bash # virsh qemu-monitor-command openeulerVM '{ "execute": "migrate-set-parameters", "arguments": {"compress-method": "zstd"}}' ``` 用户可以使用query-migrate-parameters来查询热迁移时相关的参数。 -``` + +```bash # virsh qemu-monitor-command openeulerVM '{ "execute": "query-migrate-parameters"}' --pretty { @@ -145,7 +149,7 @@ virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' ### 热迁移操作(共享存储场景) -1. 确认是否为共享存储。 +1. 确认是否为共享存储。 ``` # virsh domblklist @@ -157,7 +161,7 @@ virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' 首先,使用virsh domblklist命令查询虚拟机的存储设备信息,例如上面的查询结果显示虚拟机配置有2个存储设备:sda盘和sdb盘,然后再分别查询一下这两个设备对应后端存储是本地存储还是远端存储,如果虚拟机的所有存储设备都在远端共享存储之上,则说明该虚拟机为共享存储虚拟机,否则为非共享存储虚拟机。 -2. 执行如下命令,进行虚拟机热迁移。 +2. 执行如下命令,进行虚拟机热迁移。 例如,将虚拟机 openEulerVM 迁移到目的主机上使用virsh migrate命令。 @@ -177,15 +181,15 @@ virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' --timeout选项会指定一个热迁移超时时间,热迁移超过指定时间后会强制挂起虚拟机让热迁移得以收敛。 -3. 热迁移完成后命令返回,虚拟机在目的端主机正常运行。 +3. 热迁移完成后命令返回,虚拟机在目的端主机正常运行。 ### 热迁移操作(非共享存储场景) -1. 首先,先查询虚拟机存储设备列表,确保虚拟机使用的是非共享存储。 +1. 首先,先查询虚拟机存储设备列表,确保虚拟机使用的是非共享存储。 例如,通过virsh domblklist查询到准备迁移的虚拟机有一个qcow2格式的磁盘sda,sda的xml配置为: - ``` + ```xml @@ -200,44 +204,44 @@ virsh qemu-monitor-command openEulerVM '{"execute":"query-dirty-rate"}' # qemu-img create -f qcow2 /mnt/sdb/openeuler/openEulerVM.qcow2 20G ``` -2. 在源端使用virsh migrate命令来执行热迁移,迁移的时候会将存储也一并迁移到目的端。 +2. 在源端使用virsh migrate命令来执行热迁移,迁移的时候会将存储也一并迁移到目的端。 ``` # virsh migrate --live --unsafe --copy-storage-all --migrate-disks sda \ openEulerVM qemu+ssh:///system ``` -3. 热迁移完成后命令返回,虚拟机在目的端主机行正常运行,存储设备也被迁移到目的主机上。 +3. 热迁移完成后命令返回,虚拟机在目的端主机行正常运行,存储设备也被迁移到目的主机上。 ### 热迁移操作(加密传输) 1. 简介 -​ 为了能够更好的对虚拟机热迁移过程中数据的加密,openEuler提供了使用TLS对迁移数据进行加密的特性。几乎QEMU中所有的网络服务都能够使用TLS对会话数据进行加密操作,同时也可以使用X509证书对客户端进行简单的身份认证。 + 为了能够更好的对虚拟机热迁移过程中数据的加密,openEuler提供了使用TLS对迁移数据进行加密的特性。几乎QEMU中所有的网络服务都能够使用TLS对会话数据进行加密操作,同时也可以使用X509证书对客户端进行简单的身份认证。 2. 应用场景 -​ 典型应用场景为要求热迁移过程中虚拟机数据在源端和目的端进行传输时保证数据的安全性。 + 典型应用场景为要求热迁移过程中虚拟机数据在源端和目的端进行传输时保证数据的安全性。 3. 注意事项 -​ 在使用TLS对虚拟机进行热迁移前,需要申请证书,然后在源端和目的端分别设置证书。使用TLS功能前需要打开对端认证配置项,需在/etc/libvirt/qemu.conf文件中设置migrate_tls_x509_verify = 1。 + 在使用TLS对虚拟机进行热迁移前,需要申请证书,然后在源端和目的端分别设置证书。使用TLS功能前需要打开对端认证配置项,需在/etc/libvirt/qemu.conf文件中设置migrate_tls_x509_verify = 1。 -​ 单通道TLS热迁移的业务中断时长、迁移时长会有明显增长,迁移带宽上限100~200MB/s,可能导致迁移失败。 + 单通道TLS热迁移的业务中断时长、迁移时长会有明显增长,迁移带宽上限100~200MB/s,可能导致迁移失败。 -​ 支持使用multiFd进行多通道TLS迁移,但会增加CPU开销(多开2个迁移线程),可能影响虚拟机运行;建议通过设置热迁移线程CPU亲和性将热迁移线程享受的CPU资源与虚拟机进程绑定的CPU资源隔离,迁移每台虚拟机建议绑定2个CPU。 + 支持使用multiFd进行多通道TLS迁移,但会增加CPU开销(多开2个迁移线程),可能影响虚拟机运行;建议通过设置热迁移线程CPU亲和性将热迁移线程享受的CPU资源与虚拟机进程绑定的CPU资源隔离,迁移每台虚拟机建议绑定2个CPU。 4. 使用方法 单通道热迁移加密传输命令 -``` +```bash virsh migrate --live --unsafe --tls --domain openEulerVM --desturi qemu+tcp:///system --migrateuri tcp:// ``` 多通道热迁移加密传输命令 -``` +```bash virsh migrate --live --unsafe --parallel --tls --domain openEulerVM --desturi qemu+tcp:///system --migrateuri tcp:// ``` @@ -245,15 +249,15 @@ virsh migrate --live --unsafe --parallel --tls --domain openEulerVM --desturi qe 1. 简介 -​ 为了在特定情况下提升迁移性能,需要提供设置热迁移线程CPU亲和性的功能。在默认情况下,热迁移线程与虚拟机进程共享CPU资源,通过该功能,用户可以将热迁移线程运行的CPU资源设置到虚拟机进程绑定的CPU范围之外。 + 为了在特定情况下提升迁移性能,需要提供设置热迁移线程CPU亲和性的功能。在默认情况下,热迁移线程与虚拟机进程共享CPU资源,通过该功能,用户可以将热迁移线程运行的CPU资源设置到虚拟机进程绑定的CPU范围之外。 2. 应用场景 -​ 典型应用场景为要求热迁移过程中可以控制迁移线程绑定的CPU,防止热迁移过程中因竞争CPU资源而对其他业务造成影响。 + 典型应用场景为要求热迁移过程中可以控制迁移线程绑定的CPU,防止热迁移过程中因竞争CPU资源而对其他业务造成影响。 3. 注意事项 -​ 当前迁移绑核需要运行对应的脚本来设置迁移绑核的参数。 + 当前迁移绑核需要运行对应的脚本来设置迁移绑核的参数。 4. 使用方法 -- Gitee From db30c5b64e9dc3ffa035d3df6d3bdcb4c14396d4 Mon Sep 17 00:00:00 2001 From: Chengfei Huang Date: Mon, 2 Jun 2025 22:46:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0KAE=E7=9B=B4=E9=80=9A?= =?UTF-8?q?=E7=83=AD=E8=BF=81=E7=A7=BB=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\350\231\232\346\213\237\346\234\272.md" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git "a/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" "b/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" index acce3ea37..108c607d7 100644 --- "a/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" +++ "b/docs/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" @@ -40,6 +40,7 @@ - 只支持同构热迁移,即源端和目的端CPU型号需要相同。 - 跨业务网段虚拟机迁移可以成功,但是到目的端后会出现网络异常,为了防止该情况发生,需要用户保证迁移业务网段一致。 - 如果源端虚拟机vCPU数大于目的端的物理机CPU核数,则迁移后将会影响到虚拟机的性能,应保证目的端物理机CPU核数大于等于源端虚拟机vCPU数。 +- 只支持KAE直通热迁移,不支持其他直通设备热迁移。 非共享存储热迁移过程中的额外注意事项: @@ -355,3 +356,32 @@ if conn is not None: 4. 使用方法 内核支持KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE配置即可。 + +### 热迁移虚拟机(KAE直通) + +1. 简介 + + KAE是基于鲲鹏920新型号处理器提供的硬件加速解决方案,包括HPRE、SEC、ZIP设备,可用于加解密和压缩解压缩,能够显著降低处理器消耗,提高处理器效率。KAE设备支持VF直通虚拟机进行热迁移,使能VF并直通到虚拟机后,可通过热迁移功能在业务不感知的情况下将虚拟机迁移到另一台服务器上。使用该功能需要在xml中将KAE直通设备的migration参数配置为“on”。 + +2. 应用场景 + + 虚拟机内需要使用KAE设备并且有热迁移需求的场景。 + +3. 注意事项 + + 只支持KAE直通热迁移,不支持其他直通设备热迁移。 + + 直通的KAE设备均位于同一numa节点时,热迁移性能最佳。 + +4. 使用方法 + + 在xml中,将KAE直通设备的migration参数配置为“on”即可。 + + ```xml + + + +
+ + + ``` -- Gitee