ライブ マイグレーション

Compute Engine では、ホストシステムでソフトウェア / ハードウェアの更新などのイベントが発生しても、仮想マシン インスタンスの実行を継続できるように、ライブ マイグレーションを提供しています。Compute Engine は、VM の再起動を行わずに実行中のインスタンスを同じゾーンの別のホストに対してライブ マイグレーションを行います。Google では、これにより VM の実行を中断することなくインフラストラクチャのメンテナンスを行い、保護状態と信頼性を維持しています。

ライブ マイグレーションにより、次の場合でもインスタンスの実行を継続することができます。

  • インフラストラクチャの定期的なメンテナンスやアップグレード。
  • データセンターのネットワークと送電網の点検。
  • メモリ、CPU、ネットワーク インターフェース カード、ディスク、電源装置などのハードウェアの障害。これは、ベスト エフォートで行われます。ハードウェアが完全に故障した場合やライブ マイグレーションができない場合、VM がクラッシュして自動的に再起動し、hostError がログに記録されます。
  • ホストの OS と BIOS のアップグレード。
  • 迅速な対応を要するセキュリティ関連の更新。
  • ホストのルート パーティションのサイズ、ホストイメージやパッケージのストレージなど、システム構成の変更。

ライブ マイグレーションによって、VM 自体の属性やプロパティが変更されることはありません。ライブ マイグレーションでは、実行中の VM が同じゾーンのホストマシン間で転送されるだけです。内部 / 外部 IP アドレス、インスタンスのメタデータ、ブロック ストレージのデータとボリューム、OS とアプリケーションの状態、ネットワークの設定、ネットワーク接続など、VM のプロパティと属性はすべてそのまま使用されます。

ライブ マイグレーションのプロセス

Google が実行中の VM インスタンスをホスト間で移行するときに、移行元から移行先に完全な状態のインスタンスを移行します。このプロセスは、ゲスト OS やインスタンスに接続している対象からは見えません。作業をシームレスに行うため、この移行には多くのコンポーネントが関係しています。ここでは、その概要について解説します。

ライブ マイグレーションのコンポーネント

このプロセスでは、まず、現在のホストマシンから VM を強制的に排除することを通知します。BIOS の新しいバージョンのリリースを示すファイル変更、ハードウェアの定期メンテナンス、予知されるハードウェア障害による自動信号などにより通知が開始されます。

Google のクラスタ管理ソフトウェアは、これらのイベントを継続的に監視し、ストレージの使用率、1 つの顧客が同時に移行可能な VM の数などのデータセンターの制御ポリシーに基づいてプロセスのスケジュールを設定します。

VM が移行対象に選択されると、Google はゲストに移行が近いことを通知します。待機期間が経過すると、対象のホストが選択され、新しい空の移行先 VM を設定して移行元の VM の移行を受け入れるようにホストに指示がなされます。移行元と移行先の間の接続を確立するため、認証が行われます。

VM の移行は次の 3 段階で行われます。

  • 移行前のブラウンアウト。大半の状態が移行元から移行先に送信されていますが、VM はまだ移行元で実行されています。たとえば、Google はゲストのメモリをすべて移行先にコピーすると同時に、移行元で変更されたページの追跡を行っています。移行前のブラウンアウトの時間は、ゲストメモリのサイズやページの変更率によって異なります。

  • ブラックアウト。非常に短い時間ですが、VM の実行が停止します。VM は一時停止状態になり、移行先での VM の再開に必要な残りの状態がすべて送信されます。移行前のブラウンアウトの状態送信が収穫逓減ポイントに達すると、VM がブラックアウト段階に入ります。ゲスト VM が変更を行う割合に応じて、送信するメモリのバイト数を決定するアルゴリズムが利用されます。

  • 移行後のブラウンアウト。VM が移行先の VM で実行されます。この段階では移行元の VM も存在し、移行先の VM にサポート機能を提供します。たとえば、ネットワーク ファブリックが移行先の VM の最新の場所を取得できるまで、移行元の VM が移行先の VM にパケット転送サービスを提供します。

最後に、移行が完了すると、システムが移行元の VM を削除します。実施された移行は VM ログで確認できます。ライブ マイグレーションは、Google のプラットフォームにおける重要なコンポーネントであるため、大変緻密な調査による継続的なテストが実施されています。このテストでは、フォールト挿入を行い、移行アルゴリズムのさまざまなポイントで障害を引き起こします。各コンポーネントで、アクティブな障害とパッシブな障害の両方を生成します。この複雑かつ多段階のプロセスを行うには、インフラストラクチャ全体を深い階層で統合し、スケジューリング、オーケストレーション、自動化プロセスを強化する必要があります。

ライブ マイグレーションと GPU

GPU を使用するインスタンスはライブ マイグレーションできません。このようなインスタンスは終了するように設定する必要があります(必要であれば、再起動も設定できます)。Compute Engine は、GPU を使用する VM インスタンスが終了する 60 分前に通知を行います。メンテナンス イベントの通知の詳細については、ライブ マイグレーションの通知取得をご覧ください。

GPU を使用するホストのメンテナンス方法については、GPU のドキュメントのホスト メンテナンスの処理をご覧ください。

ライブ マイグレーションとローカル SSD

Compute Engine では、ローカル SSD が接続されたインスタンスのライブ マイグレーションも可能です。予定されたメンテナンスの前に、VM と一緒にローカル SSD を新しいマシンに移行できます。

プリエンプティブ インスタンスのライブ マイグレーション

プリエンプティブ インスタンスには、ライブ マイグレーションを構成できません。プリエンプティブ インスタンスのメンテナンス動作は、デフォルトで TERMINATE に設定されており、このオプションは変更できません。プリエンプティブ インスタンスに対して自動再起動オプションは設定できませんが、プリエンプティブ インスタンスがプリエンプトされた後に手動で再起動できます。

インスタンスを非プリエンプティブに変更する必要がある場合は、プリエンプティブ インスタンスからブートディスクを切り離し、プリエンプティブに構成されていない新しいインスタンスにブートディスクを接続します。また、ブートディスクのスナップショットを作成し、それを使用してプリエンプティブなしで新しいインスタンスを作成することもできます。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント