より速く、より小さく、より軽く、 新基盤 Nano Server(後編)

2015年10月15日(木)
樋口 勝一

次期Windows Serverとなる予定の「Windows Server 2016」には注目されるべき新しいテクノロジーがいくつか実装される予定となっています。前回までにご紹介したコンテナ技術はそのうちの1つです。そして、さらにもう1つ注目すべきテクノロジーとして、「Nano Server」が提供される予定です。「Nano Server」とはいったいどういうものなのか、その役割、構築方法など、Windows Server 2016 Technical Preview 3がリリースされた現在までに明らかになっている範囲でご紹介していきます。

後編では、Nano Serverの操作、設定、機能の追加について解説します。

※本記事はWindows Server 2016 Technical Preview 3を元に作成されています。今後のリリース内容により仕様等が変更される場合があります。

Nano Serverの操作

Nano Serverへは、まずはPowerShellからリモートで接続して、設定変更などを行います。TP3のHyper-V上のNano Serverであれば、ネットワーク設定をすることなしにPowerShell Directの機能を使って、“Enter-PSSession”や“Invoke-Command”を使って、直接Hyper-Vホスト上から操作することが可能です。ですが、今回はWindows Server 2012 R2のHyper-V上でNano Serverをインストールしているため、ネットワーク設定を行い、リモートからPowerShellで操作することになります。今回はHyper-VホストからPowerShellでリモート接続するので以下の設定を行います。

  • Nano Server IPアドレス:192.168.0.1
  • Hyper-Vホスト:192.168.0.2

事前に、Nano Serverの仮想マシンの設定にて「ゲストサービス」を有効にします。

PowerShellを管理者権限で起動して、以下のスクリプトでNano ServerにIPアドレスを設定します(DHCPサーバーからIPアドレスを取得している場合は必要ありません)。

$VMName = "Nano01"
$IP = "192.168.0.1"
$Subnet = "255.255.255.0"
$Gateway = "192.168.0.254"
$DNS = ("192.168.0.10", "192.168.0.11")
$Msvm_VirtualSystemManagementService = Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_VirtualSystemManagementService
$Msvm_ComputerSystem = Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_ComputerSystem -Filter "ElementName = '$VMName'"
$Msvm_VirtualSystemSettingData = ($Msvm_ComputerSystem.GetRelated("Msvm_VirtualSystemSettingData", "Msvm_SettingsDefineState", $null, $null, "SettingData", "ManagedElement", $false, $null) | % {$_})
$Msvm_SyntheticEthernetPortSettingData = $Msvm_VirtualSystemSettingData.GetRelated("Msvm_SyntheticEthernetPortSettingData")
$Msvm_GuestNetworkAdapterConfiguration = ($Msvm_SyntheticEthernetPortSettingData.GetRelated("Msvm_GuestNetworkAdapterConfiguration", "Msvm_SettingDataComponent", $null, $null, "PartComponent", "GroupComponent", $false, $null) | % {$_})
$Msvm_GuestNetworkAdapterConfiguration.DHCPEnabled = $False
$Msvm_GuestNetworkAdapterConfiguration.IPAddresses = $IP
a
$Msvm_GuestNetworkAdapterConfiguration.Subnets = $Subnet
$Msvm_GuestNetworkAdapterConfiguration.DefaultGateways = $Gateway
$Msvm_GuestNetworkAdapterConfiguration.DNSServers = $DNS
$Msvm_VirtualSystemManagementService.SetGuestNetworkAdapterConfiguration($Msvm_ComputerSystem.Path, $Msvm_GuestNetworkAdapterConfiguration.GetText(1))

参照:http://windowsitpro.com/hyper-v/modify-ip-configuration-vm-hyper-v-host

IPアドレスの設定後、コマンドでNano ServerにPowerShellのセッションを接続します。

