Skip to content

仮想マシンとストレージのマイグレーション

Cockpit は、稼働中の仮想マシン(VM)およびその仮想ディスクを、ワークロードの中断やゲスト OS のダウンタイムを引き起こすことなく、物理的な Vapor ホスト間やストレージプール間で移行させる機能を提供します。


1. コンピュートライブマイグレーション

コンピュートライブマイグレーションは、動作中の VM のアクティブな実行状態(vCPU および RAM)を、移行元の物理ホストから移行先の物理ホストへと転送します。

ストレージの設計方法に応じて、Cockpit は以下のいずれかの手法でコンピュートマイグレーションを実行します:

A. 共有ストレージを利用したマイグレーション

  • アーキテクチャ: VM の仮想ディスクが、移行元および移行先の双方から同時にアクセス可能な共有ネットワークストレージ(NFS、OCFS2、SAN など)上に配置されている場合。
  • ワークフロー: CPU の状態とメモリページのみがネットワーク経由で対象の移行先ホストにコピーされます。仮想ディスク自体を転送または複製する必要がないため、切り替え(スイッチオーバー)は数秒以内で完了します。

B. 共有ストレージなしのマイグレーション(ブロックマイグレーション)

  • アーキテクチャ: VM の仮想ディスクが、移行元ホストの内蔵ローカルディスク(ローカル SSD など)に保存されている場合。
  • ワークフロー: Cockpit は VM の稼働中に、仮想ディスクファイルのブロックレベルのコピーをネットワーク経由で開始します。同時に、メモリページと CPU の実行状態も同期されます。ブロックとメモリのコピーが完全に同期された後、Cockpit は最終的な切り替えを実行します。移行所要時間はディスクサイズとネットワークの帯域幅に依存します。

2. ストレージ専用マイグレーション (Storage-Only Migration)

ストレージマイグレーションは、VM をアクティブに維持したまま、同一の物理ホスト内にある異なるデータストア(ストレージプール)間で VM の仮想ディスクファイルを移動させます。

  • ストレージコピーモード: 対象となるディスクイメージ(主に qcow2 または raw 形式)をブロック単位でコピー先に複製します。
  • 自動ピボット (Auto-Pivot): ディスクの複製が完了すると、Cockpit は実行時自動ピボットを実行します。ハイパーバイザーは、新しい書き込み操作を移行先の新しいディスクファイルへと切り替え(ピボット)、残留書き込みをフラッシュし、移行元の古いディスクファイルを安全に削除してストレージ領域を回収します。

3. 高度なマイグレーション構成

管理者はマイグレーションの開始時に、以下の高度なパラメータを構成できます:

  • Live: ライブマイグレーションモードを切り替えます。無効化するとコールド/オフラインマイグレーションを実行します(移行前に VM をサスペンドします)。
  • Persistent: VM の XML 定義を移行先ホストの libvirt 構成に永続的に書き込み、ホスト再起動後も VM が移行先に保持されるようにします。
  • Undefine Source: マイグレーションの成功後、移行元のホスト構成から VM の定義を自動的に削除して整理します。
  • Auto Converge: ゲスト OS のメモリ書き込み速度(ダーティページの生成速度)がネットワーク経由のコピー速度を上回る場合に、マイグレーションが完了できなくなるのを防ぎます。有効化すると、ゲスト VM の CPU の実行レートを動的に制限(スロットリング)し、メモリ同期を収束させ、マイグレーションを無事完了させます。
  • Max Bandwidth: マイグレーションのトラフィックに使用できるネットワークの最大スループット(MB/s)を制限し、共有されている物理回線の通信混雑を防ぎます。

4. 事前検証チェック(プレフライトチェック)

マイグレーションの失敗や、移行後の VM のネットワーク孤立、ストレージ破損を防ぐため、Cockpit は実行前に以下のチェックを自動的に実行します:

  • ストレージアクセス確認: 移行先ホストが対象のデータストアにアクセス可能であり、必要なディスクリソースを特定または作成できるか検証します。
  • ネットワークブリッジ確認: 移行先ホストが、移行元ホストと同じ仮想ネットワークスイッチ(ブリッジまたは分散ネットワーク)に接続されているか確認し、移行後に VM の通信が切断されないようにします。
  • CPU 互換性確認: 移行先ホストの物理 CPU が、VM で定義されている CPU モデルの要求命令セットをサポートしているか検証します。
  • ホスト間 TLS 信頼確認: マイグレーションのデータストリームを保護するため、移行元と移行先の Vapor ホスト間で相互 TLS 信頼関係が確立されているか確認します。