Azure Lab Services で入れ子になった仮想化を有効にする

入れ子になった仮想化では、複数の仮想マシン (VM) 環境を含む Azure Lab Services のラボがサポートされます。 複数 VM 環境用にラボ テンプレートを準備できます。 ユーザーは、ラボ VM で入れ子になった仮想化を有効にしたり、入れ子になった VM をその VM にインストールしたりする必要はありません。 ラボを発行すると、各ラボ ユーザーには、入れ子になった仮想マシンが既に含まれているラボ VM があります。

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

入れ子になった仮想化の概念、考慮事項、および推奨事項については、「Azure Lab Services の入れ子になった仮想化」を参照してください。

Note

Hyper-V 以外の仮想化アプリケーションは、入れ子になった仮想化でサポートされていません。 これには、ハードウェア仮想化拡張機能を必要とするすべてのソフトウェアが含まれます。

重要

ラボの作成時、仮想マシン サイズとして [Large (Nested Virtualization)]\(大 (入れ子になった仮想化)\) または [Medium (Nested Virtualization)]\(中 (入れ子になった仮想化)\) のサイズを選択します。 入れ子になった仮想化は、それ以外の場合は機能しません。

入れ子になった仮想化の有効化

テンプレート VM で入れ子になった仮想化を有効にするには、まずリモート デスクトップ (RDP) クライアントを使用して VM に接続します。 その後、PowerShell スクリプトを実行するか、Windows ツールを使用して、構成の変更を適用できます。

重要

入れ子になった仮想化は、Windows 11 で使用することをお勧めします。 Windows クライアント OS に Hyper-V をインストールするときに作成される "既定のスイッチ" を利用できます。 ネットワーク設定を追加で制御する必要がある場合は、Windows Server オペレーティング システム上で入れ子になった仮想化を使用する必要があります。

PowerShell スクリプトを使用して、Azure Lab Services のテンプレート VM に入れ子になった仮想化を設定できます。 次の手順では、Lab Services Hyper-V スクリプトを使用する方法について説明します。 このスクリプトは Windows 11 を対象としています。

  1. こちらの手順に従って、テンプレート マシンに接続して更新します

  2. 管理者として PowerShell を起動します。

  3. スクリプトを正常に実行するには、実行ポリシーの変更が必要になる場合があります。 次のコマンドを実行します。

    Set-ExecutionPolicy bypass -force
    
  4. スクリプトをダウンロードして実行し、Hyper-V の機能とツールを有効にします。

    Invoke-WebRequest 'https://aka.ms/azlabs/scripts/hyperV-powershell' -Outfile SetupForNestedVirtualization.ps1
    .\SetupForNestedVirtualization.ps1
    

    Note

    スクリプトでは、VM の再起動が必要になる場合があります。 その場合は、Azure Lab Services Web サイトからテンプレート VM を停止して起動し、出力に「スクリプトが完了しました」と表示されるまでスクリプトを再実行します。

  5. 実行ポリシーを忘れずにリセットします。

    Set-ExecutionPolicy default -force
    

これで、入れ子になった仮想化で使用するようにテンプレート VM が構成されました。 その中に VM を作成できます。 新しい Hyper-V VM を作成する場合は、スクリプトで指定されているスイッチを使用します。

別のラボ VM 内の入れ子になった VM に接続する

1 つのラボ VM 上にある入れ子になった VM から、別のラボ VM 内でホストされている入れ子になった VM に接続するには、追加の構成が必要です。 Add-NetNatStaticMapping PowerShell コマンドレットを使用して、NAT インスタンスに静的マッピングを追加します。

Note

ping コマンドを使用して、入れ子になった VM との間の接続をテストすることはできません。

Note

静的マッピングは、プライベート IP アドレスを使用する場合のみ機能します。 ラボ ユーザーが接続している VM は、ラボ VM である必要があります。また、高度なネットワークを使用している場合は、VM が同じネットワーク上にある必要があります。

シナリオ例

次のサンプル lab setup で考えてみましょう。

  • Lab VM 1 (Windows Server 2022、IP 10.0.0.8)

    • 入れ子になった VM 1-1 (Ubuntu 20.04、IP 192.168.0.102、SSH が許可済み)
    • 入れ子になった VM 1-2 (Windows 11、IP 192.168.0.103、リモート デスクトップの有効化と許可)
  • ラボ VM 2 (Windows Server 2022、IP 10.0.0.9)

    • 入れ子になった VM 2-1 (Ubuntu 20.04、IP 192.168.0.102、SSH が許可済み)
    • 入れ子になった VM 2-2 (Windows 11、IP 192.168.0.103、リモート デスクトップの有効化と許可)

