15.14. NBD トランスポートモードの非同期 I/O(AIO) サイズとバッファー数の増加
このドキュメントでは、Migration Toolkit for Virtualization (MTV) 製品を使用する際に、移行パフォーマンスを向上させるために NBD トランスポート NFC パラメーターを変更する方法を説明します。
AIO バッファーリングの使用は、コールド移行のユースケースにのみ適しています。
- ウォーム移行を初期化する前に、AIO 設定を無効にします。詳細は、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-mtvnamespace のforklift-controllerPod が AIO バッファー値をサポートしていることを確認します。Pod 名の接頭辞は動的であるため、まず次のコマンドを実行して Pod 名を確認します。
oc get pods -n openshift-mtv | grep forklift-controller | awk '{print $1}'出力例は次のとおりです。
forklift-controller-667f57c8f8-qllnx注記これは、
forklift-controller-667f57c8f8-qllnxなどの Pod 名の接頭辞です。以下を実行して 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 ...
ForkliftController 設定の編集
openshift-mtvnamespace で、次のコマンドを実行してForkliftControllerオブジェクトを編集し、AIO バッファー値を含めます。oc edit forkliftcontroller -n openshift-mtvspec セクションに以下を追加します。
virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf" virt_v2v_extra_conf_config_map: "perf"
perf という名前の ConfigMap の作成
次のコマンドを使用して必要な ConfigMap を作成します。
oc -n openshift-mtv create cm perf
ConfigMap コンテンツの準備
目的のバッファー設定値を Base64 に変換します。たとえば、16/4 の場合:
echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64出力は次のようになります。
Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
ConfigMap の編集
以下のように、perf ConfigMap を
binaryDataセクションの Base64 文字列で更新します。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 値がパラメーターとして渡されていることを確認します。以下に例を示します。
exec: /usr/bin/virt-v2v … --vddk-config /mnt/extra-v2v-conf/input.confサンプルログの抜粋:
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 にログインし、次のコマンドを使用してバッファー設定を確認します。
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注記高いログレベルを追加するとパフォーマンスが低下しますが、これはデバッグ目的のみに使用されます。
15.14.3. AIO バッファー設定の無効化 リンクのコピーリンクがクリップボードにコピーされました!
AIO バッファー設定を無効にするには、次の手順を実行します。
ForkliftController オブジェクトを編集します。ForkliftController オブジェクトの spec セクションから以前に追加した行を削除します。
oc edit forkliftcontroller -n openshift-mtv以下の行を削除します。
virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`" virt_v2v_extra_conf_config_map: "`perf`"ConfigMap を削除します。以前に作成した perf ConfigMap を削除します。
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 バッファーサポートを確認してください。