入れ子になった仮想化の概要

入れ子になった仮想化は、Hyper-V 仮想マシン (VM) 内で Hyper-V を実行できるようにする機能です。 この数年でハードウェアが改良され、入れ子になった仮想化のユース ケースが拡大しています。 たとえば、入れ子になった仮想化は次の場合に役立ちます。

  • 入れ子になった VM でのアプリケーションまたはエミュレーターの実行
  • VM でのソフトウェア リリースのテスト
  • トレーニング環境でのデプロイ時間の短縮
  • Hyper-V によるコンテナーの分離の使用

最新のプロセッサには、仮想化をさらに高速かつ安全にするためのハードウェア機能が含まれています。 Hyper-V は、これらのプロセッサ拡張機能に依存して仮想マシンを実行しています (Intel VT-x や AMD-V など)。 入れ子になった仮想化では、このハードウェア サポートをゲスト仮想マシンでも利用できます。

次の図は、入れ子になっていない Hyper-V を示しています。 Hyper-V ハイパーバイザーは、ハードウェア仮想化機能 (オレンジ色の矢印) を完全に制御し、ゲスト オペレーティング システムには公開しません。

入れ子になった仮想化が無効になっている Hyper V のレベルの図。

これに対し、次の図は、入れ子になった仮想化が有効になっている Hyper-V を示しています。 この場合、Hyper-V は、ハードウェア仮想化拡張機能をその仮想マシンに公開します。 入れ子が有効になると、ゲスト仮想マシンは独自のハイパーバイザーをインストールし、独自のゲスト VM を実行します。

入れ子になった仮想化が有効になっている Hyper V のレベルの図。

動的メモリとランタイム メモリ サイズ変更

Hyper-V が仮想マシンの中で実行されているときに、仮想マシンのメモリを調整するには、仮想マシンをオフにする必要があります。 つまり、動的メモリが有効になっている場合でも、メモリの量が変動することはありません。 入れ子になった仮想化を有効にするだけでは、動的メモリやランタイム メモリ サイズ変更への影響はありません。

動的メモリが有効になっていない仮想マシンでは、仮想マシンがオンの状態でメモリの量を調整しようとすると失敗します。 これらに対応できなくなるのは、Hyper-V が VM の中で実行中のときに限られます。

サード パーティ製の仮想化アプリ

Hyper-V でない仮想化アプリケーションは、Hyper-V の仮想マシンでサポートされておらず、機能しない可能性があります。 仮想化アプリケーションには、ハードウェア仮想化拡張機能が必要なソフトウェアが含まれます。

サポートされるシナリオ

次のシナリオでは、運用環境での入れ子になった Hyper-V VM の使用が、Azure とオンプレミスの両方でサポートされています。 また、サービスとアプリケーションもサポートされていることを確認することをお勧めします。

入れ子になった仮想化は、Windows Server フェールオーバー クラスタリングやパフォーマンスに影響を受けやすいアプリケーションには適していません。 サービスとアプリケーションを完全に評価することをお勧めします。

Hyper-V VM 上の Hyper-V VM

Hyper-V VM 上で入れ子になった Hyper-V VM の実行は、テスト ラボと評価環境に適しています。 特に、構成を簡単に変更して保存できる状態である場合は、特定の構成に戻すために使用できます。 テスト ラボでは、通常、運用環境と同じサービス レベル アグリーメント (SLA) は必要ありません。

Hyper-V VM で実行されている Hyper-V VM を実行している運用環境がサポートされています。 ただし、サービスとアプリケーションもサポートされていることを確認することをお勧めします。 運用環境で入れ子になった Hyper-V VM を使用する場合は、サービスまたはアプリケーションが期待される動作であるかどうかを完全に評価することをお勧めします。

Azure で入れ子になった仮想化の設定の詳細については、Tech Community ブログ「Azure VM/VHD 用に入れ子になった仮想化をセットアップする方法」を参照してください。

Hyper-V 仮想化でのサード パーティ製の仮想化

サードパーティの仮想化を Hyper-V で実行できる場合がありますが、Microsoft ではこのシナリオをテストしません。 Hyper-V 仮想化でのサード パーティ製の仮想化はサポートされていません。ハイパーバイザー ベンダーがこのシナリオをサポートしていることを確認してください。

サード パーティ製の仮想化での Hyper-V 仮想化

サードパーティの仮想化で Hyper-V 仮想化を実行できる場合がありますが、Microsoft ではこのシナリオをテストしません。 サード パーティ製の仮想化での Hyper-V 仮想化はサポートされていません。ハイパーバイザー ベンダーがこのシナリオをサポートしていることを確認してください。

Hyper-V VM で入れ子になった Azure Stack HCI

Azure Stack HCI は、検証済みの物理ハードウェアで実行するように設計およびテストされています。 Azure Stack HCI は評価のために仮想マシンで入れ子にして実行できますが、入れ子になった構成の運用環境はサポートされていません。

Hyper-V VM で入れ子になった Azure Stack HCI の詳細については、「Azure Stack HCI で入れ子になった仮想化」を参照してください。

Hyper-V で入れ子になった状態で実行されている Hyper-V 分離コンテナー

Microsoft には、コンテナー向けの Hyper-V 分離が用意されています。 この分離モードでは、セキュリティが強化され、ホストとコンテナーのバージョン間の互換性が広がります。 Hyper-V 分離では、ホスト上で複数のコンテナー インスタンスが同時に実行されます。 各コンテナーは高度に最適化された仮想マシン内で実行され、事実上独自のカーネルを取得します。 HYPER-V 分離コンテナーはそれ自体とコンテナー ホスト間のハイパーバイザー レイヤーを使用して分離を提供するため、コンテナー ホストが HYPER-V ベースの仮想マシンである場合、パフォーマンスのオーバーヘッドが発生します。 関連するパフォーマンス オーバーヘッドは、コンテナーの起動時間、ストレージ、ネットワーク、および CPU 操作の点で発生します。

Hyper-V 分離コンテナーが Hyper-V VM で実行される場合は、入れ子にされた状態で実行されます。 Hyper-V VM を使用すると、多くの便利なシナリオが開かれますが、物理ホストの上で 2 つのレベルのハイパーバイザーが実行されるため、待機時間も増加します。

Hyper-V で入れ子になった Hyper-V 分離コンテナーの実行がサポートされています。

入れ子になった Hyper-V コンテナーの詳細については、「Windows Server コンテナーのパフォーマンス チューニング」を参照してください。

Hyper-V で入れ子になった Hyper-V VM で WSL2 を実行する

Linux 用 Windows サブシステム (WSL) は Windows オペレーティング システムの機能の 1 つであり、Linux ファイル システムを Linux のコマンド ライン ツールや GUI アプリと一緒に Windows 上で直接実行することを可能にします。

Hyper-V で入れ子になった Hyper-V VM での WSL2 の実行がサポートされています。

WSL 2 を VM で実行できるようにする方法の詳細については、「Linux 用 Windows サブシステムに関してよく寄せられる質問」を参照してください。

次のステップ