ラボ VM 2 から、入れ子になったラボ VM 1-1 への、SSH 経由での接続を有効にします。

  1. ラボ VM 1 で、静的マッピングを追加します。

    Add-NetNatStaticMapping -NatName "LabServicesNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.102 -InternalPort 22 -ExternalPort 23
    
  2. ラボ VM 2 で、SSH を使用して接続します。

    ssh user1@10.0.0.8 -p 23
    

ラボ VM 2 またはその入れ子になった VM から、入れ子になったラボ VM 1-2 への、RDP を使用した接続を有効にします。

  1. ラボ VM 1 上で、静的マッピングを追加します。

    Add-NetNatStaticMapping -NatName "LabServicesNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.103 -InternalPort 3389 -ExternalPort 3390
    
  2. ラボ VM 2 またはその入れ子になった VM 上で、RDP を使用して 10.0.0.8:3390 に接続します。

    重要

    ユーザー名の前に ~\ を含めます。 たとえば、~\Administrator または ~\user1 です。

トラブルシューティング

これらの提案により、いくつかの一般的な問題に対処できる可能性があります。

Linux VM に黒い画面のみが表示されている

入れ子になった VM 構成を確認するには、次の手順を実行します。

Hyper-V がエラー The virtual machine is using processor-specific xsave features not supported で開始しない

  • このエラーは、ラボ ユーザーが Hyper-V VM を保存済みの状態のままにしておくと発生する可能性があります。 Hyper-V マネージャーで VM を右選択し、[保存された状態の削除] を選択します。

    注意事項

    保存された状態を削除すると、保存されていない作業はすべて失われますが、ディスクに保存されているものはそのまま残ります。

  • このエラーは、Hyper-V VM がオフになっていて、VHDX ファイルが破損している場合に発生する可能性があります。 ラボのユーザーが VDHX ファイルのバックアップを作成した場合、またはスナップショットを保存した場合は、その時点から VM を復元できます。

Hyper-V VM の自動シャットダウン アクションをシャットダウンに設定することをお勧めします。

Hyper-V が遅すぎる

Hyper-V マネージャーで Hyper-V VM に割り当てられている vCPU とメモリの数を増やします。 vCPU の合計数は、ホスト VM (ラボ VM) のコア数を超えることはできません。 既定のオプションである変数メモリを使用している場合は、VM に割り当てられているメモリの最小量を増やします。 割り当てられたメモリの最大量 (変数メモリを使用している場合) は、ホスト VM のメモリ量を超える可能性があります。 このアプローチでは、Hyper-V VM のうちの 1 つのみに対して集中的な操作を完了する必要がある場合に、より柔軟に対応できます。

ラボに中規模 (入れ子になった仮想化) VM サイズを使用している場合は、代わりに大規模 (入れ子になった仮想化) VM サイズを使用して、各ラボ VM のコンピューティング リソースを増やすことを検討してください。

入れ子になった VM に対してインターネット接続が機能しない

  • 入れ子になった仮想化を有効にするための前の手順を行ったことを確認します。 PowerShell スクリプト オプションの使用を検討してください。

  • Windows Server を使用している場合は、ホスト VM (ラボ VM) に DHCP ロールがインストールされているかどうかを確認します。

    DHCP サーバーとしてラボ VM を実行することはサポートされていません。 「仮想ネットワークに DHCP サーバーをデプロイできますか」を参照してください。 ラボ VM の設定を変更すると、他のラボ VM で問題が発生する可能性があります。

  • Hyper-V VM のネットワーク アダプター設定を確認します。

    • DNS サーバーと DHCP サーバーの IP アドレスを 168.63.129.16 に設定します。

    • ゲスト VM IPv4 アドレスが手動で設定されている場合は、Hyper-V スイッチに接続されている NAT ネットワークの範囲内にあることを確認してください。

    • Hyper-V DHCP ガードルーター ガードを有効にしてみてください。

      Get-VMNetworkAdapter * | Set-VMNetworkAdapter -RouterGuard On -DhcpGuard On
      

Note

Hyper-V VM からホスト VM への ping コマンドは使用できません。 インターネット接続をテストするには、Web ブラウザーを起動し、Web ページが正しく読み込まれることを確認します。

Hyper-V VM を起動できない

ラボを作成するときに管理者以外のユーザーを選択することもできます。 Hyper-V VM を起動または停止できるようにするには、このようなユーザーを Hyper-V 管理者グループに追加する必要があります。 Hyper-V ユーザーと管理者以外のユーザーの詳細については、「管理者以外のユーザー」を参照してください。

テンプレート VM で入れ子になった仮想化を構成したので、Hyper-V を使用して入れ子になった仮想マシンを作成することができます。 Microsoft Evaluation Center を参照して、使用可能なオペレーティング システムとソフトウェアを確認してください。