Hyper-V Server 2008 R2 SP1 の仮想化環境構築

Hyper-V Server 2008 R2 SP1 を用いた仮想化環境構築を解説します。

はじめに

想定読者

下記スキルを持つ方を想定して解説しました。

 1.Windows 上のコマンドプロンプトで簡単な操作が出来る
 2.CDからOSをbootしてWindows 系OSをインストールしたことがある
 3.Windows 系OSのネットワーク共有機能を使ってファイルを移動したことがある

この辺の経験があれば可能な設定です。
逆に、これら単語・操作が不明な方には難しいです。

構築のコンセプトとゴール

『Windows Vista以上のOSが搭載されたクライアントPCを持つ人が、サーバーPCにHyper-V Server 2008 R2 SP1をインストール・設定。もう変なことをしなければエラーは出ない・スムーズにシステム構築を楽しめる状態』がゴールです。

コンセプトは

 ・安上がり
 ・漏れ無し
 ・転んでも泣かない

です。出来るか不明ですが。

動作確認に使用したハードウェア

下記は私がHyper-V Server 2008 R2 SP1の動作確認に使用したハードウェアです。

 CPU: Intel Core i7 2600
 マザーボード: ASUS P8H67-M EVO Rev.3
 メモリ: DDR3 8GBx2 = 16GB
 電源: 玄人志向 KRPWSS500W85+
 HDD: Western Digital 500GB + 2TB
 SSD: ADATA 120GB
 光学ドライブ: 安い奴

