ネストされた仮想化について


このドキュメントでは、ネストされた仮想化に対する Compute Engine のサポートについて説明します。ネストされた仮想化では、他の VM 内で仮想マシン(VM)インスタンスを実行して、独自の仮想環境を作成できます。ネストされた仮想化をサポートするために、Compute Engine は VM に Intel VT-x 命令を追加します。これにより、VM を作成すると、その VM 上にあるハイパーバイザは追加の VM を実行できるようになります。

Compute Engine VM は、Google のセキュリティ強化された KVM ベースのハイパーバイザを備えた物理ホストで実行されます。ネストされた仮想化では、物理ホストとそのハイパーバイザはレベル 0(L0)環境にあります。L0 環境には複数のレベル 1(L1)VM をホストできます。各 L1 VM には、レベル 2(L2)VM のインストールに使用するもう 1 つのハイパーバイザがあります。図 1 に、物理ホスト、L1 VM、L2 VM の関係を示します。

図 1. L0 物理ホスト、L1 VM、L2 VM の関係。

ユースケース

ネストされた仮想化の使用としては、次のようなシナリオが考えられます。

  • Compute Engine で実行できない VM があります。たとえば、オンプレミス ワークロードの障害復旧ソリューションが、Compute Engine VM にフェイルオーバーする VM 上で実行されているとします。ネストされた仮想化を実行すると、Compute Engine への VM の移植にかかる時間を短縮できます。

  • さまざまなバージョンの OS でソフトウェア パッケージの新しいバージョンのテストと検証を行うソフトウェア検証フレームワークがあります。ネストされた仮想化を使用すると、Compute Engine イメージのライブラリを変換して管理する必要がなくなります。

パフォーマンスに関する注意事項

ハードウェア補助によるネストされた仮想化であっても、ネストされた VM で CPU バウンドのワークロードを実行すると、パフォーマンスが 10% 以上低下することがあります。また、入出力バウンドのワークロードでも 10% 以上低下する可能性があります。

制限事項

L1 VM には次の制限事項があります。

  • L1 VM でサポートされているハイパーバイザは Linux KVM のみです。Microsoft Hyper-V はサポートされていません。
  • AMD と Arm のプロセッサを搭載した VM は使用できません。Intel プロセッサを搭載した VM の場合、メモリ最適化、E2 汎用、A3 アクセラレータ最適化マシンタイプはいずれも使用できません。

    各ゾーンでサポートされているプロセッサの詳細については、利用可能なリージョンとゾーンをご覧ください。

L2 VM には次の制限事項があります。

ネストされた仮想化の使用

ネストされた仮想化を使用するには、次の手順を行います。

  1. ネストされた仮想化の制約が無効になっているかどうかを確認する

  2. ネストされた仮想化が有効になった L1 VM を作成する

  3. ネストされた L2 VM を作成する

ネストされた仮想化が有効になっている VM またはネストされた VM の作成中に問題が発生した場合は、ネストされた仮想化のトラブルシューティングをご覧ください。