Microsoft Azure でネスト仮想化を有効にする方法
Ready to See CloudLabs in Action?
Turn your ideas into hands-on experiences. Tell us what you're looking for, and team CloudLabs will help you find the right solution.
クラウドテクノロジーやソフトウェアプログラムは、長年にわたっていくつかの進化的な変化を遂げています。私たちは Windows シリーズ、Linux、macOS といった、自分の好みに合った特定のオペレーティングシステムを使うことに慣れてきましたが、今では、さまざまなアプリケーション向けに異なる OS(オペレーティングシステム)を同時に実行し、利用可能なリソースを最大限に活用できる自由を手にしています。
これは、ネスト仮想化という概念によって実現できます。
ネスト仮想化とは何か?
VM の中に VM をインストールする効率性、それがネスト仮想化です。より正確に言えば、ハードウェアコンポーネントの上に重ねられたハイパーバイザーが必要です。ホストハイパーバイザーと呼ばれるこのハイパーバイザーは、コンピューターのハードウェアからリソースを取り出し、私たちが外部ゲストと呼ぶ仮想マシンを作成します。ネスト仮想化では、作成した VM の内部にハイパーバイザーをインストールでき、これはゲストハイパーバイザーと呼ばれます。そして、そこから既存の VM の中に複数の VM を起動できます。
Hyper-V マシンを実行するための前提条件
ゲスト仮想マシンの内部で Hyper-V ホストを実行するための要件は、次のとおりです。
- Hyper-V のホストとゲストは、どちらも Windows Server 2016 もしくは Windows 10 Anniversary update 以降である必要があります
- VM の構成レベルは 8.0 以上である必要があります
- 現在サポートされているのは、VT-x および EPT テクノロジーを実行する Intel プロセッサのみです
Azure 固有の要件
- Windows Server 2016 の VM を作成する
- すべての v3 仮想マシンはネスト仮想化をサポートしています
ハイパーバイザーとそのユースケース
sandbox 環境に実装できるハイパーバイザーには、主に 2 つのタイプがあります。
タイプ 1 ハイパーバイザー:「ベアメタル」ハイパーバイザーとも呼ばれ、仮想環境をホストするコンピューターに直接インストールされます。1 台のマシンで多数の仮想サーバーを実行したい場合は、これが最適な選択肢です。Microsoft Hyper-V、Citrix XenServer、VMware ESXi が、最も一般的なタイプ 1 ハイパーバイザーです。
タイプ 2 ハイパーバイザー:クラウドにおけるネットワーク仮想化には、タイプ 2 の「ホスト型」ハイパーバイザーが必要です。ハイパーバイザーは、ホストシステムの上で動作するホスト型ソフトウェアの一種です。タイプ 2 ハイパーバイザー上では複数のオペレーティングシステムを実行できます。さまざまなオペレーティングシステムをテストしたい企業にとって最適な選択肢です。Microsoft VirtualPC、VMWare、VMWork が、最も一般的なタイプ 2 ハイパーバイザーです。
Azure における仮想化
Azure に関して言えば、Docker を使って Hyper-V コンテナを作成できるだけでなく、ネスト仮想化を使って VM の中に VM を作成することもできます。このネスト環境は、開発、テスト、クライアント向けトレーニング、デモなど、さまざまな領域での要求に応えるうえで、大きな汎用性をもたらします。
たとえば、現在オンプレミスで Hyper-V ホストを使用しているテストチームがあるとしましょう。彼らは、仮想化されたテストマシンとしてネスト VM を使うことで、ワークロードを Azure へ簡単に移行できるようになります。ネスト VM ホストは物理的な Hyper-V ホストを置き換えるために使用され、各テストエンジニアは、Azure 上で自分に割り当てられた VM ホストの Hyper-V 機能を完全に制御できるようになります。
ネスト仮想化を導入するメリット
ネスト仮想化は、従来の VM と比較して、より高い柔軟性を提供し、間接コストを削減します。
VM 内で Hyper-V を実行することで、仮想環境をさらに最適化でき、次のようなメリットが得られます。
- コスト削減:新しいハードウェアを購入することなく、使用できるツールの数や実行できるワークロードの数を増やせます。
- 柔軟性の向上:同一のサーバー上で多数のハイパーバイザーを実行できるため、柔軟性が高まります。
- 以前のバージョンのソフトウェアの利用:以前のバージョンの Windows、または Windows 以外のオペレーティングシステムを必要とするソフトウェアを実行できます。
- テスト用の構成:さまざまなオペレーティングシステムを作成・アンインストールし、クライアントのビジネスにどれが最適かを確認できます。
- コンテナのサポート:コンテナの柔軟性と仮想マシンのセキュリティを組み合わせられます。コンテナは、アプリの開発やデプロイにおいて、オーバーヘッドが少なく、より高い柔軟性をもたらします。
現実世界におけるネスト仮想化の用途:
- ネスト仮想化を使って、開発用またはテスト用のインスタンスを作成します。専用の物理サーバーを購入する代わりに、ハイパーバイザーを備えたサーバーをプロビジョニングし、必要に応じて VM を構築します
- ネスト仮想化を使って、新しいメンバーに Hyper-V についてトレーニング/教育を行います
- ネスト仮想化を、プライベートクラウドの代替手段として使用します。プライベートクラウドの構築は困難でコストがかかる場合があります
Azure で Hyper-V の VM を作成する:
- https://portal.azure.com/ のページで、Web インターフェイスの Virtual machines を選択します。
- Virtual machines のページ(Home > Virtual Machine)で、Create をクリックして仮想マシンを作成します。
- VM の作成ページには複数のタブがあり、各タブにはいくつかのセクションが含まれています。
- まず、サブスクリプションタブで下にスクロールし、仮想マシンを配置したい場所を選択して、サブスクリプションの詳細を追加する必要があります。
- 次に、リソースグループを選択するか、新規に作成する必要があります。
- さらに、仮想マシンに名前を付ける必要があります
- 次に、仮想マシンを配置したいリージョンを追加する必要があります。
- イメージの種類で Windows の VM を選択します。Windows のイメージは、206、2019、2022 のいずれでも選択できますが、ここでは 2022 のイメージを選択しています。
- ここで、マシンのサイズを選択する必要があります。マシンサイズとして D2s_V3 を選択しました。
注:
*ネスト仮想化をサポートする Azure VM のサイズ * * *
*D_v3 * * *
*Ds_v3 *
-
E_v3 *
-
Es_v3 *
-
M *
-
F2s_v2 – F72s_v2*
- 次に、VM への認証のためのユーザー名とパスワードを設定する必要があります。
- ここでは Windows の VM なので、下の画像のように、受信規則で VM への RDP(Remote Desktop Protocol)用のポート 3389 を有効にしていることを確認する必要があります。
- ここでは Hyper-V 上で複数のゲスト VM を実行する必要があるため、Premium SSD ディスクの使用を推奨します。したがって、私たちは Premium SSD を使用しており、ディスクタブのその他の設定は既定のままで構いません。
- Next をクリックします。
- ここで、VM を配置するネットワークとサブネットを追加する必要があります。
- Create new をクリックして Virtual Network を作成できます
- 仮想マシン用の仮想ネットワークを作成するには、下の画像を参照してください
- その他の設定は既定のままにします。
- 要件に応じて、診断を無効にする、既定の Enable with managed storage account, の設定を使用する、あるいは、すでに自分で作成したストレージアカウントがあればそれを使用する、のいずれかを選択できます。参考として下の画像を参照してください。
- その他の設定は既定のままで構いません。
- ここで、Review and Create. をクリックします。
- VM の準備が整ったら、下の手順に従って RDP クライアントを使用して VM にアクセスできます。
ステップ 1: VM から取得したパブリック IP アドレスをコピーします。
ステップ 2: RDP クライアントを開き、取得したパブリック IP を貼り付けて、接続をクリックします。
ステップ 3: ここで、認証用に追加した資格情報を入力して接続をクリックすると、VM にリダイレクトされます。
Hyper-V ロールをインストールする:
作成したばかりの VM のパブリック IP を使ってログインしたら、Server Manager を使って Hyper-V ロールをインストールでき、Add roles and features をクリックします。
- Before you begin のページで Next をクリックします
- Installation Type で Role-based or feature-based installation を選択します
[Text Wrapping Break]
- ここで、Server Pool から Destination server を選択します
- ここで、インストールしたい Hyper-V ロールを選択します
- Add Feature をクリックすると、Hyper-V ロールに必要なすべての機能がインストールされます
- ここで、next をクリックして Hyper-V ロールのインストールを進めます
- Hyper-V ゲスト VM の External Switch として使用できる、Microsoft Hyper-V ネットワークアダプター(Ethernet)を選択します
- 外部モードの Hyper-V 仮想スイッチは、仮想マシンに接続された仮想アダプターと管理オペレーティングシステムとの間の通信を可能にします。単一または複数をまとめた(teamed)物理アダプターを使用して物理スイッチに接続し、これによって他のシステムとの通信を可能にします。
- ライブマイグレーションの認証に使用したいプロトコルを選択します。
Windows Server において、live migration は Hyper-V の機能です。これにより、目立ったダウンタイムを発生させることなく、稼働中の仮想マシンをある Hyper-V ホストから別のホストへ移動できます。ライブマイグレーションの主なメリットは、稼働中の仮想マシンが単一のホストマシンに縛られないことです。
これにより、仮想マシンホストを廃止または更新する前にそれを空にするといった作業が可能になります。ライブマイグレーションは、Windows Failover Clustering と組み合わせることで、高可用性かつ耐障害性のあるシステムの構築を可能にします。
- ここで、仮想ハードディスクファイルおよび仮想マシン構成ファイルの既定の場所を選択します。
- ここで install をクリックし、VM を再起動します。
Hyper-V でネットワークを設定する:
- インストールが完了したら、Server Manager で Tools をクリックし、Hyper-V manager をクリックします
- では、Internal という名前の Virtual NAT スイッチを作成しましょう
- スイッチが作成されたら、以下の cmdlet を実行して Virtual Switch の ifIndex 番号を調べます。この番号は 17 です。
- では、Default Gateway の IP アドレスを作成しましょう
- 次に、アドレス空間 192.168.100.0 で NAT サブネットを作成します。これは、私が作成するすべての VM が、このサブネットの範囲内に存在する必要があることを意味します。
- では、Hyper-V の中に VM を作成しましょう。New -> Virtual Machine をクリックします
- New Virtual Machine Wizard のウィンドウで、Before You Begin のページで Next をクリックします。
- Specify Name and Location のページで、Name ボックスに新しい仮想マシンの名前を入力します。この例では、VM の名前は L1-VM です。
新しい VM の場所を変更する必要がある場合は、Store the virtual machine in a different location ボックスにチェックを入れ、Location ボックスでパスを参照するか入力します。指定したフォルダーパスが存在しない場合、ウィザードがそれを作成します。
- 次に、Specify Generation のページで、VM の世代バージョンを選択します。
選択肢は次のとおりです。
- Generation 1:Windows 7 および Windows Server 2008 以降の 32 ビットおよび 64 ビットのゲストオペレーティングシステムをサポートします。この例では Generation 1 の VM を使用します。
- Generation 2:Windows 8 および Windows Server 2012 以降の 64 ビットのゲストオペレーティングシステムのみをサポートします。この世代は UEFI ベースのファームウェアも備えています。VM の世代を選択したら、Next をクリックします。
- Assign Memory のページで、VM に割り当てるメモリ量を指定します。この例では、VM に 4GB(4096 MB)のメモリを割り当てます。
Use Dynamic Memory for this virtual machine ボックスのチェックを外します。Hyper-V のネスト VM は動的メモリをサポートしていません。メモリ設定を確定したら、Next をクリックします
- Configure Networking のページで、この VM に接続したいネットワークアダプターを選択します。前の手順で作成したものを接続しました。
- 次に、Connect Virtual Hard Disk のページでは、次のオプションがあります。
- Create a virtual hard disk:このオプションは新しい仮想ハードディスク(VHD)を作成し、名前、場所、サイズをカスタマイズできます。新しい VHD は空であるため、後でオペレーティングシステムをインストールする必要があります。
- Use an existing virtual hard disk:このオプションでは、新しく作成する代わりに、VM に接続したい既存の VHD(お持ちの場合)を選択できます。
- Attach a virtual hard disk later:この手順をスキップし、VHD なしで VM の作成を続行したい場合は、このオプションを選択します。VM を作成した後でも、新しい VHD を作成したり、既存の VHD を接続したりできます。
- Installation Options のページで、オペレーティングシステム(OS)をインストールする方法を選択します。私たちは ISO オプションを使ってインストールしました(iso は、これから使用する windows 2016(Windows)と Ubuntu(Linux)のものを、私たちが chrome からダウンロードしました):
- 最後に、Completing the New Virtual Machine Wizard のページで、新しい VM の説明を確認します。手順を飛ばしていないことを確認できたら、Finish をクリックします。
- では、作成した VM の設定に移動し、ネットワークアダプターを InternalNATSwitch に変更しましょう。
注:- この VM の作成時にすでにこのスイッチを接続しているため、この手順はスイッチを確認するために行うことができます。
では、ネットワークアダプターの IP アドレスを、NAT ネットワークと同じサブネット内になるように、NAT の既定のゲートウェイ(192.168.100.11)で構成しましょう
- これで、ゲスト VM を確認でき、インターネットが有効になっています。
Linux Ubuntu の ISO もダウンロードしているので、次に Linux ゲスト VM でインターネットを構成します。
ゲスト VM の作成については上記と同じ手順に従い、iso のセクションに Ubuntu の ISO を追加し、ゲスト VM の名前を以下のように指定するだけです: -
では、ネットワークアダプターの IP アドレスを、NAT ネットワークと同じサブネット内になるように、NAT の既定のゲートウェイ(192.168.100.12)で構成しましょう
- これで、Linux ゲスト VM を確認でき、インターネットが有効になっています。
まとめ:
ネスト仮想化は、Azure で稼働する Microsoft の Hyper-V プラットフォームにとって、大きな前進です。Azure は、Microsoft の世界クラスのデータセンターインフラストラクチャの上で稼働し、どこからでも利用できる強力なインフラストラクチャプラットフォームを提供します。Azure を利用してネスト VM を実行することは、DEV/TEST 用途、さらには Hyper-V コンテナのような本番用途向けのリソースを簡単にプロビジョニングするための優れた方法です。Azure で稼働するネスト仮想マシンのプロビジョニングは、わずか数ステップで簡単に実現でき、そのほとんどは PowerShell を使って行えます。これは、オンプレミスだけでなく Azure のパブリッククラウド環境においても、Hyper-V の管理者がネストされたリソースをプロビジョニングするための優れたツールとなります。これにより、リソースや prod/dev/test 環境をほぼ無限にスケールできます。
ネスト仮想化を使用する理由は数多くあります。高度な柔軟性、効果的なワークロード管理、テストやトレーニングの目的、そしてそのすべてを追加のハードウェアを必要とせずに実現できることです。ホストハイパーバイザーとゲストハイパーバイザー、あるいはサポート対象の OS との間に互換性の問題が生じることもありますが、適切に対処すれば、これらの課題を乗り越え、より高度なテクノロジーを最大限に活用できます。
Ready to See CloudLabs in Action?
Turn your ideas into hands-on experiences. Tell us what you're looking for, and team CloudLabs will help you find the right solution.




