ライブ マイグレーション

Compute Engine では、ホストシステムでソフトウェアやハードウェアの更新などのイベントが発生しても、仮想マシン インスタンスの実行を継続できるように、ライブ マイグレーションを提供しています。ユーザーが VM を再起動しなくても、Compute Engine では実行中のインスタンスを同じゾーンの別のホストに移行できます。Google では、これにより VM の処理を妨げることなく、インフラストラクチャのメンテナンスを行い、保護状態と信頼性を維持しています。VM がライブ マイグレーションされるようスケジュール設定されている場合、Google は、ゲストに移行が間近であることを知らせる通知を行います。

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

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

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

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

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

ゲスト オペレーティング システムを再起動せずに、VM とその各リソースを新しいホストシステムに移行する。
ライブ マイグレーションのコンポーネント

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

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

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

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

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

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

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

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

  1. [VM インスタンス] ページに移動します。
  2. プリエンプティブル インスタンスを選択します。
  3. [VM インスタンスの詳細] ページの上部にある [開始] をクリックします。

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

次のステップ