10.15. 为 NBD 传输模式增加 AIO 大小和缓冲区计数


当您使用 Migration Toolkit for Virtualization (MTV)同步输入/输出(AIO)缓冲时,您可以更改 Network Block Device (NBD)传输网络文件复制(NFC)参数来提高迁移性能。

警告

使用 AIO 缓冲仅适用于冷迁移用例。

在初始化温迁移前禁用 AIO 设置。如需了解更多详细信息,请参阅禁用 AIO 缓冲配置

10.15.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 缓冲设置时,无法显著改进。

10.15.2. 支持 AIO 大小和缓冲区计数的主要要求

支持基于使用以下版本执行的测试:

  • vSphere 7.0.3
  • VDDK 7.0.3

10.15.3. 启用并配置 AIO 缓冲

您可以启用并配置与 Migration Toolkit for Virtualization (MTV)的同步输入/输出(AIO)缓冲。

流程

  1. 确保 openshift-mtv 命名空间中的 forklift-controller pod 支持 AIO 缓冲值。由于 pod 名称前缀是动态的,因此运行以下命令来检查 pod 名称:

    oc get pods -n openshift-mtv | grep forklift-controller | awk '{print $1}'
    Copy to Clipboard Toggle word wrap

    例如,如果 pod 名称前缀为 "forklift-controller-667f57c8f8-qllnx",则输出为:

    forklift-controller-667f57c8f8-qllnx
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,检查 pod 的环境变量:

    oc get pod forklift-controller-667f57c8f8-qllnx -n openshift-mtv -o yaml
    Copy to Clipboard Toggle word wrap
  3. 检查输出中的以下行:

    ...
    \- name: VIRT\_V2V\_EXTRA\_ARGS
    \- name: VIRT\_V2V\_EXTRA\_CONF\_CONFIG\_MAP
    ...
    Copy to Clipboard Toggle word wrap
  4. openshift-mtv 命名空间中,执行以下步骤来编辑 ForkliftController 自定义资源(CR):

    1. 运行以下命令,访问 ForkliftController CR 进行编辑:

      oc edit forkliftcontroller -n openshift-mtv
      Copy to Clipboard Toggle word wrap
    2. ForkliftController CR 的 spec 部分添加以下行:

      virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf"
      virt_v2v_extra_conf_config_map: "perf"
      Copy to Clipboard Toggle word wrap
  5. 运行以下命令来创建所需的配置映射 perf

    oc -n openshift-mtv create cm perf
    Copy to Clipboard Toggle word wrap
  6. 将所需的缓冲区配置值转换为 Base64。例如,对于 16/4,运行以下命令:

    echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64
    Copy to Clipboard Toggle word wrap

    输出结果类似如下:

    Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
    Copy to Clipboard Toggle word wrap
  7. 在配置映射 perf 中,在 binaryData 部分中输入 Base64 字符串,例如:

    apiVersion: v1
    kind: ConfigMap
    binaryData:
      input.conf: Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
    metadata:
      name: perf
      namespace: openshift-mtv
    Copy to Clipboard Toggle word wrap
  8. 重启 forklift-controller pod 以应用新配置。
  9. 确保 VIRT_V2V_EXTRA_ARGS 环境变量反映了更新的设置。
  10. 运行迁移计划并检查迁移 pod 的日志。确认 AIO 缓冲区设置作为参数传递,特别是 --vddk-config 值。

    例如,如果您运行以下命令:

    exec: /usr/bin/virt-v2v … --vddk-config /mnt/extra-v2v-conf/input.conf
    Copy to Clipboard Toggle word wrap

    如果 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
    Copy to Clipboard Toggle word wrap
  11. 验证迁移 pod 中是否有正确的配置映射值。通过登录到迁移 pod 并运行以下命令完成此操作:

    cat /mnt/extra-v2v-conf/input.conf
    Copy to Clipboard Toggle word wrap

    输出示例如下:

    VixDiskLib.nfcAio.Session.BufSizeIn64KB=16
    vixDiskLib.nfcAio.Session.BufCount=4
    Copy to Clipboard Toggle word wrap
  12. 可选:运行以下命令来启用调试日志。命令将配置转换为 Base64,包括高级别:

    echo -e
    "`VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nVixDiskLib.nfcAio.Session.BufCount=4\nVixDiskLib.nfc.LogLevel=4`"
    | base64
    Copy to Clipboard Toggle word wrap
    注意

    添加高级别会降低性能,且仅用于调试目的。

10.15.4. 禁用 AIO 缓冲

您可以使用 Migration Toolkit for Virtualization (MTV)禁用冷迁移的 AIO 缓冲。您必须使用 MTV 为温迁移禁用 AIO 缓冲。

注意

以下流程假设根据启用和配置 AIO 缓冲中的步骤启用并配置 AIO 缓冲

流程

  1. openshift-mtv 命名空间中,执行以下步骤来编辑 ForkliftController 自定义资源(CR):

    1. 运行以下命令,访问 ForkliftController CR 进行编辑:

      oc edit forkliftcontroller -n openshift-mtv
      Copy to Clipboard Toggle word wrap
    2. ForkliftController CR 的 spec 部分删除以下行:

      virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`"
      virt_v2v_extra_conf_config_map: "`perf`"
      Copy to Clipboard Toggle word wrap
  2. 删除名为 perf 的配置映射:

    oc delete cm perf -n openshift-mtv
    Copy to Clipboard Toggle word wrap
  3. 可选:重启 forklift-controller pod,以确保更改生效。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部