Set-Item WSMan:\localhost\Client\TrustedHosts "192.168.0.1"
Enter-PSSession -ComputerName "192.168.0.1" -Credential "192.168.0.1\Administrator"

PowerShellセッション接続後、実行するコマンドはすべてローカルで実行されているものと同じなので、様々な操作を行うことができるようになります。PowerShell以外でも、GUIベースの管理ツールからNano Serverへリモートで接続して管理することも可能です。Nano Serverではこのようにリモートからの操作が基本となっています。

役割・機能の追加

“New-NanoServerImage”コマンドで作成されたNano Serverは、Hyper-V上で稼働するだけの最低限の機能しかインストールされていません。そこで、この仮想マシンに目的に応じて追加機能をインストールしていきます。dism.exeツールを使用してWIMファイルやVHD ファイル内の Windowsの機能をオフライン、オフラインで有効または無効にしたりすることができます。“C:\NanoServer\Base\Packages”には、次に示すようなNano Server用の追加機能のパッケージファイルが用意されています。

Microsoft-NanoServer-Compute-Package.cab:Hyper-V
Microsoft-NanoServer-Containers-Package.cab:Nano Server
Microsoft-NanoServer-Defender-Package.cab:Windows Defender
Microsoft-NanoServer-FailoverCluster-Package.cab:フェールオーバークラスタリングMicrosoft-NanoServer-Guest-Package.cab:Hyper-V仮想マシン
Microsoft-NanoServer-OEM-Drivers-Package.cab:物理サーバー用ドライバー
Microsoft-NanoServer-Storage-Package.cab:ファイルサーバー
Microsoft-OneCore-ReverseForwarders-Package.cab:Webアプリ向けリバースフォワーダー

今回は、ファイルサーバーの役割を追加してみましょう。作成したNano Serverのvhdファイルをdismツールでマウントして2つの「Microsoft-NanoServer-Storage-Package.cab」パッケージファイルを追加していきます。

※以下の操作はNano Serverのvhdファイルを作成したTP3の仮想マシン上で行っています。

まずは下準備です。dismツール用に作業フォルダを作成して、必要なファイルをisoイメージからコピーしておきます。

cd C:\NanoServer
mkdir dism
copy C:\ISO\sources\api*downlevel*.dll C:\NanoServer\dism\
copy C:\ISO\sources\dism* C:\NanoServer\dism\
copy C:\ISO\sources\*provider* C:\NanoServer\dism\
mkdir mountdir

先ほど作成した「Nano01.vhd」イメージを、dismツールでマウントします。そのあとで、マウントしたイメージの機能の追加状況を確認します。

dism /Mount-Image /ImageFile:C:\NanoServer\VHD\Nano01\Nano01.vhd /Index:1 /MountDir:C:\NanoServer\mountdir
dism /Image:C:\NanoServer\mountdir /Get-Features

ファイルサーバーの役割を追加します。ファイルサーバーの機能「File-Services」と、リモート管理を有効にするための機能「ServerManager-Core~」を有効にします。最後に忘れずにイメージをアンマウントして完了です。

dism /Add-Package /PackagePath:C:\ISO\NanoServer\Packages\Microsoft-NanoServer-Storage-Package.cab /Image:.\mountdir
dism /Add-Package /PackagePath:C:\ISO\NanoServer\Packages\ja-jp\Microsoft-NanoServer-Storage-Package.cab /Image:C:\NanoServer\mountdir
dism /Image:C:\NanoServer\mountdir /Enable-Feature /FeatureName:File-Services /FeatureName:ServerManager-Core-RSAT /FeatureName:ServerManager-Core-RSAT-Role-Tools /FeatureName:ServerManager-Core-RSAT-Feature-Tools
dism /Unmount-Image /MountDir:C:\NanoServer\mountdir /Commit

ファイルサーバーとして利用できる機能が増えました。

