NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

Windows Server 2016 Hyper-V インストール

Windows Server 2016 上で Hyper-V をインストールする際の手順例です。

Hyper-V の要件

  • ハードウェア要件として、以下を満たしている必要があります。
    • VM モニターモード拡張機能
    • 第 2 レベルのアドレス変換(SLAT) 機能
    • 仮想化支援機能
    • Intel Virtualization Technology (Intel VT)
    • ハードウェア データ実行防止(DEP) 機能
    • XD bit (execute disable bit)

管理者権限でコマンドプロンプトを起動し、以下を実行することで要件を満たしているか確認できます。

systeminfo.exe

Hyper-V の有効化

PowerShell を利用して、Windows Server 2016 で Hyper-V の役割を有効にします。

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

次のコマンドで Hyper-V の役割がインストールされていることを確認できます。

Get-WindowsFeature -ComputerName <computer_name>  

仮想スイッチの作成

作成する仮想スイッチのタイプを決定します。

接続タイプ
  • 外部:仮想マシンに物理 NW へのアクセスを許可し外部 NW 上のサーバーと通信可能にします。*1
  • 内部:同じ Hyper-V 上の仮想マシン間及び、仮想マシンとホスト OS 間の通信を可能にします。
  • プライベート:同じ Hyper-V 上の仮想マシン間の通信のみを許可します*2

「外部」を選択した場合は、使用する NIC と次の表に記載されているその他のオプションを選択します。

  • 管理 OS にこの NIC の共有を許可する:ホストが仮想スイッチ用に構成した設定を使用できます。*3
  • SR-IOV を有効にする:仮想マシンでシングルルート IO 仮想化(SR-IOV)を有効化します。*4

次のコマンドで既存の NIC を確認し、仮想スイッチに使用する NIC 名をメモします。

Get-NetAdapter

出力例は以下のとおりです。本例では Ethernet0 を使用します。

PS C:\Users\Administrator.MY> Get-NetAdapter
Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet1                 Intel(R) 82574L Gigabit Network Conn...       4 Up           00-50-56-86-5B-AB         1 Gbps
Ethernet0                 vmxnet3 Ethernet Adapter                      3 Up           00-50-56-86-4F-2B        10 Gbps

"ExternalSwitch"という名前の外部スイッチを作成し、管理OSにこの NIC の共有を許可する場合、以下のコマンドを実行します。

New-VMSwitch -name ExternalSwitch  -NetAdapterName Ethernet0 -AllowManagementOS $true  

"InternalSwitch"という名前の内部スイッチを作成する際は以下のコマンド実行します。

New-VMSwitch -name InternalSwitch -SwitchType Internal


"PrivateSwitch"という名前のプライベートスイッチを作成する際は以下のコマンド実行します。

New-VMSwitch -name PrivateSwitch -SwitchType Private

仮想マシンの作成

仮想マシンで使用する仮想スイッチの名前を取得します。

Get-VMSwitch  * | Format-Table Name  

新規に仮想マシンを作成する際は以下のコマンドを使用します。

New-VM -Name <Name> -MemoryStartupBytes <Memory> -BootDevice <BootDevice> -VHDPath <VHDPath> -Path <Path> -Generation <Generation> -Switch <SwitchName>  
  • Name は仮想マシンの名前を設定します。
  • MemoryStartupBytes は、起動時に仮想マシンで使用できるメモリの量です。
  • BootDevice は、仮想マシンが起動するデバイス*5です。
  • VHDPath は、使用する仮想マシンディスクのパスです。
  • Path は、仮想マシン構成ファイルを格納するパスです。
  • Generation は仮想マシンの世代です。VHD には世代1、VHDX には世代2を使用します。
  • Switch は、仮想マシンが使用する仮想スイッチの名前です。

以下の例では、4GBのメモリを搭載したWin2016VMという名前の第2世代の仮想マシンを作成します。
Win2016.vhdx という名前の新規のハードディスクをサイズ20GBで作成し、ExternalSwitchという名前の仮想スイッチに接続します。仮想マシン構成ファイルは、VMData フォルダに格納されます。

New-VM -Name Win2016VM -MemoryStartupBytes 4GB -BootDevice VHD -NewVHDPath .\VMs\Win2016.vhdx -Path .\VMData -NewVHDSizeBytes 20GB -Generation 2 -Switch ExternalSwitch

以下の例は新規に Windows10 の仮想マシンを作成するスクリプト例です。

# Set VM Name, Switch Name, and Installation Media Path.
$VMName = 'TESTVM'
$Switch = 'ExternalSwitch'
$InstallMedia = 'C:\Users\Administrator.MY\Desktop\ja_windows_10_multi-edition_version_1709_updated_dec_2017_x64_dvd_100406736.iso'

# Create New Virtual Machine
New-VM -Name $VMName -MemoryStartupBytes 2147483648 -Generation 2 -NewVHDPath ".\VMs\$VMName\$VMName.vhdx" -NewVHDSizeBytes 53687091200 -Path ".\VMData\$VMName" -SwitchName $Switch

# Add DVD Drive to Virtual Machine
Add-VMScsiController -VMName $VMName
Add-VMDvdDrive -VMName $VMName -ControllerNumber 1 -ControllerLocation 0 -Path $InstallMedia

# Mount Installation Media
$DVDDrive = Get-VMDvdDrive -VMName $VMName

# Configure Virtual Machine to Boot from DVD
Set-VMFirmware -VMName $VMName -FirstBootDevice $DVDDrive

作成した仮想マシンを起動するには以下のコマンドを実行します。

Start-VM -Name TESTVM

仮想マシンに接続するには以下のコマンドを実行します。

VMConnect.exe

参考書籍

以上

*1:同じ Hyper-V サーバー上の仮想マシン間も相互に通信可能です。

*2:隔離されたテストドメインのような環境を構築する際に便利です。

*3:QoS 設定、セキュリティ設定、または Hyper-V 仮想スイッチのその他の機能など 等

*4:SR-IOV は仮想マシンが(オーバヘッドとなる)ハイパーバイザー層を介さずに直接 I/O する機能です

*5:ネットワークアダプタまたは、仮想ハードディスク