2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Nested Hyper-Vのかんたん設定PowerShellの内容解説

Posted at

この記事は、「クラウド時代のシステム管理の記事を転記したものです。
前回のBlog記事ではPowerShellのScriptを使ってかんたんにNested Hyper-Vを使うための設定方法について解説しました。今回は、設定に使ったPowerShellの内容について解説しながら、Nested Hyper-V設定の詳細を見ていきます。

1. Nested Hyper-V設定PowerShellのダウンロード

解説対象PowerShell Scriptはgithub上にあるEnable-NestedVm.ps1です。以下、「〇〇行目」という記載はこのファイルの行番号を指すものとします。

2. Enable-NestedVm.ps1の実行内容解説

2-1. 1~16行目:引数チェックと定数の定義

最初の16行で引数としてVM名の文字列が定義されていない、もしくは空文字の場合、使用方法を出力します。空でない文字列が渡された場合は定数として4GBを定義します。

2-2. 17~51行目:管理者権限での実行

Nested Hyper-Vの設定にはAdministrator権限が必要なので、Script実行ユーザーに権限があるか確認します。Admonistrator権限で実行されている場合はWindowのタイトルバーに管理者権限である旨を記載し、権限がない場合、Administrator権限でのrunasを実行します。

2-3. 52~68行目:仮想マシン設定取得

Nested Hyper-Vを設定する対象仮想マシンについて、以下の情報を取得し、一つのオブジェクトとして定義します。

項目 意味
ExposeVirtualizationExtensions CPUの仮想化支援命令を仮想マシンに見せるかどうか
DynamicMemoryEnabled Dynamic Memoryの設定が有効になっているかどうか
SnapshotEnabled Snapshotを取得しているか
State 仮想マシンの電源状態がOn/Off/保存状態かどうか
MacAddressSpoofing MACアドレス偽装を有効にしているかどうか
MemorySize 仮想マシンのメモリーサイズ

2-4. 69~107行目:Nested仮想化に適した状態か確認

2-3.で取得した情報をもとに、Nested仮想化に適した状態であるかどうかをチェックします。すでにExposeVirtualizationExtensionsの設定が実施済みの場合は設定を再度行わず終了となります。

2-5. 108~117:Nested仮想化設定実行の確認

Y/Nで本当にNested仮想化設定を行うか入力します。

2-6. 118~131行目:Nested仮想化の必須設定投入

Nested仮想化の必須設定を行うため、すべてのSnapshotの削除(結合)、保存状態の削除、仮想マシンの電源OFFを実行し、その後に下記2項目の設定変更を行います。

変更する項目 変更後の値
ExposeVirtualizationExtensions True
DynamicMemoryEnabled False

2-7. 132~146行目:MACアドレス偽装を有効に設定

Nested仮想化された仮想マシンから外部に通信できるようにするため、MACアドレス偽装を有効に設定します。Nested Hyper-V内に閉じたネットワークしか利用しない場合は設定不要です。外部と直接(L2接続で)通信するためには必要な設定です。

2-8. 147~158行目:メモリーサイズを4GBに設定

推奨される最低メモリー容量は4GBであるため、仮想マシンのメモリーが4GB未満の場合は、4GBに設定することが可能です。

以上でEnable-NestedVm.ps1の内容の説明が完了しました。意外と丁寧に事前チェックをしており、許可を出した後はガツガツVMを停止して設定変更を行います。

)」の記事を転記したものです。

前回のBlog記事ではPowerShellのScriptを使ってかんたんにNested Hyper-Vを使うための設定方法について解説しました。今回は、設定に使ったPowerShellの内容について解説しながら、Nested Hyper-V設定の詳細を見ていきます。

1. Nested Hyper-V設定PowerShellのダウンロード

解説対象PowerShell Scriptはgithub上にあるEnable-NestedVm.ps1です。以下、「〇〇行目」という記載はこのファイルの行番号を指すものとします。

2. Enable-NestedVm.ps1の実行内容解説

2-1. 1~16行目:引数チェックと定数の定義

最初の16行で引数としてVM名の文字列が定義されていない、もしくは空文字の場合、使用方法を出力します。空でない文字列が渡された場合は定数として4GBを定義します。

2-2. 17~51行目:管理者権限での実行

Nested Hyper-Vの設定にはAdministrator権限が必要なので、Script実行ユーザーに権限があるか確認します。Admonistrator権限で実行されている場合はWindowのタイトルバーに管理者権限である旨を記載し、権限がない場合、Administrator権限でのrunasを実行します。

2-3. 52~68行目:仮想マシン設定取得

Nested Hyper-Vを設定する対象仮想マシンについて、以下の情報を取得し、一つのオブジェクトとして定義します。

項目 意味
ExposeVirtualizationExtensions CPUの仮想化支援命令を仮想マシンに見せるかどうか
DynamicMemoryEnabled Dynamic Memoryの設定が有効になっているかどうか
SnapshotEnabled Snapshotを取得しているか
State 仮想マシンの電源状態がOn/Off/保存状態かどうか
MacAddressSpoofing MACアドレス偽装を有効にしているかどうか
MemorySize 仮想マシンのメモリーサイズ

2-4. 69~107行目:Nested仮想化に適した状態か確認

2-3.で取得した情報をもとに、Nested仮想化に適した状態であるかどうかをチェックします。すでにExposeVirtualizationExtensionsの設定が実施済みの場合は設定を再度行わず終了となります。

2-5. 108~117:Nested仮想化設定実行の確認

Y/Nで本当にNested仮想化設定を行うか入力します。

2-6. 118~131行目:Nested仮想化の必須設定投入

Nested仮想化の必須設定を行うため、すべてのSnapshotの削除(結合)、保存状態の削除、仮想マシンの電源OFFを実行し、その後に下記2項目の設定変更を行います。

変更する項目 変更後の値
ExposeVirtualizationExtensions True
DynamicMemoryEnabled False

2-7. 132~146行目:MACアドレス偽装を有効に設定

Nested仮想化された仮想マシンから外部に通信できるようにするため、MACアドレス偽装を有効に設定します。Nested Hyper-V内に閉じたネットワークしか利用しない場合は設定不要です。外部と直接(L2接続で)通信するためには必要な設定です。

2-8. 147~158行目:メモリーサイズを4GBに設定

推奨される最低メモリー容量は4GBであるため、仮想マシンのメモリーが4GB未満の場合は、4GBに設定することが可能です。

以上でEnable-NestedVm.ps1の内容の説明が完了しました。意外と丁寧に事前チェックをしており、許可を出した後はガツガツVMを停止して設定変更を行います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?