入れ子になった仮想化を使用すると、仮想マシン内で Hyper-V (または他のハイパーバイザー) を実行できるため、他の VM 内で仮想マシンが必要な強力な開発、テスト、学習シナリオが可能になります。 これは通常、Windows Server 2016 以降のバージョン、Windows 10 または Windows 11 Pro および Enterprise (Hyper-Vを使用)、およびサポートされている Azure 仮想マシン シリーズで使用できます。 入れ子になった仮想化では複雑さが生じます。ネットワーク、メモリ、CPU の互換性、ホスト/ゲストの構成、パフォーマンスには、多くの場合、慎重に考慮する必要があります。 このガイドでは、物理的およびクラウドベースの環境で入れ子になった仮想化の問題をトラブルシューティングするための構造化されたアプローチを提供します。
トラブルシューティング チェックリスト
特定の問題に取り組む前に、このチェックリストに従って、入れ子になった仮想化用に環境が正しく設定されていることを確認します。
ホストの互換性を確認します。
- ホストは、Windows Server 2016 以降のバージョン、Windows 10 または Windows 11 Pro または Enterprise です。
- ホスト CPU は VT-x (Intel) または AMD-V (AMD) をサポートします。BIOS/UEFI で有効になっているハードウェア仮想化。
ゲスト VM の設定を確認します。
- ゲスト VM は第 2 世代です。
- 互換性のある OS (Windows Server 2016 以降のバージョン、Windows 10、Windows 11、またはそれ以降のバージョン) を実行しているゲスト VM では、Hyper-V サポートされている Linux を選択します。
入れ子になった仮想化を有効にする:
Hyper-V の場合は、PowerShell を使用して設定します。
Set-VMProcessor -VMName "<VMName>" -ExposeVirtualizationExtensions $trueVM の電源がオフになっている必要があります。
CPU、メモリ、およびリソースの割り当て:
- 入れ子になった VM に少なくとも 2 つの仮想 CPU を割り当てます。
- 十分なメモリが割り当てられます (入れ子になった VM をホストしている VM には 4 GB を≥することをお勧めします)。
ネットワーク構成:
- ゲスト VM の "外部" 仮想スイッチを使用して、送信アクセスを有効にします。
- 必要に応じて、NAT/ポート転送が正しく設定されていることを確認します。
ホストとゲストを更新する:
- ホストとゲスト用の Windows OS に完全にパッチを適用して更新します。
- 最新の Hyper-V Integration Services とドライバーを使用します。
セキュリティとポリシーを確認します。
- Credential Guard と Device Guard によって、入れ子になった仮想化がブロックされる場合があります。
- 競合するグループ ポリシーもなく、ウイルス対策による Hyper-V プロセスのブロックもありません。
一般的な問題とその解決策を次に示します。
ネストされたVMはHyper-Vロールを開始することも、他のハイパーバイザーをインストールすることもできません。
- VM で Hyper-V を有効またはインストールするときのエラー。
- "Hyper-V をインストールできません: プロセッサに必要な仮想化機能がありません"、または同様のエラー メッセージ。
- ロールのインストールは、詳細なエラーメッセージが表示されずに失敗します。
根本原因
- ゲスト VM に公開されていない仮想化拡張機能。
- ゲスト VM が第 2 世代でも、サポートされていない OS/バージョンも実行されていません。
- 割り当てられているリソースが不足しています。
解決策
ゲスト VM の電源をオフにします。
ホストで PowerShell を実行します。
Set-VMProcessor -VMName "<VMName>" -ExposeVirtualizationExtensions $trueゲスト VM が第 2 世代 (Hyper-V Manager>VM プロパティ) であることを確認します。
少なくとも 2 つの仮想 CPU と ≥4 GB の RAM が割り当てられていることを確認します。
再起動して、ゲストの Hyper-V ロールを有効にして再試行します。
入れ子になった VM でのネットワーク接続の問題
- 入れ子になった VM は外部ネットワークにアクセスできません。
- 内部接続のみが機能し (ホスト <-> ゲスト)、ホスト <-> 物理 LAN <-> 入れ子型 VM では機能しません。
- 到達できない IP、ping の失敗、またはアプリケーション接続。
根本原因
- "内部" または "プライベート" として構成された仮想スイッチ。
- NAT の構成が正しくありません。ポートフォワーディングが設定されていません。
- トラフィックをブロックする Windows ファイアウォールまたはセキュリティ ソフトウェア。
解決策
Hyper-V マネージャーで、"外部" 仮想スイッチを作成または選択します。
入れ子になった VM のネットワーク アダプターに外部スイッチを割り当てます。
複数のゲストで NAT を使用する場合は、ポート転送を設定します。
netsh int portproxy add v4tov4 listenaddress=<host IP> listenport=<port> connectaddress=<nested VM IP> connectport=<port>Windows ファイアウォールを確認し、トラフィックを許可するルールを無効または作成します。
ネットワーク構成が変更された場合は、VM を再起動します。
入れ子になった仮想化でのパフォーマンスの低下
- 入れ子になった VM は、オペレーティング システムとロールのインストールに時間がかかったり、遅れたり、失敗したりします。
- ディスクとネットワーク I/O のボトルネック。
- ホストでのリソース使用率が高い。
根本原因
- 十分でないリソース(CPU、RAM、ディスク)。
- オーバーコミットされたホスト リソース。
- 古いホスト/ハイパーバイザー ドライバー。
- 仮想スイッチの構成による帯域幅の制限。
解決策
- ゲスト VM vCPU を増やします (少なくとも 2 つ、負荷の高いワークロードには ≥4 をお勧めします)。
- 十分な RAM (ゲストには ≥4 GB、ホストの場合は ≥8 GB) を割り当てます。
- パフォーマンスを向上させるために、動的に拡張するのではなく、固定サイズの VHD を使用します。
- ホスト ディスクとゲスト ディスク用の SSD ベースのストレージを確保します。
- ホストとゲスト統合サービスとドライバーを更新します。
- 他のホスト VM でリソースを集中的に消費するアプリケーションを実行しないようにします。
入れ子になった Hyper-V のインストールまたは操作がセキュリティ ポリシーによってブロックされる
- Hyper-V ロールのインストールがブロックされました。
- "Credential Guard" または "Device Guard" を参照するエラー。
- "仮想化ベースのセキュリティが有効になっています。 入れ子になった仮想化はサポートされていません。
根本原因
- VBS、Credential Guard、Device Guard がホストまたはゲストでアクティブです。
- グループ ポリシーまたはレジストリ設定により、仮想化拡張機能が禁止されます。
解決策
ホストとゲストで Credential Guard/Device Guard を無効にします。
- グループ ポリシー エディター (gpedit.msc) >Computer Configuration>Administrative Templates>System>Device Guard を使用します。
レジストリによって制御される場合:
reg delete HKLM\System\CurrentControlSet\Control\DeviceGuard /v EnableVirtualizationBasedSecurity /f reg delete HKLM\System\CurrentControlSet\Control\DeviceGuard /v RequirePlatformSecurityFeatures /fVM を再起動してください。
VBS が "無効" であることをMsinfo32.exeで確認します。
NAT とポート転送の問題
- 外部ネットワークから入れ子になった VM に到達できません。
- NAT ドライバーを起動するときに、"プロセスは別のプロセスによって使用されているため、ファイルにアクセスできません" という問題が発生します。
- WinNAT サービスの開始に失敗します。
根本原因
- ポートの静的マッピングが正しくありません。
- NAT 構成の競合。
- WinNAT ファイル ロック。
解決策
正しくない NAT 構成を削除します。
netsh nat delete <incorrect mapping>ホストを再起動し、NAT/WinNAT サービスがロックされていないことを確認します。
必要な接続のために NAT/ポート プロキシを再構成します。
netsh int portproxy add v4tov4 listenaddress=<host IP> listenport=<port> connectaddress=<nested VM IP> connectport=<port>ping とアプリケーション ポートを使用して外部ホストからの接続をテストします。
スナップショット/チェックポイントと差分ディスクの問題
- スナップショットが消えるか、マージできません。
- マージ操作が失敗し、"指定されたファイルが見つかりません (0x80070002)" または "仮想ハード ディスクのチェーンが壊れています (0xC03A000D)。"
根本原因
- 親 VHD ファイルが移動または削除されました。
- "ハードウェア障害"。
- 差分ディスク チェーンの破損。
解決策
すべての VHD/AVHDX ファイルが元の場所にあることを確認します。
PowerShell を使用してチェーンとマージを確認します。
Get-VHD -Path <AVHDX path> | fl \* Merge-VHD -Path <child AVHDX> -DestinationPath <parent VHD>データ復旧が必要な場合は、バックアップから親ディスクを復元してから、マージを再試行します。
VM リソースの変更が認識されない (RAM の増加など)
- VM は、構成後に RAM の増加を検出しません。
- エラーはありませんが、リソースは以前の割り当て時に残ります。
根本原因
- VM がオフの間に構成が適用またはコミットされませんでした。
- プラットフォームの制限(ネスト、クラスター、またはホット追加はサポートされていません)。
解決策
- リソースのサイズを変更する前に VM の電源をオフにします。
- Hyper-V Manager>EDIT VM settings>Increase RAM を使用します。
- VM を起動し、ゲスト OS でリソースの割り当てを確認します。
- ネストされたシナリオでのホットアドサポートに関するドキュメントを確認してください。
データ コレクション
トラブルシューティングとエスカレーションのために、次のデータを収集します。
システム情報:
- ホストとゲスト OS のバージョン、ビルド番号。
- CPU の種類、RAM の構成。
仮想マシンの構成:
- Hyper-V マネージャーの詳細 (世代、CPU、RAM、ディスク)。
- 仮想スイッチ/ネットワークのセットアップ。
イベント ログ:
- Hyper-V ログ: VMMS、Worker ログ、システム、アプリケーション。
- フェールオーバーのセットアップ時にクラスター ログが記録されます。
PowerShell の出力:
Get-VM -Name <VMName> | fl \* Get-VMProcessor -VMName <VMName> Get-VHD -Path <AVHDX path> | fl \*ネットワーク トレース:
netsh trace start capture=yes scenario=Virtualization,NetConnection tracefile=<path> netsh trace start capture=yes scenario=NetConnection level=5 maxsize=1024 tracefile=<path>スクリーンショット/エラー メッセージ:
インストール エラー、ロールの追加エラー メッセージ、デバイス マネージャーの状態。
Procmon トレース (インストール/ロールの有効化に関する問題の場合)。
MiniDump ファイル (ホストまたは VM がクラッシュした場合)。
一般的な問題のクイック リファレンス 表
| 問題点 | 現象/エラー | 根本原因 | 解決手順 |
|---|---|---|---|
| 入れ子になった VM が Hyper-V を開始できない | ロールのインストールが失敗する。CPU 拡張機能エラー | 拡張機能が公開されていません。Gen1 VM | VM の電源をオフにします。 Set-VMProcessor -ExposeVirtualizationExtensions $true;Gen2 VM を使用し、≥2 vCPU を割り当てます。 |
| ネットワーク接続の問題 | 入れ子になった VM にインターネット/LAN がない | 内部スイッチ/NAT 構成の誤り | 外部スイッチを使用する。正しい NAT 構成。ファイアウォール規則を許可します。 |
| パフォーマンスが低下する | 遅れ;リソース使用率が高い | プロビジョニングされていないリソース | vCPU/RAM を増やす。SSD を使用する。ドライバーを更新します。 |
| セキュリティによって役割または Hyper-V のインストールがブロックされました | ポリシーのエラーまたは VBS/クレデンシャルガードのエラー | Device/Credential Guard が有効になっている | VBS/Credential Guard を無効にします。リブート。 |
| NAT/ポート転送が失敗する | 入れ子になった VM に接続できません。WinNAT エラー | 誤ったマッピング/サービスロック | NAT 構成の削除/再追加。ホストを再起動します。コマンドを netshportproxy します。 |
| スナップショット/ディスク チェーンが壊れている | マージが失敗する。ファイルが見つかりません。破損したチェーン エラー | 親ディスクの移動/削除 | 親 VHD を復元する。 Get-VHD/Merge-VHD PowerShell コマンドレット。 |
| VM が RAM の増加を認識しない | エラーなし。割り当て変更なし | 設定が保存または適用されていない、プラットフォーム | VM の電源をオフにする。設定を編集する。VM を起動する。ホスト/クラスター/ネストされたサポートを確認する。 |
入れ子になった仮想化は、リソース、ネットワーク、構成、およびセキュリティの課題が頻繁に発生する強力で複雑な機能です。 トラブルシューティングは、正しいセットアップの検証から始まり、役割のインストールの問題、ネットワークの構成ミス、ストレージ チェーン エラー、セキュリティ ポリシーによるブロックされたインストールなど、一般的なエラー モードに対処することで続行されます。 安定した運用には、慎重なデータ収集、ステップバイステップの診断、プラットフォームの制限事項の理解が不可欠です。 永続的な問題やサポートされていないシナリオでは、プラットフォームのサポートまたはエスカレーションに関与することが必要になる場合があります。