Windows Server 2016 上に Hyper-V のインストール (役割の追加) が終わったら、次に仮想マシンを作ってみます。
作る環境は、以下を想定しています。
- ホスト OS: Windows Server 2016
- ゲスト OS: Windows Server 2016
- サーバーに搭載されているネットワーク アダプターは 2 個
- 1 つはゲスト OS (仮想マシン) 用、1 つはホスト OS 用に割り当て
- ゲスト OS は外部へ通信可能
- VLAN なし
- SR-IOV あり
では、PowerShell で作ってみます。
外部スイッチの作成
仮想マシンを外部と通信させるために外部仮想スイッチを作成します。
1 2 |
$nic = Get-NetAdapter -InterfaceIndex <インデックス番号> New-VMSwitch -Name "ExternalSwitch" -NetAdapterName $nic.Name -AllowManagementOS:$False -EnableIov:$True |
仮想スイッチを割り当てたいネットワーク アダプターを特定できない場合は、引数なしで Get-NetAdapter を実行することで、ネットワーク アダプターの一覧を取得できます。New-VMSwitch の NetAdapterName 引数の値を取りたいだけですので、Get-NetAdapter の出力結果から Name の値をコピペしても OK です。
New-VMSwitch の AllowManagementOS には False を指定してやることで、ホスト OS とネットワーク アダプターを共有しないように設定できます。
EnableIov を True に指定することで、SR-IOV がサポートされている環境であれば、SR-IOV を有効化できます。SR-IOV が有効になっているかどうかは以下のようにすれば確認できます。Name には作成した仮想スイッチ名を指定します。
1 |
Get-VMSwitch -Name "ExternalSwitch").IovSupport |
結果が True であれば SR-IOV が有効化できています。False の場合は、IovSupportReasons プロパティに有効化できない原因が記述されていますので、そこから内容を推測しましょう。
1 |
Get-VMSwitch -Name "ExternalSwitch").IovSupportReasons |
仮想マシン (VM) や仮想 HDD (VHD) 保管先の既定値変更
VM や VHD の保管先既定値は C: (ブート パーティション) 上に設定されています。ホスト OS のディスク負荷が VM に影響を及ぼすことはなるべく避けたいので、もし別のディスクがあるなら、保管先を変更してしまいましょう。ディスクが 1 つしかない場合でも別ボリュームに保管先を変更することで、(多少) 管理上分かりやすくなります。ここでは、D: ドライブに既定値を変更することにします。
1 2 3 4 5 |
New-Item -Path "D:" -Name "Hyper-V\VM" -ItemType Directory Set-VMHost -VirtualMachinePath "D:\Hyper-V\VM" New-Item -Path "D:" -Name "Hyper-V\VHD" -ItemType Directory Set-VMHost -VirtualHardDiskPath "D:\Hyper-V\VHD" |
VHD の作成
VM の作成時に合わせて VHD を作成することもできるのですが、ここでは先に VHD を用意することにします。ここでは、2 つの VHD を用意することにします。
1 2 |
New-VHD -Path "D:\Hyper-V\VHD\C.vhdx" -SizeBytes 100GB New-VHD -Path "D:\Hyper-V\VHD\D.vhdx" -SizeBytes 1TB |
Path 引数に、作成したい VHD ファイル名を指定します。拡張子を .vhd とすることで VHD 形式 (古い形式) に、.vhdx とすることで、VHDX 形式 (新しい形式) になります。1 パーティションのサイズを 2 TB 以上にする場合は、VHDX 形式にする必要があります。異環境との互換性の問題などがないのであれば、基本的には VHDX を指定するほうが良いです。
SizeBytes 引数では GB や TB などのサイズ単位指定を受け付けてくれます。既定では容量可変の VHD が作成されますが、Fixed オプションを指定することで容量固定の VHD にすることもできます。ディスク アクセスが多い環境の場合は、容量固定にすることでパフォーマンスが向上します。(容量固定の場合、指定した容量を最初に割り当てるため、VHD の作成に時間がかかります)
VM の作成
作成した VHD を利用して、VM を作成します。
1 |
New-VM -Name "VM1" -MemoryStartupBytes 4GB -SwitchName "ExternalSwitch" -Path "D:\Hyper-V\VM" -VHDPath "D:\Hyper-V\VHD\C.vhdx" -Generation 2 |
ここでは、VM1 と言う名前の VM を作成しています。起動時のメモリ容量、割り当てる仮想スイッチ、VM の保管先、割り当てる VHD、世代をそれぞれ指定しています。世代を指定する Generation 引数では 1 もしくは 2 を設定可能です。
事前に作成した VHD の割り当ては、以下のようにします。
1 |
Add-VMHardDiskDrive -VMName "VM1" -Path "D:\Hyper-V\VHD\D.vhdx" |
VM に OS をインストールするために ISO イメージをマウントする場合は、以下のようにします。
1 |
Add-VMDvdDrive -VMName "VM1" -Path "D:\ISO\WS2016.iso" |
これで VM の作成は完了です。Start-VM を実行して、作成した VM を起動しましょう。
1 |
Start-VM -Name "VM1" |