クライアント側は適当にVistaか7機を選べば簡単に動くはずなので割愛します( ´ρ`)

どんなものか

三行で説明

  1. Hyper-V Server 2008 R2 SP1 は無料のハイパーバイザ型の仮想化OSです。
  2. 買ったPCに Hyper-V Server 2008 R2 SP1 をインストールすると、その上に Windows 7 や Windows XP、CentOS や ubuntu などたくさんのOSをインストール・起動させて、それぞれリモートから操作出来るようになります(ただし、クライアントOSがライセンス違反にならないか確認する必要があります)。
  3. VMware ESXiのマイクロソフト版と考えても良いですし、Windows Server 2008 R2 のHyper-V機能部分だけを切り出した物と考えても構いません。

メリット

数ある仮想化ソリューションの中、 Hyper-V Server 2008 R2 SP1 を選ぶメリットはいくつか挙げられます。

ハードウェアに困らない

同じハイパーバイザ型の仮想化OS:VMware ESXi と比較して、ハードウェアに困らないのがHyper-V Server R2 SP1 の大きなアドバンテージです。

VMware ESXi を使用するには、VMware ESXiをインストール可能なハードウェアを調べて、それを購入してインストールしなければなりません。
ハードウェアを選ぶわけですね。

それに比べてHyper-V Server 2008 R2 SP1 のベースはWindows Server 2008 R2。
Windows Server 2008 R2のベースはWindows 7です。
Windows 7のドライバがそのまま使えるため、Windows 機が動作するPCであれば高確率で利用可能なわけです。

無駄なリソースが少なくて済む

Hyper-V Server 2008 R2 SP1 には仮想化に必要な機能と操作に必要な一部機能しかありません。
そのため、使用リソースが少なく、高いゲストOSのパフォーマンスが期待できます。

Microsoft製である

信頼と安心のMicrosoft製品。
既存 Windows系OSのリモート操作と同じ感覚でインストール・利用が出来ますし、他Microsoft製品のように今後長くHyper-V Server がサポートされると見込めます。

デメリット

ゼロとはいかないデメリット。

ハードディスク or SSDが必須

VMware ESXi はUSBメモリからBOOT可能ですが、Hyper-V Server 2008 R2 SP1 を利用するためにはハードディスク(またはSSD)が必要になります。

導入の敷居が高い

個人で仮想化をしたくなったらVMware PlayerやOracle VM VirtualBoxなどを利用するのが一般的ですよね。
これらの環境構築は簡単ですが、Hyper-V Server 2008 R2 SP1の環境構築にはある程度の知識・スキル・設定が要求されるため、導入の敷居が高いです。

導入の敷居が高いという話の延長になりますが、利用者が少ないです。
もしかしたら企業や何かで利用されている方はいるかもしれませんが、少なくとも個人で使用されている方は多く無いでしょう。
なので、「よし、村瀬の家に遊びに行ってこの仮想イメージ動かすぜ!」と意気込んでも、村瀬に「ごめん、うち、Hyper-Vのイメージ動かせないんだ」と言われてしまう可能性が高いです。

一応、別の仮想イメージ形式への変換ツールが出回っているには出回っていますが、完全動作する保証はありませんし、出来たとしても時間がかかるため即座に利用出来ないと考えた方が良いです。

ドキュメントが少ない

Microsoft社のサイトに機能説明のドキュメントが充実しています。
が、Microsoft独自の用語や機能がある・英語を和訳してあるため、苦無く英文を読めるスーパーハカー以外には分かりづらいと思います。また、目的別の解説はありません。

さらに、個人利用者が少ないため、『適当に備忘録書いてる人のブログ見て設定すりゃいいや』が通じ辛いです。
検索にヒットする数が少ない上に、不備があったり環境によって必要な設定が違っていたりするためです。

インストール

イメージファイルを取得

# 参考URL
# http://technet.microsoft.com/ja-jp/evalcenter/dd776191.aspx

参考URLのウィザードに従ってISOイメージを取得し、DVD-Rなどのメディアに書きこんでください。

boot

光学ドライブからBOOTするようBIOS設定を変更し、PCの電源をONにしてください。
Hyper-V Server 2008 R2 SP1のインストーラーが起動します。

ウィザードに従いインストール

インストール時の操作・手順は Windows 系 OSをインストールする時とほぼ同じ(というかさらにシンプル)です。
インストール先のドライブを選択し進むとインストールが完了します。

管理者パスワードを入力

インストールが完了すると、Hyper-V Server 2008 R2 SP1が立ち上がります。
最初に管理者(Administrator)のパスワード入力を求められるので入力します。

ドライバインストール

管理者パスワード入力後、「アクティブなネットワークアダプターは見つかりませんでした。」と警告が出るかもしれません。
これは恐らくNIC(LANカード)のドライバがインストールされていないためです。

ドライバのインストール方法には二種類あります。
1.インストーラーを実行
2.コマンドラインからインストール用のコマンドを実行

インストーラーを実行

Windows 7 でドライバをインストールする時のように、インストーラーを直接実行出来ちゃう場合があります。

例えば下記コマンドを実行すればウィザードが起動され、P8H67-M EVO Rev.3 のインストーラーディスクからNIC用ドライバをインストールできました。
E:\>Drivers\LAN\Windows7\setup.exe

同様にAudio
E:\>Drivers\Audio\Driver\Setup.exe

同様にBrowser Configuration Utility
E:\>Drivers\BCU\ASUSEGBCU00_v1.0.10.0_20091026.exe

このように実行ファイルを使って、インストールに失敗した項目は次の方法をためすのが良いと思います。

コマンドラインからインストール用のコマンドを実行

# ドライバインストール参考URL
# http://cloud.watch.impress.co.jp/epw/cda/2008lab/2008/10/17/14078.html

Hyper-V Server 2008 R2 SP1 はすべてのexeファイルを実行出来るわけではありません。
「Windows 7用だからこのOSには使えないよ」と言われたり、Hyper-V Server 2008 R2 SP1 が実行に必要なランタイムを持っていなかったりするためです。
この場合は下記コマンドにより直接ドライバ: *.inf ファイルをインストール出来ます。

 PNPUTIL -i -a filename.inf

フォルダ内の複数ドライバを一気にインストールしたい場合は下記のようにワイルドカードを使ってインストール可能です。

 PNPUTIL -i -a *.inf

ちなみに、対応していないドライバをインストールしようとしたらエラーで止まりますし、複数回同じドライバをインストールしようとしても「もうすでにありますよ」と止められます。
使えないドライバがインストールされたり重複してインストールされたりはありませんので、気楽に試行して良いと思います。

サーバー操作

サーバー上では馴染みのGUIが利用出来ません。
サーバー上の操作で必要な知識を解説します。

ウィンドウ

ログイン後、表示されるのは黒と青2つのウィンドウです。

 黒いウィンドウ…コマンドプロンプト。 cmd で表示される

基本的な操作

# ウィンドウをすべて綴じてしまった場合 参考URL
# http://social.technet.microsoft.com/Forums/ja-JP/windowsserver2008r2ja/thread/6c12fed1-7e81-434a-8537-273a2a76f5ef


ログイン後、黒と青2つのウィンドウが表示されます。



 サーバー上で操作している場合 → Ctrl + Alt + Delete
 クライアントからリモートデスクトップ接続で操作している場合 → Ctrl + Alt + End
でタスクマネージャーを起動し、『ファイル』タブ→『新しいタスクの実行』と辿ります。
 cmd と入力すれば黒いコマンドプロンプトウィンドウが生成され、sconfig と入力すれば青い設定ウィンドウが生成されます。

リモート接続

リモートデスクトップの接続を確立します。基本は sconfig を上から順番に見ていけばOKです。

ネットワーク設定

ドメイン・ワークグループの設定

sconfig 中で1.ドメイン/ワークグループを選択し、ウィザードに従えばOKです。

『ドメイン』というのは『マイクロソフト社製のアカウント・権限管理システム』と考えて構いません。
Windows Server hogehoge のサービス Active Directory を使わない限り必要ないので、分からない場合はワークグループを選択すればOKです。
ただし、すでにActive Directoryを使っているという方は権限管理が楽なのでドメインに参加した方が良いと思います。

IPアドレスの設定

sconfig 中で8.ネットワーク設定 を選択してください。
すると、利用可能なNICのリストが表示されます。
設定を変更したいNICのインデックス番号を入力し、好きな設定に変更してください。

サーバーという都合上、DHCP無効で使用するのがおすすめです。

コンピューター名を変更

sconfig 中で2.コンピューター名 を選択するとコンピューター名を変更出来ます。
リモートデスクトップ接続に直接必要な設定ではありませんが、クライアントサーバーからサーバーのネットワーク共有にアクセスする時に分かりやすいコンピューター名を付けておいたほうが良いと思います。

リモートデスクトップを有効化

sconfig 中で7.リモート デスクトップ を選択すると、リモートデスクトップを有効にできます。
この時、
 1.高セキュリティ
 2.低セキュリティ
を選択出来ますが、「2.」は古いOSを使っていなければ必要ありません。
Windows Vista 以上であれば基本的に「1.高セキュリティ」を選択して良いようです。

実際に繋いでみる

ここで、実際にクライアントPCからリモートデスクトップ接続をテストしてみてください。
クライアントPCでリモートデスクトップ接続を選択し、サーバーPCのIPアドレス→管理者名(Administrator)→管理者パスワードを入力して接続出来ればリモートデスクトップ接続成功です。

Hyper-V コンパネ

Hyper-Vコンパネをリモートから操作出来るようにします。Hyper-Vをリモートから使用するために必要な要素は大別して下記2点です。

 1.ローカル側でリモート接続に必要なソフトウェアをインストール&設定
 2.

ローカル側

サーバーマネージャーインストール実行

# http://watawatablog.blogspot.jp/2010/05/windows-7-hyper-v.html
# http://network.station.ez-net.jp/client/remote/hyper-v/win7.asp
# http://www.microsoft.com/ja-jp/download/details.aspx?id=7887

ファイアーウォール設定

hvremote /mmc:enable
hvremote /AnonDCOM:grant

サーバー側操作

リモート制御用のアカウント管理

パスワードの複雑さ制限を解除

# パスワードポリシーの変更 参考URL
# http://ameblo.jp/k-freedom7/entry-10769753063.html
# http://blog.livedoor.jp/seec/archives/715125.html
ドメインを利用する場合は分かりませんが、ワークグループ運用する場合はサーバーとクライアントで同一のID-パスワードが必要になります。
クライアントのID-パスワードに合わせたい時があるかもしれませんが、デフォルトではHyper-V Server 2008 R2 SP1は『複雑さの要件を満たす必要があるパスワード』というパスワードポリシーが設定してあり、『小文字だけのパスワード』や『短いパスワード』などの簡易パスワードを利用出来ません。

この制限を解除する手順です。
※ただし、言うまでもなくセキュリティは低くなります。

A.パスワードポリシーをエクスポート

 下記コマンドをコマンドラインで実行すると、 secedit.cfg にセキュリティポリシーが出力されます。
 secedit /export /cfg secedit.cfg /log secedit.log /areas SECURITYPOLICY


B.メモ帳でエクスポートしたセキュリティポリシーファイルを編集する

 下記コマンドラインで、「1」で出力したセキュリティポリシーファイルを開きます。
 notepad secedit.cfg

 この中で下行を検索し、 1 → 0 に編集&保存してください。
 PasswordComplexity = 1


C.編集したセキュリティポリシーファイルをインポート

 下記コマンドラインで「2」で編集したファイルを反映します。
 secedit /configure /db secedit.sdb /cfg secedit.cfg /log secedit.log

ユーザーを作成する

sconfig 中で3.ローカル管理者の追加 を選択するとローカル管理者を追加できます。
名前・パスワードを入力すればユーザーが生成されます。

※ネットワーク回線の調子が悪い時にユーザーを作成したら、変なパスワードになってしまいました。念のため下記コマンドで明示的にパスワードを再設定した方が良いかもしれません。

net user user_name new_password

リモート管理有効化

sconfig 中で4.リモート管理の構成 を選択すると、

 1.MMC リモート管理の許可
 2.Windows PowerShellの有効化
 3.サーバーマネージャーのリモート管理を許可
 4.Windowsファイアウォール設定の表示

が出来ます。

MMC(Microsoft Management Console)リモート管理というのは、リモート管理共通フレームワークです。「外部からHyper-Vを使うには必要なんだ」くらいに思って許可すれば良いと思います。

# MMC 参考URL
# http://www.atmarkit.co.jp/fwin2k/operation/mmccons/mmccons_01.html

Windows PowerShell というのは最近Microsoft社ががんばっているスクリプト言語で、Hyper-V のリモート制御も出来ます。リモート管理する時、内部的にWindows PowerShell を利用しているようなので有効化が必要です。

サーバーマネージャーのリモート管理は本命です。
これを許可すれば外部からアクセスする機能の有効化は完了します。

Windows ファイアウォール設定の表示を行えば現状が簡単に把握出来ます。

アクセス制御

ここまででリモート接続用の機能追加は完了しました。
が、ワークグループ運用する場合、この段階ではファイアウォールが邪魔をして接続に失敗します。

接続するためには下記選択肢があります
 1.ファイアーウォールを無効にする(楽&低セキュリティ)
 2.FW設定を行う(手間&高セキュリティ)
 3.ドメイン運用でアカウントの権限を修正する((Active Directoryを用いるため楽&高セキュリティただし有料。割愛)

ファイアーウォールを無効にする

Windows ファイアウォールを無効にしたい場合は下記コマンドで実現出来ます。

netsh advfirewall set currentprofile state off
※当然セキュリティは低くなります。

FW設定を行う
安全な接続元コンピューター設定

信用出来るPCからしか接続出来ないようになっています。
コマンドプロンプト上で下記コマンドを実行すると、CLIENTPC というコンピューター名を持つPCからのアクセスが信用されます。

winrm set winrm/config/client @{TrustedHosts=”CLIENTPC”}

アカウントの許可

hvremote.wsf ファイルの取得

http://archive.msdn.microsoft.com/HVRemote/Release/ProjectReleases.aspx?ReleaseId=3084
上記URLより HVRemote.wsf をダウンロードしてください。 hvremote.wsf ファイルの設置

# ネットワーク共有参考URL
# http://itpro.nikkeibp.co.jp/article/COLUMN/20060929/249460/

サーバーに直接ファイルを送ることは出来ません。
サーバーのフォルダをネットワーク共有し、クライアントから hvremote.wsf ファイルをコピーする方法をとります。

下記2コマンドで Administrator ユーザーが C:\share フォルダを hvserver フォルダとしてアクセスできるようにします。

mkdir C:\share
net share hvserver=C:\share /GRANT:Administrator,FULL

これでリモート側で \\servername\ を参照すれば hvserver フォルダへアクセスできるようになります。クライアント側からサーバー側へ hvremote.wsf をコピーしてください。

なお、ネットワーク共有を削除したい場合は下記のようにします。

net share hvserver /delete hvremote.wsf の実行

hvremote.wsf のあるフォルダに移動して、設定を行います。
なお、当ドキュメントではHyper-V をリモートから使用するユーザー名を hvclient として設定します。

# hvremote.wsf のあるフォルダへ移動
cd C:\share

# ユーザーhvclientをHyper-V利用者と設定する
# (ワークグループの場合)
cscript hvremote.wsf /add:hvclient
# (ドメイン利用の場合)
cscript hvremote.wsf /add:domainname\hvclient

リモート管理用のFW操作

下二つのコマンドにより、リモート操作時に操作拒否されないようにしてください。

netsh advfirewall firewall set rule group=”Hyper-V” new enable=yes
netsh advfirewall firewall set rule group=”ファイルとプリンターの共有” new enable=yes

# リモートボリューム管理
net start vds
sc config vds start= auto
netsh advfirewall firewall set rule group=”リモート ボリューム管理” new enable=yes

Linux 利用者への注意点

http://network.station.ez-net.jp/os/linux/hyper-v/ntpd/centos/5.4.asp に書かれている通りですが、Hyper-V 上でLinuxを動かそうとすると高確率で時間がずれます。

カーネルをロードする時、divider=10 を引数に付けるようにしてください。