16.3. アーキテクチャー
このセクションでは、MTV カスタムリソース、サービス、およびワークフローを説明します。
16.3.1. MTV カスタムリソースおよびサービス
Migration Toolkit for Virtualization (MTV) は、Red Hat OpenShift Operator として提供されます。以下のカスタムリソース (CR) およびサービスを作成し、管理します。
MTV カスタムリソース
-
Provider
CR は、MTV がソースおよびターゲットプロバイダーに接続し、対話できるようにする属性を保存します。 -
NetworkMapping
CR は、ソースおよびターゲットプロバイダーのネットワークをマッピングします。 -
StorageMapping
CR は、ソースおよびターゲットプロバイダーのストレージをマッピングします。 -
Plan
CR には、同じ移行パラメーターと関連するネットワークおよびストレージマッピングを持つ仮想マシンのリストが含まれます。 Migration
CR は移行計画を実行します。一度に実行できる
Migration
CR は、移行計画ごとに 1 つのみです。単一のPlan
CR に複数のMigration
CR を作成できます。
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)
Plan
CR を参照するMigration
CR を作成して移行計画を実行します。何らかの理由ですべての仮想マシン移行できない場合は、すべての仮想マシンが移行されるまで、同じ
Plan
CR に対して複数のMigration
CR を作成できます。-
Plan
CR の仮想マシンごとに、Migration Controller
サービスは仮想マシン移行の進行状況をMigration
CR に記録します。 Plan
CR 内の各仮想マシンのデータ転送が完了すると、Migration Controller
サービスによってVirtualMachine
CR が作成されます。すべての仮想マシンが移行されると、
Migration Controller
サービスはPlan
CR のステータスをCompleted
に更新します。各ソース仮想マシンの電源状態は、移行後も維持されます。
16.3.3. 移行ワークフローの詳細
詳細な移行ワークフローを使用して、失敗した移行のトラブルシューティングを行うことができます。
ワークフローでは、以下の手順を説明します。
ウォームマイグレーションまたはリモート OpenShift クラスターへの移行:
Migration
カスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controller
サービスはソース仮想マシンディスクごとにDataVolume
CR を作成します。各仮想マシンディスクで以下を実行します。
-
Containerized Data Importer (CDI) Controller
サービスは、DataVolume
CR で指定されるパラメーターに基づいて永続ボリューム要求 (PVC) を作成します。 -
StorageClass
に動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClass
プロビジョナーによって動的にプロビジョニングされます。 -
CDI Controller
サービスはImporter
Pod を作成します。 Importer
Pod は仮想マシンディスクを PV にストリーミングします。仮想マシンディスクの転送後に、以下を実行します。
Migration Controller
サービスは、VMWare からのインポート時に、PVC が接続されたconversion
Pod を作成します。conversion
Pod はvirt-v2v
を実行して、ターゲット仮想マシンの PVC にデバイスドライバーをインストールし、設定します。-
Migration Controller
サービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachine
CR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controller
が仮想マシンの電源を入れ、KubeVirt Controller
サービスがvirt-launcher
Pod とVirtualMachineInstance
CR を作成します。virt-launcher
Pod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVM
を実行します。
RHV または OpenStack からローカル OpenShift クラスターへのコールド移行:
Migration
カスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controller
サービスはソース仮想マシンディスクごとにPersistentVolumeClaim
CR を作成し、ソースが RHV の場合はOvirtVolumePopulator
を作成し、ソースが OpenStack の場合はOpenstackVolumePopulator
CR を作成します。各仮想マシンディスクで以下を実行します。
-
Populator Controller
サービスは一時的な永続ボリューム要求 (PVC) を作成します。 StorageClass
に動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClass
プロビジョナーによって動的にプロビジョニングされます。-
Migration Controller
サービスは、ダミー Pod を作成して、すべての PVC をバインドします。Pod の名前にはpvcinit
が含まれます。
-
-
Populator Controller
サービスは、populator
Pod を作成します。 populator
Pod は、ディスクデータを PV に転送します。仮想マシンディスクの転送後に、以下を実行します。
- 一時的な PVC は削除され、最初の PVC はデータを含む PV を指します。
-
Migration Controller
サービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachine
CR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controller
が仮想マシンの電源を入れ、KubeVirt Controller
サービスがvirt-launcher
Pod とVirtualMachineInstance
CR を作成します。virt-launcher
Pod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVM
を実行します。
VMWare からローカル OpenShift クラスターへのコールドマイグレーション:
Migration
カスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controller
サービスはソース仮想マシンディスクごとにDataVolume
CR を作成します。各仮想マシンディスクで以下を実行します。
-
Containerized Data Importer (CDI) Controller
サービスは、DataVolume
CR に指定されたパラメーターに基づいて、空の永続ボリューム要求 (PVC) を作成します。 -
StorageClass
に動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClass
プロビジョナーによって動的にプロビジョニングされます。
すべての仮想マシンディスクの場合:
-
Migration Controller
サービスは、ダミー Pod を作成して、すべての PVC をバインドします。Pod の名前にはpvcinit
が含まれます。 -
Migration Controller
サービスは、すべての PVC のconversion
Pod を作成します。 conversion
Pod はvirt-v2v
を実行します。これにより、仮想マシンが KVM ハイパーバイザーに変換され、ディスクのデータが対応する PV に転送されます。仮想マシンディスクの転送後に、以下を実行します。
-
Migration Controller
サービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachine
CR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controller
が仮想マシンの電源を入れ、KubeVirt Controller
サービスがvirt-launcher
Pod とVirtualMachineInstance
CR を作成します。virt-launcher
Pod は、仮想マシンディスクとして割り当てられた 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
は、ゲストオペレーティングシステム自体にパーミッションまたはアクセス認証情報を必要としません。