16.14. 为 NBD 传输模式增加 AIO 大小和缓冲区计数
当您使用 Migration Toolkit for Virtualization (MTV)同步输入/输出(AIO)缓冲时,您可以更改 Network Block Device (NBD)传输网络文件复制(NFC)参数来提高迁移性能。
使用 AIO 缓冲仅适用于冷迁移用例。
在初始化温迁移前禁用 AIO 设置。如需了解更多详细信息,请参阅禁用 AIO 缓冲配置。
16.14.1. 密钥发现 复制链接链接已复制到粘贴板!
通过在带有以下值的单一 ESXi 主机上迁移多个(10)虚拟机(VM)来实现最佳迁移性能:
-
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 -
vixDiskLib.nfcAio.Session.BufCount=4
-
在使用 AIO 缓冲设置时请注意以下改进(同步缓冲数):
- 迁移时间缩短为 31.1%,从 0:24:32 缩短为 0:16:54。
- 读取率从 347.83 MB/s 增加到 504.93 MB/s。
- 在单一虚拟机上使用 AIO 缓冲设置时,无法显著改进。
- 当使用来自多个主机的多个虚拟机的 AIO 缓冲设置时,无法显著改进。
16.14.2. 支持 AIO 大小和缓冲区计数的主要要求 复制链接链接已复制到粘贴板!
支持基于使用以下版本执行的测试:
- vSphere 7.0.3
- VDDK 7.0.3
16.14.3. 启用并配置 AIO 缓冲 复制链接链接已复制到粘贴板!
您可以启用并配置与 Migration Toolkit for Virtualization (MTV)的同步输入/输出(AIO)缓冲。
流程
确保
openshift-mtv命名空间中的forklift-controllerpod 支持 AIO 缓冲值。由于 pod 名称前缀是动态的,因此运行以下命令来检查 pod 名称:oc get pods -n openshift-mtv | grep forklift-controller | awk '{print $1}'例如,如果 pod 名称前缀为 "forklift-controller-667f57c8f8-qllnx",则输出为:
forklift-controller-667f57c8f8-qllnx运行以下命令,检查 pod 的环境变量:
oc get pod forklift-controller-667f57c8f8-qllnx -n openshift-mtv -o yaml检查输出中的以下行:
... \- name: VIRT\_V2V\_EXTRA\_ARGS \- name: VIRT\_V2V\_EXTRA\_CONF\_CONFIG\_MAP ...在
openshift-mtv 命名空间中,执行以下步骤来编辑ForkliftController自定义资源(CR):运行以下命令,访问
ForkliftControllerCR 进行编辑:oc edit forkliftcontroller -n openshift-mtv在
ForkliftControllerCR 的spec部分添加以下行:virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf" virt_v2v_extra_conf_config_map: "perf"
运行以下命令来创建所需的配置映射
perf:oc -n openshift-mtv create cm perf将所需的缓冲区配置值转换为 Base64。例如,对于 16/4,运行以下命令:
echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64输出结果类似如下:
Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=在配置映射
perf中,在binaryData部分中输入 Base64 字符串,例如:apiVersion: v1 kind: ConfigMap binaryData: input.conf: Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo= metadata: name: perf namespace: openshift-mtv-
重启
forklift-controllerpod 以应用新配置。 -
确保
VIRT_V2V_EXTRA_ARGS环境变量反映了更新的设置。 运行迁移计划并检查迁移 pod 的日志。确认 AIO 缓冲区设置作为参数传递,特别是
--vddk-config值。例如,如果您运行以下命令:
exec: /usr/bin/virt-v2v … --vddk-config /mnt/extra-v2v-conf/input.conf如果
debug_level = 4,日志包括类似如下的部分:Buffer size calc for 16 value: (16 * 64 * 1024 = 1048576) nbdkit: vddk[1]: debug: [NFC VERBOSE] NfcAio_OpenSession: Opening an AIO session. nbdkit: vddk[1]: debug: [NFC INFO] NfcAioInitSession: Disabling read-ahead buffer since the AIO buffer size of 1048576 is >= the read-ahead buffer size of 65536. Explicitly setting flag '`NFC_AIO_SESSION_NO_NET_READ_AHEAD`' nbdkit: vddk[1]: debug: [NFC VERBOSE] NfcAioInitSession: AIO Buffer Size is 1048576 nbdkit: vddk[1]: debug: [NFC VERBOSE] NfcAioInitSession: AIO Buffer Count is 4验证迁移 pod 中是否有正确的配置映射值。通过登录到迁移 pod 并运行以下命令完成此操作:
cat /mnt/extra-v2v-conf/input.conf输出示例如下:
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 vixDiskLib.nfcAio.Session.BufCount=4可选:运行以下命令来启用调试日志。命令将配置转换为 Base64,包括高级别:
echo -e "`VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nVixDiskLib.nfcAio.Session.BufCount=4\nVixDiskLib.nfc.LogLevel=4`" | base64注意添加高级别会降低性能,且仅用于调试目的。
16.14.4. 禁用 AIO 缓冲 复制链接链接已复制到粘贴板!
您可以使用 Migration Toolkit for Virtualization (MTV)禁用冷迁移的 AIO 缓冲。您必须使用 MTV 为温迁移禁用 AIO 缓冲。
以下流程假设根据启用和配置 AIO 缓冲中的步骤启用并配置 AIO 缓冲。
流程
在
openshift-mtv 命名空间中,执行以下步骤来编辑ForkliftController自定义资源(CR):运行以下命令,访问
ForkliftControllerCR 进行编辑:oc edit forkliftcontroller -n openshift-mtv从
ForkliftControllerCR 的spec部分删除以下行:virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`" virt_v2v_extra_conf_config_map: "`perf`"
删除名为
perf的配置映射:oc delete cm perf -n openshift-mtv-
可选:重启
forklift-controllerpod,以确保更改生效。