Feature Name : ServerManager-Core-RSAT
State : Disabled
Feature Name : ServerManager-Core-RSAT
State : Enabled
Feature Name : ServerManager-Core-RSAT-Role-Tools
State : Disabled
Feature Name : ServerManager-Core-RSAT-Role-Tools
State : Enabled
Feature Name : ServerManager-Core-RSAT-Feature-Tools
State : Disabled
Feature Name : ServerManager-Core-RSAT-Feature-Tools
State : Enabled
Feature Name : FileAndStorage-Services
State : Enabled
Feature Name : FileAndStorage-Services
State : Enabled
Feature Name : Storage-Services
State : Enabled
Feature Name : Storage-Services
State : Enabled
Feature Name : File-Services
State : Disabled
Feature Name : File-Services
State : Enabled
Feature Name : CoreFileServer
State : Disabled
Feature Name : CoreFileServer
State : Enabled
Feature Name : File-Services-Search-Service
State : Disabled
Feature Name : File-Services-Search-Service
State : Disabled
Feature Name : MicrosoftWindowsOneCorePowerShellRoot
State : Enabled
Feature Name : Dedup-Core
State : Disabled
Feature Name : MicrosoftWindowsOneCorePowerShell
State : Enabled
Feature Name : iSCSITargetServer
State : Disabled
Feature Name : SmbDirect
State : Enabled
Feature Name : MicrosoftWindowsOneCorePowerShellRoot
State : Enabled
Feature Name : MicrosoftWindowsOneCorePowerShell
State : Enabled
Feature Name : SmbDirect
State : Enabled
Feature Name : Storage-Replica
State : Disabled
Feature Name : SmbWitness
State : Disabled

作成されたvhdファイルをHyper-V上にコピーをして、仮想マシンとしてNano Serverを作成します。上記の「Nano Serverの操作」と同様に、IPアドレスを割り当てて、PowerShellのセッションを接続します。リモートからの操作を有効にするためファイアウォールの設定を無効にします。さらに、リモート操作する側のコマンドプロンプトで、次のコマンドを実行します。

winrm set winrm/config/client @{TrustedHosts="192.168.0.1"}

これによって、Nano ServerにGUIのリモートツールでの接続が可能となります。また、Pingの疎通もできるようになっています。

Nano ServerのPowerShellセッションにて実行

Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled false

リモート操作をする側のコマンドプロンプトで実行

winrm set winrm/config/client @{TrustedHosts="192.168.0.1"}

まとめ

マイクロソフトは、コンテナとNano Serverで実現するマイクロサービスを目指しています。これまでもよりも、柔軟にアップデートが可能となり、より速く、より小さく、より安全なサービス提供が可能となります。TP3ではまだまだ評価段階ということもあり、Nano Serverの構築は少々手間のかかるものとなっていますが、そのポテンシャルは十分に体感することがきました。最終的には、Nano Serverにコンテナホストの役割が実装され、その上でHyper-Vコンテナが動く、完全に隔離された環境でマイクロサービスを実現できるようになる予定です。これからさらに進化し、どのようなWindows Serverが完成するのか待ち遠しい限りです。

GMOインターネット株式会社 Windowsソリューション チーフエグゼクティブ

GMOインターネットでWindowsのサービス開発運用に関わって16年、数年単位で進化し続けるMicrosoftのWindowsは新しもの好きにはたまらない製品です。自動販売機に見たことのないジュースがあれば、迷わすボタンを押します。そんなチャレンジが僕の人生を明るく、楽しくしてくれています。

お名前.com デスクトップクラウド
http://www.onamae-desktop.com/

お名前.com VPS Hyper-V
http://www.onamae-server.com/vps/hyperv/

連載バックナンバー

技術解説

より速く、より小さく、より軽く、 新基盤 Nano Server (前編)

2015/10/9
次期Windows Serverとなる予定の「Windows Server 2016」には注目されるべき新しいテクノロジーがいくつか実装される予定となっています。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています