仮想マシンとストレージのマイグレーション
Cockpit は、稼働中の仮想マシン(VM)およびその仮想ディスクを、ワークロードの中断やゲスト OS のダウンタイムを引き起こすことなく、物理的な Vapor ホスト間やストレージプール間で移行させる機能を提供します。
1. コンピュートライブマイグレーション
コンピュートライブマイグレーションは、動作中の VM のアクティブな実行状態(vCPU および RAM)を、移行元の物理ホストから移行先の物理ホストへと転送します。
ストレージの設計方法に応じて、Cockpit は以下のいずれかの手法でコンピュートマイグレーションを実行します:
A. 共有ストレージを利用したマイグレーション
- アーキテクチャ: VM の仮想ディスクが、移行元および移行先の双方からアクセス可能な共有ネットワークストレージ(NFS、OCFS2、SAN など)上に配置されている場合。
- ワークフロー: CPU の状態とメモリページのみがネットワーク経由で対象の移行先ホストにコピーされます。仮想ディスク自体を転送または複製する必要がないため、切り替え(スイッチオーバー)は数秒以内で完了します。
B. 共有ストレージなしのマイグレーション(ブロックマイグレーション)
- アーキテクチャ: VM の仮想ディスクが、移行元ホストのローカルディスク(ローカル SSD など)に保存されている場合。
- ワークフロー: Cockpit は VM の稼働中に、仮想ディスクファイルのブロックレベルのコピーをネットワーク経由で開始します。同時に、メモリページと CPU の実行状態も同期されます。ブロックとメモリのコピーが完全に同期された後、Cockpit は最終的な切り替えを実行します。移行所要時間はディスクサイズとネットワーク帯域幅に依存します。
アイデンティティの保持。 コンピュートマイグレーションが完了しても、VM は Cockpit 上のアイデンティティを維持します。インベントリツリー内の位置や、オブジェクトスコープのアクセス権限は、VM と共に移行先ホストへと移動します。VM は削除・再インポートされるのではなくその場で再配置されるため、マイグレーション後に権限を再適用したりフォルダに再度追加したりする必要はありません。
2. ストレージ専用マイグレーション
ストレージマイグレーションは、VM をアクティブに維持したまま、同一の物理ホスト内にある異なるデータストア(ストレージプール)間で VM の仮想ディスクファイルを移動させます。
- ストレージコピーモード (Storage Copy Mode): 対象となるディスクイメージ(主に qcow2 または raw 形式)をブロック単位でコピー先に複製します。
- 自動ピボット (Auto-Pivot): ディスクの複製が完了すると、Cockpit は実行時自動ピボットを実行します。ハイパーバイザーは新しい書き込み操作を新しいターゲットディスクファイルへと切り替え(ピボット)、残留書き込みをフラッシュします。
- 移行元ファイルの削除(オプション): 元のディスクイメージの回収はデフォルトでオフになっています。「Remove source file after migration completes」(マイグレーション完了後に移行元ファイルを削除)オプションを有効にすると、ピボットが成功した後にのみ Cockpit が移行元のディスクイメージを削除します。フォールバック用に元ファイルを残す場合は、無効のままにしてください。
- 移行先の検証: コピーが開始される前に、ホスト上で移行先パスが検証されます。パスは既知のストレージプール内を指す必要があり(プール外へのエスケープは拒否されます)、既存のファイルを上書きすることはできません。既存のファイルが存在する場合は、別の移行先ファイル名を選択してください。
3. 高度なマイグレーション構成
管理者はマイグレーションの開始時に、以下の高度なパラメータを構成できます:
- Live: ライブマイグレーションモードを切り替えます。無効化するとオフライン/コールドマイグレーションを実行します(移行前に VM をサスペンドします)。
- Undefine Source (デフォルトで有効、推奨): マイグレーション成功後、移行元ホストから VM の XML 定義を削除します(標準の「移動」動作)。これを無効のままにすることは推奨されません: VM が移行元と移行先の両方のホストで定義されたままになり、重複インベントリエントリが生成され、共有ストレージでは古い移行元のコピーが起動された場合にディスク破損のリスクが生じます。移行元にコピーを意図的に残す場合のみ無効にしてください。
- ストレージコピーモード (Storage Copy Mode): ディスクの取り扱い方法を選択します。None はディスクが移行先で既にアクセス可能である(共有ストレージ)とみなします。Copy all は完全なディスクコピーを実行します(共有ストレージなし)。Incremental は移行先にある既存のベースに対する差分のみをコピーします。
- Compressed: 転送中のマイグレーションデータを圧縮してネットワーク転送量を削減します(移行元ホストの CPU リソースを消費します)。
- Auto Converge: ゲスト OS のメモリ書き込み速度(ダーティページの生成速度)がネットワーク経由のコピー速度を上回る場合に、マイグレーションが完了できなくなるのを防ぎます。有効化すると、ゲスト VM の CPU の実行レートを動的に制限(スロットリング)し、メモリ同期を収束させてマイグレーションを完了させます。
- 移行元ディスクの削除 (破壊的操作): コンピュートおよびストレージマイグレーションで利用可能です。有効にすると、マイグレーション成功後に移行元ホストから移行元ディスクイメージファイルが永久に削除されます(CD-ROM / フロッピーデバイスは除外されます)。この操作は取り消せません。
- ネットワーク / ディスクのマッピング: 必要に応じて、VM の移行元ネットワークおよびディスクパスを移行先ホスト上の対応するリソースに再マッピングします。指定されたマッピングはマイグレーション開始前に移行先ホストに対して検証されます。
追加の低レベルフラグ(Persistent、Tunnelled、Allow-Unsafe、Verbose、Max Bandwidth、Max Downtime)は、Cockpit ウィザードではなく Vapor のホストごとのマイグレーションダイアログで提供されます。そこでの破壊的フラグ(Remove Source Disks、Allow-Unsafe)は、マイグレーションを開始する前に明示的な確認が必要です。
4. 事前検証と信頼関係(Pre-Flight Validation and Trust)
マイグレーションを実行する前に、Cockpit は以下の検証を行います。以下のリストは、現在実際に適用されている内容を反映しています。事前に行われるチェックではなく、切り替え時に libvirt が行うチェックについては運用上の注意事項を参照してください。
- ホスト間 TLS 信頼関係: コンピュートマイグレーションは
qemu+tls://経由でストリーミングされるため、移行元と移行先の Vapor ホスト間に相互 TLS 信頼関係が必要です。マイグレーションウィザードでは、これは明示的なステップとなります。移行先ホストを選択した後、「Establish host trust」(ホスト信頼関係の確立)をクリックします。Cockpit は各ホストの CA 証明書を交換・インストールします(トラストストアが実際に変更された場合のみホスト上でlibvirtdを再起動します)。信頼関係が確立されるまで、「Start Migration」 ボタンは無効のままです。 - 共有ストレージスコープチェック: コンピュートのみのマイグレーション(ストレージコピーなし)の場合、Cockpit はすべてのディスクが shared(共有)とマークされたデータストア上にあることを確認します。ローカル(非共有)ストレージ上のディスクを持つ VM のコンピュートのみマイグレーションは、開始前に拒否されます。
- ストレージ移行先のチェック (ストレージ専用マイグレーション): ターゲットパスがホスト上で検証されます。既知のストレージプール内を指す必要があり、既存のファイルを上書きすることはできません。ウィザードはまた、同一プール保護とターゲットデータストアに対する利用可能容量チェックも実施します。
- マッピングの検証: 明示的なネットワークまたはディスクマッピングを指定した場合、マイグレーション開始前に稼働中の移行先ホストに対してそれらが検証されます。移行先で解決できないマッピングは事前チェックで失敗します。
運用上の注意事項。 Cockpit は現在、プロアクティブな移行先の CPU 互換性 チェックや、すべてのインターフェースに対する一般的な ネットワークブリッジ チェックを事前には行っていません。libvirt は依然として切り替え時にこれらを適用します。移行先 CPU がゲストの CPUモデルを実行できない場合、または VM が使用しているネットワーク(再マッピングしなかったもの)が移行先に存在しない場合、マイグレーションは失敗します。予期せぬトラブルを避けるため、マイグレーションを行う前に、移行先ホストが VM の使用する仮想ネットワーク/ブリッジを同じように提供していること、および CPU に互換性があることを確認してください。より広範な自動事前チェックが計画されています。