15.14. NBD トランスポートモードの非同期 I/O(AIO) サイズとバッファー数の増加


このドキュメントでは、Migration Toolkit for Virtualization (MTV) 製品を使用する際に、移行パフォーマンスを向上させるために NBD トランスポート NFC パラメーターを変更する方法を説明します。

警告

AIO バッファーリングの使用は、コールド移行のユースケースにのみ適しています。

15.14.1. 主な調査結果

  • 以下の値が指定された ESXi ホスト 1 台で複数の仮想マシン (10) を使用して移行すると、最適な移行のパフォーマンスが得られました。

    • VixDiskLib.nfcAio.Session.BufSizeIn64KB=16
    • vixDiskLib.nfcAio.Session.BufCount=4
  • AIO バッファー (非同期バッファーカウント) 設定を使用すると、次の改善が見られました。

    • 移行時間は 0:24:32 から 0:16:54 になり、31.1% 短縮されました。
    • 読み取り速度は 347.83 MB/秒 から 504.93 MB/秒 に向上しました。
  • 単一の仮想マシンで AIO バッファー設定を使用した場合、大きな改善は見られませんでした。
  • 複数のホストからの複数の仮想マシンで AIO バッファー設定を使用した場合、大きな改善は見られませんでした。

15.14.2. AIO バッファー設定の有効化

AIO 値に対するコントローラー Pod のサポートを検証する

  • openshift-mtv namespace の forklift-controller Pod が AIO バッファー値をサポートしていることを確認します。

    Pod 名の接頭辞は動的であるため、まず次のコマンドを実行して Pod 名を確認します。

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

    出力例は次のとおりです。

    Copy to Clipboard Toggle word wrap
    forklift-controller-667f57c8f8-qllnx
    注記

    これは、forklift-controller-667f57c8f8-qllnx などの Pod 名の接頭辞です。

  • 以下を実行して Pod の環境変数を確認します。

    Copy to Clipboard Toggle word wrap
    oc get pod forklift-controller-667f57c8f8-qllnx -n openshift-mtv -o yaml
  • 出力で次の行を確認します。

    Copy to Clipboard Toggle word wrap
    ...
    \- name: VIRT\_V2V\_EXTRA\_ARGS
    \- name: VIRT\_V2V\_EXTRA\_CONF\_CONFIG\_MAP
    ...

ForkliftController 設定の編集

  • openshift-mtv namespace で、次のコマンドを実行して ForkliftController オブジェクトを編集し、AIO バッファー値を含めます。

    Copy to Clipboard Toggle word wrap
    oc edit forkliftcontroller -n openshift-mtv

    spec セクションに以下を追加します。

    Copy to Clipboard Toggle word wrap
    virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf"
    virt_v2v_extra_conf_config_map: "perf"

perf という名前の ConfigMap の作成

  • 次のコマンドを使用して必要な ConfigMap を作成します。

    Copy to Clipboard Toggle word wrap
    oc -n openshift-mtv create cm perf

ConfigMap コンテンツの準備

  • 目的のバッファー設定値を Base64 に変換します。たとえば、16/4 の場合:

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

    出力は次のようになります。

    Copy to Clipboard Toggle word wrap
    Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=

ConfigMap の編集

  • 以下のように、perf ConfigMap を binaryData セクションの Base64 文字列で更新します。

    Copy to Clipboard Toggle word wrap
    apiVersion: v1
    kind: ConfigMap
    binaryData:
      input.conf: Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
    metadata:
      name: perf
      namespace: openshift-mtv

Forklift Controller Pod の再起動

  • 新しい設定を適用するには、forklift-controller Pod を再起動します。
  • VIRT_V2V_EXTRA_ARGS 環境変数が更新された設定を反映していることを確認します。

移行ログの確認

  • 移行計画を実行し、移行 Pod のログを確認します。AIO バッファー設定、特に --vddk-config 値 がパラメーターとして渡されていることを確認します。

    以下に例を示します。

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

    サンプルログの抜粋:

    Copy to Clipboard Toggle word wrap
    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
    注記

    上記のログは debug_level = 4 を使用した場合のものです

ConfigMap の値のコンテンツが移行 Pod に含まれていることの確認

  • 移行 Pod にログインし、次のコマンドを使用してバッファー設定を確認します。

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

    出力例は次のとおりです。

    Copy to Clipboard Toggle word wrap
    VixDiskLib.nfcAio.Session.BufSizeIn64KB=16
    vixDiskLib.nfcAio.Session.BufCount=4

デバッグの有効化 (オプション)

  • デバッグログを有効にするには、高ログレベルを含む設定を Base64 に変換します。

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

    高いログレベルを追加するとパフォーマンスが低下しますが、これはデバッグ目的のみに使用されます。

15.14.3. AIO バッファー設定の無効化

AIO バッファー設定を無効にするには、次の手順を実行します。

  • ForkliftController オブジェクトを編集します。ForkliftController オブジェクトの spec セクションから以前に追加した行を削除します。

    Copy to Clipboard Toggle word wrap
    oc edit forkliftcontroller -n openshift-mtv
  • 以下の行を削除します。

    Copy to Clipboard Toggle word wrap
    virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`"
    virt_v2v_extra_conf_config_map: "`perf`"
  • ConfigMap を削除します。以前に作成した perf ConfigMap を削除します。

    Copy to Clipboard Toggle word wrap
    oc delete cm perf -n openshift-mtv
  • Forklift Controller Pod を再起動します (オプション)。

必要に応じて、forklift-controller Pod を再起動して変更が有効になっていることを確認します。

15.14.4. AIO バッファー (非同期バッファーカウント) サポートの主な要件

VDDK および vSphere のバージョン

サポートは、次のバージョンを使用して実行されたテストに基づいています。

  • vSphere : 7.0.3
  • VDDK : 7.0.3
  • その他の VDDK および vSphere バージョンは、公式 VMware ドキュメント の AIO バッファーサポートを確認してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.