15.14. 为 NBD 传输模式增加异步 I/O (AIO)大小和缓冲区计数
本文档论述了如何更改 NBD 传输 NFC 参数,以便在使用 Migration Toolkit for Virtualization (MTV)产品时更改 NBD 传输 NFC 参数。
使用 AIO 缓冲仅适用于冷迁移用例。
- 在初始化 Warm Migration 前禁用 AIO 设置。如需了解更多详细信息,请参阅禁用 AIO 缓冲配置。
15.14.1. 密钥发现 复制链接链接已复制到粘贴板!
通过在带有以下值的单一 ESXi 主机上迁移使用多个虚拟机(10)实现最佳迁移性能:
-
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16
-
vixDiskLib.nfcAio.Session.BufCount=4
-
在使用 AIO 缓冲(Asynchronous Buffer Counts)设置时请注意以下改进:
-
迁移时间缩短为 31.1%,从
0:24:32
缩短为0:16:54
。 -
读取率从
347.83 MB/s
增加到504.93 MB/s
。
-
迁移时间缩短为 31.1%,从
- 在单一虚拟机上使用 AIO 缓冲设置时,无法显著改进。
- 当使用来自多个主机的多个虚拟机的 AIO 缓冲设置时,无法显著改进。
15.14.2. 启用 AIO 缓冲配置 复制链接链接已复制到粘贴板!
验证 AIO 值的 Controller Pod 支持
确保
openshift-mtv
命名空间中的forklift-controller
pod 支持 AIO 缓冲值。由于 pod 名称前缀是动态的,因此运行以下命令首先检查 pod 名称:
oc get pods -n openshift-mtv | grep forklift-controller | awk '{print $1}'
oc get pods -n openshift-mtv | grep forklift-controller | awk '{print $1}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例如下:
forklift-controller-667f57c8f8-qllnx
forklift-controller-667f57c8f8-qllnx
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意这是示例中的 pod 名称前缀:
forklift-controller-667f57c8f8-qllnx
运行以下命令,检查 pod 的环境变量:
oc get pod forklift-controller-667f57c8f8-qllnx -n openshift-mtv -o yaml
oc get pod forklift-controller-667f57c8f8-qllnx -n openshift-mtv -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查输出中的以下行:
... \- name: VIRT\_V2V\_EXTRA\_ARGS \- name: VIRT\_V2V\_EXTRA\_CONF\_CONFIG\_MAP ...
... \- name: VIRT\_V2V\_EXTRA\_ARGS \- name: VIRT\_V2V\_EXTRA\_CONF\_CONFIG\_MAP ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
编辑 ForkliftController 配置
在
openshift-mtv 命名空间中
,运行以下命令来编辑ForkliftController
对象使其包含 AIO 缓冲值:oc edit forkliftcontroller -n openshift-mtv
oc edit forkliftcontroller -n openshift-mtv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 spec 部分添加以下内容:
virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf" virt_v2v_extra_conf_config_map: "perf"
virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf" virt_v2v_extra_conf_config_map: "perf"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建名为 perf
的 ConfigMap
使用以下命令创建所需的 ConfigMap:
oc -n openshift-mtv create cm perf
oc -n openshift-mtv create cm perf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
准备 ConfigMap 内容
将所需的缓冲区配置值转换为 Base64。例如,对于 16/4:
echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64
echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出结果类似如下:
Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
编辑 ConfigMap
使用
binaryData
部分下的 Base64 字符串更新 perf ConfigMap,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
重启 Forklift Controller Pod
- 重启 forklift-controller pod 以应用新配置。
-
确保
VIRT_V2V_EXTRA_ARGS
环境变量反映了更新的设置。
验证迁移日志
运行迁移计划并检查迁移 pod 的日志。确认 AIO 缓冲区设置作为参数传递,特别是
--vddk-config 值
。例如:
exec: /usr/bin/virt-v2v … --vddk-config /mnt/extra-v2v-conf/input.conf
exec: /usr/bin/virt-v2v … --vddk-config /mnt/extra-v2v-conf/input.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 日志摘录示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意以上日志是使用
debug_level = 4
时
检查 ConfigMap 值内容位于 Migration Pod 中
登录到迁移 pod,并使用以下命令验证缓冲区设置:
cat /mnt/extra-v2v-conf/input.conf
cat /mnt/extra-v2v-conf/input.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例如下:
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 vixDiskLib.nfcAio.Session.BufCount=4
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 vixDiskLib.nfcAio.Session.BufCount=4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启用调试(可选)
要启用调试日志,请将配置转换为 Base64,包括高级别:
echo -e "`VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nVixDiskLib.nfcAio.Session.BufCount=4\nVixDiskLib.nfc.LogLevel=4`" | base64
echo -e "`VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nVixDiskLib.nfcAio.Session.BufCount=4\nVixDiskLib.nfc.LogLevel=4`" | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意添加高级别将降低性能,仅用于调试目的。
15.14.3. 禁用 AIO 缓冲配置 复制链接链接已复制到粘贴板!
要禁用 AIO 缓冲配置,请完成以下步骤:
编辑 ForkliftController 对象:从 ForkliftController 对象的 spec 部分删除之前添加的行:
oc edit forkliftcontroller -n openshift-mtv
oc edit forkliftcontroller -n openshift-mtv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除以下行:
virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`" virt_v2v_extra_conf_config_map: "`perf`"
virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`" virt_v2v_extra_conf_config_map: "`perf`"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 ConfigMap:删除之前创建的 perf ConfigMap:
oc delete cm perf -n openshift-mtv
oc delete cm perf -n openshift-mtv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启 Forklift Controller Pod (可选)。
如果需要,通过重启 forklift-controller pod 来确保更改生效。
15.14.4. AIO 缓冲(异步缓冲数)支持的关键要求 复制链接链接已复制到粘贴板!
VDDK 和 vSphere 版本
支持基于使用以下版本执行的测试:
- vSphere : 7.0.3
- VDDK : 7.0.3
- 对于其他 VDDK 和 vSphere 版本,请查看 官方 VMware 文档中的 AIO 缓冲支持。