16.3. アーキテクチャー
このセクションでは、MTV カスタムリソース、サービス、およびワークフローを説明します。
16.3.1. MTV カスタムリソースおよびサービス リンクのコピーリンクがクリップボードにコピーされました!
Migration Toolkit for Virtualization (MTV) は、Red Hat OpenShift Operator として提供されます。以下のカスタムリソース (CR) およびサービスを作成し、管理します。
MTV カスタムリソース
-
ProviderCR は、MTV がソースおよびターゲットプロバイダーに接続し、対話できるようにする属性を保存します。 -
NetworkMappingCR は、ソースおよびターゲットプロバイダーのネットワークをマッピングします。 -
StorageMappingCR は、ソースおよびターゲットプロバイダーのストレージをマッピングします。 -
PlanCR には、同じ移行パラメーターと関連するネットワークおよびストレージマッピングを持つ仮想マシンのリストが含まれます。 MigrationCR は移行計画を実行します。一度に実行できる
MigrationCR は、移行計画ごとに 1 つのみです。単一のPlanCR に複数のMigrationCR を作成できます。
MTV サービス
Inventoryサービスは以下のアクションを実行します。- 移行元プロバイダーおよびターゲットプロバイダーに接続します。
- マッピングおよび計画に関するローカルインベントリーを維持します。
- 仮想マシンの設定を保存します。
-
仮想マシンの設定の変更が検出されたら、
Validationサービスを実行します。
-
Validationサービスは、ルールを適用して移行の適合性を確認します。 Migration Controllerサービスは移行のオーケストレーションを行います。移行計画の作成時に、
Migration Controllerサービスは計画を検証し、ステータスラベルを追加します。計画の検証に失敗した場合には、計画のステータスはNot readyとなり、その計画を使用して移行を行うことができません。計画が検証をパスすると、計画のステータスはReadyとなり、移行を実行するために使用できます。移行に成功すると、Migration Controllerサービスは計画のステータスをCompletedに変更します。-
Populator Controllerサービスは、Volume Populator を使用して、ディスク転送を調整します。 -
Kubevirt ControllerおよびContainerized Data Import (CDI) Controllerサービスは、ほとんどの技術操作を処理します。
16.3.2. 移行ワークフローの概要 リンクのコピーリンクがクリップボードにコピーされました!
ワークフローの概要では、ユーザーの観点から移行プロセスを示しています。
- 移行元プロバイダー、ターゲットプロバイダー、ネットワークマッピング、およびストレージマッピングを作成します。
以下のリソースを含む
Planカスタムリソース (CR) を作成します。- 移行元プロバイダー
- ターゲットプロバイダー (MTV がターゲットクラスターにインストールされていない場合)
- ネットワークマッピング
- ストレージマッピング
- 1 つ以上の仮想マシン (VM)
PlanCR を参照するMigrationCR を作成して移行計画を実行します。何らかの理由ですべての仮想マシン移行できない場合は、すべての仮想マシンが移行されるまで、同じ
PlanCR に対して複数のMigrationCR を作成できます。-
PlanCR の仮想マシンごとに、Migration Controllerサービスは仮想マシン移行の進行状況をMigrationCR に記録します。 PlanCR 内の各仮想マシンのデータ転送が完了すると、Migration ControllerサービスによってVirtualMachineCR が作成されます。すべての仮想マシンが移行されると、
Migration ControllerサービスはPlanCR のステータスをCompletedに更新します。各ソース仮想マシンの電源状態は、移行後も維持されます。
16.3.3. 移行ワークフローの詳細 リンクのコピーリンクがクリップボードにコピーされました!
詳細な移行ワークフローを使用して、失敗した移行のトラブルシューティングを行うことができます。
ワークフローでは、以下の手順を説明します。
ウォームマイグレーションまたはリモート OpenShift クラスターへの移行:
Migrationカスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controllerサービスはソース仮想マシンディスクごとにDataVolumeCR を作成します。各仮想マシンディスクで以下を実行します。
-
Containerized Data Importer (CDI) Controllerサービスは、DataVolumeCR で指定されるパラメーターに基づいて永続ボリューム要求 (PVC) を作成します。 -
StorageClassに動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClassプロビジョナーによって動的にプロビジョニングされます。 -
CDI ControllerサービスはImporterPod を作成します。 ImporterPod は仮想マシンディスクを PV にストリーミングします。仮想マシンディスクの転送後に、以下を実行します。
Migration Controllerサービスは、VMWare からのインポート時に、PVC が接続されたconversionPod を作成します。conversionPod はvirt-v2vを実行して、ターゲット仮想マシンの PVC にデバイスドライバーをインストールし、設定します。-
Migration Controllerサービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachineCR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controllerが仮想マシンの電源を入れ、KubeVirt Controllerサービスがvirt-launcherPod とVirtualMachineInstanceCR を作成します。virt-launcherPod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVMを実行します。
RHV または OpenStack からローカル OpenShift クラスターへのコールド移行:
Migrationカスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controllerサービスはソース仮想マシンディスクごとにPersistentVolumeClaimCR を作成し、ソースが RHV の場合はOvirtVolumePopulatorを作成し、ソースが OpenStack の場合はOpenstackVolumePopulatorCR を作成します。各仮想マシンディスクで以下を実行します。
-
Populator Controllerサービスは一時的な永続ボリューム要求 (PVC) を作成します。 StorageClassに動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClassプロビジョナーによって動的にプロビジョニングされます。-
Migration Controllerサービスは、ダミー Pod を作成して、すべての PVC をバインドします。Pod の名前にはpvcinitが含まれます。
-
-
Populator Controllerサービスは、populatorPod を作成します。 populatorPod は、ディスクデータを PV に転送します。仮想マシンディスクの転送後に、以下を実行します。
- 一時的な PVC は削除され、最初の PVC はデータを含む PV を指します。
-
Migration Controllerサービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachineCR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controllerが仮想マシンの電源を入れ、KubeVirt Controllerサービスがvirt-launcherPod とVirtualMachineInstanceCR を作成します。virt-launcherPod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVMを実行します。
VMWare からローカル OpenShift クラスターへのコールドマイグレーション:
Migrationカスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controllerサービスはソース仮想マシンディスクごとにDataVolumeCR を作成します。各仮想マシンディスクで以下を実行します。
-
Containerized Data Importer (CDI) Controllerサービスは、DataVolumeCR に指定されたパラメーターに基づいて、空の永続ボリューム要求 (PVC) を作成します。 -
StorageClassに動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClassプロビジョナーによって動的にプロビジョニングされます。
すべての仮想マシンディスクの場合:
-
Migration Controllerサービスは、ダミー Pod を作成して、すべての PVC をバインドします。Pod の名前にはpvcinitが含まれます。 -
Migration Controllerサービスは、すべての PVC のconversionPod を作成します。 conversionPod はvirt-v2vを実行します。これにより、仮想マシンが KVM ハイパーバイザーに変換され、ディスクのデータが対応する PV に転送されます。仮想マシンディスクの転送後に、以下を実行します。
-
Migration Controllerサービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachineCR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controllerが仮想マシンの電源を入れ、KubeVirt Controllerサービスがvirt-launcherPod とVirtualMachineInstanceCR を作成します。virt-launcherPod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVMを実行します。
16.3.4. MTV での virt-v2v ツールの使用方法 リンクのコピーリンクがクリップボードにコピーされました!
Migration Toolkit for Virtualization (MTV) は、virt-v2v ツールを使用して、仮想マシンのディスクイメージを OpenShift Virtualization と互換性のある形式に変換します。このツールは、変換された仮想マシンで準仮想化 VirtIO ドライバーを有効にし、可能な場合は QEMU ゲストエージェントをインストールするなど、仮想マシンが OpenShift Virtualization で動作するようにするために必要なタスクを自動的に実行するため、移行を容易にします。
virt-v2v は、Red Hat Enterprise Linux (RHEL) バージョン 7 以降に含まれています。
16.3.4.1. MTV 移行における virt-v2v の主な機能 リンクのコピーリンクがクリップボードにコピーされました!
移行時に、MTV は virt-v2v を使用して仮想マシンに関するメタデータを収集し、仮想マシンディスクに必要な変更を加え、仮想マシンを含むディスクを OpenShift Virtualization にコピーします。
virt-v2v は、VM ディスクに以下の変更を加えて、移行向けに準備します。
追加:
- VirtIO ドライバー (ネットワークやディスクドライバーなど) の注入。
- QEMU ゲストエージェントのインストールなど、ハイパーバイザー固有のツールまたはエージェントの準備。
- 更新されたブートローダーやブートエントリーなどのブート設定の変更。
削除:
- VMware ツールや VirtualBox の追加など、ハイパーバイザー固有の不要なファイルまたは以前のファイル。
- たとえば、VMware 固有の NIC ドライバーを削除するなど、古いネットワークドライバー設定。
- 古いブート設定など、ターゲットシステムと互換性のない設定。
VMware または OVA ファイルから移行する場合、virt-v2v は移行中または移行後の VM の初回の再起動時に IP アドレスも設定します。
MTV を使用して移行の前または後に、事前定義された Ansible フックを実行することもできます。詳細は、MTV 移行計画へのフックの追加 を参照してください。
これらのフックは virt-v2v を使用するとは限りません。
16.3.4.2. ファイルのカスタマイズ、削除、およびインストール リンクのコピーリンクがクリップボードにコピーされました!
MTV は、virt-v2v を使用して、以下のアクションなどの変換中に追加のゲストのカスタマイズを実行します。
- IP アドレスを保存するカスタマイズ
- ドライブ文字を保存するカスタマイズ
RHEL ベースのゲストの場合、virt-v2v は Red Hat レジストリーからゲストエージェントをインストールしようとします。移行がデタッチされた環境で実行される場合、インストーラーは失敗し、フックまたはその他の自動化を使用してゲストエージェントをインストールする必要があります。
詳細は、以下の man リファレンスページを参照してください。
16.3.4.3. パーミッションおよび virt-v2v リンクのコピーリンクがクリップボードにコピーされました!
virt-v2v は、実行中の仮想マシンに対して実行されず、VM のディスクに対してのみ実行されるため、virt-v2v は、ゲストオペレーティングシステム自体にパーミッションまたはアクセス認証情報を必要としません。