前編「正式リリース版で見るHyper-Vのアーキテクチャ」では、Hyper-Vのアーキテクチャについて解説した。今回は、Hyper-Vの各種機能やその機能を利用する際の勘所について解説する。
Hyper-Vの各種機能を説明する前に、Hyper-Vの導入方法を簡単に紹介しておく。Hyper-VはWindows Server 2008の基本機能の一部であり、導入は簡単だ。具体的な手順は以下の通り。
Server Coreの場合は、次のコマンドを実行する。
start /w ocsetup Microsoft-Hyper-V
以上の操作を行ったら、再起動する。以上でHyper-Vの導入は完了だ。
なお、手順3の更新プログラムは、サーバーマネージャでHyper-Vの役割を追加した後でインストールしても問題ない。
Hyper-V上の設定変更や仮想マシンの管理は、「Hyper-Vマネージャ」で行う(画面1)。Hyper-VマネージャはMMC 3.0のスナップインとして実装されている。
Hyper-Vマネージャでは以下の操作が可能である。
Hyper-Vマネージャは、Windows Server 2008(x86版)にも同梱されている。また、Windows Vista SP1にもインストール可能であり、クライアントPCからHyper-Vをリモート管理することもできる。
仮想マシンの作成は、Hyper-Vマネージャの右ペインで[新規]→[仮想マシン]をクリックすると起動する「仮想マシンの新規作成ウィザード」で行う(画面3)。ウィザードの指示に従い、仮想マシンのCPU個数やメモリ容量、HDD、ネットワーク、DVDドライブの設定を行えば、簡単に仮想マシンを作成できる。
ゲストOSのインストールは、ホストの物理CD/DVDドライブを仮想マシンに割り当ててOSのインストールメディアからインストールするか、ISOファイルイメージを利用する。
ゲストOSをインストールしたら、すぐに「統合サービス」をインストールしよう。仮想マシンの接続クライアントの[操作]→[統合サービス セットアップ ディスクの挿入]を実行し、セットアッププログラムの指示に従ってインストールを行えばよい。
Microsoftによって正式にサポートされるゲストOSは、以下の通り。OSごとにサポートされるCPUの数が異なる。また、Windows NT 4.0のような古いOSはサポートされない。
なお、ゲストOSごとにCPU数をチェックするような機構は存在しないため、以下に書かれたCPU数以上でも動作する可能性はある。ただし、正式サポートされないので注意が必要である。
| OS | CPU数 |
|---|---|
| サーバOS | |
| Windows Server 2008(x86、x64) | 1、2 or 4 |
| Windows Server 2003 R2 SP2(x86、x64) | 1 or 2 |
| Windows Server 2003 SP2(x86、x64) | 1 or 2 |
| Windows 2000 Server SP4/Advanced Server SP4 | 1 |
| SUSE Linux Enterprise Server 10 SP1/SP2(x86、x64) | 1 |
| クライアントOS | |
| Windows Vista SP1(x86、x64) | 1 or 2 |
| Windows XP SP3(x86) | 1 or 2 |
| Windows XP SP2(x64) | 1 or 2 |
| Windows XP SP2(x86) | 1 |
※:サポートされるゲストOSやCPU数については、正式にはMicrosoftのKnowledge Baseで確認してほしい。
Guest operating systems that are supported on a Hyper-V virtual machine host

Hyper-Vは、仮想化ソフトウェアとして必要な機能を一通り備えている。以下に紹介する「スナップショット」などは、ほかの仮想化ソフトウェアでもおなじみの機能である。ここでは各種機能を紹介するとともに、運用に際して知っておくべき注意点にも触れているので参考にしていただきたい。
Hyper-Vにはほかの多くの仮想化ソフトウェアと同様に、仮想マシンの保存/一時停止機能がある。保存は、その瞬間の仮想マシンのCPUやメモリの状態がファイルとして保存され、仮想マシンは停止する。仮想マシンが使用していたメモリは解放される。
これに対し、一時停止は仮想マシンの状態をディスクに出力せず、仮想マシンが使用しているメモリも解放されない。
仮想マシンのエクスポートを実行すると、仮想マシンを構成するVHDファイル、設定ファイル、スナップショットなどのデータファイルが、指定したフォルダ配下に丸ごとコピーされる。設定ファイルのみをエクスポートすることもできる。このフォルダを別のホストにコピーしてインポートすれば、簡単に仮想マシンの複製を作ることが可能である。
インポート時はファイルのコピーを行わず、インポート元として指定したフォルダ配下のデータをそのまま使用する。
なお、仮想マシンが保存状態でもエクスポート/インポートできる。
スナップショットとは、稼働中の仮想マシンのある時点の状態を保存する機能である。仮想マシンはスナップショット取得後も動作を継続するが、スナップショットを取った時点にほぼ瞬時に戻せる。Hyper-Vでは、複数のスナップショットを作成でき、なおかつ分岐もできる(画面4)。そのため、例えばアプリケーションのインストールテストなどでは、テスト時間の大幅な短縮が可能になるだろう。
Hyper-Vのスナップショット機能は、スナップショット取得時のCPUやメモリなどの内容をファイルに書き出し、その後はディスクの差分のみを別の「スナップショットファイル(AVHDファイル)」に保存する。元に戻すときは、書き出したCPUやメモリの状態を復元し、スナップショットファイルを新たに作成し直す。
なお、スナップショットは仮想マシンのバックアップを目的とした機能ではない。また、スナップショットを使用するに当たっては幾つかの注意点がある。
容量固定型の仮想HDD(前編を参照)はI/O性能が高く、実運用環境で使用される機会が多いと思われる。しかしながら、スナップショットを一度作成すると、それ以降はスナップショットファイルへのI/Oに切り替わってしまうため、I/O性能の劣化を考慮する必要がある。スナップショットを削除し、スナップショットファイルを本ディスクにマージすれば性能は回復するが、マージが完了するまでの間、仮想マシンをシャットダウン(または仮想マシンを保存状態に)しておく必要がある。仮想マシンにある程度のI/O性能が必要で、かつ連続稼働を要求されるシナリオでは利用できない。
スナップショットを取ると、ディスクI/Oがスナップショットファイルに切り替わることは先に述べた。問題は、スナップショットファイルが標準では、
C:\ProgramData\Microsoft\Windows\Hyper-V\Snapshots
に作成される点である。仮想マシンの仮想ディスクファイルをCドライブ以外に置いていても、スナップショットを取るとそれ以降はCドライブにディスクI/Oが集中することになる。
また、容量不足にも注意が必要だ。ディスク容量が不足し、スナップショットファイルにそれ以上書き込めなくなると、仮想マシンは強制的に一時停止状態になる。
スナップショットの作成場所は仮想マシンごとに変更可能なので、仮想マシン作成時に留意しておいた方がよいだろう。
クイックマイグレーションとは、あるホスト上で動作中の仮想マシンを別のホストに短時間で移動させる機能である。Hyper-Vのクイックマイグレーションは、Windows Server 2008のフェイルオーバークラスタ機能を利用する。そのため物理サーバには、フェイルオーバークラスタが利用できるWindows Server 2008 EnterpriseまたはDatacenterをインストールする必要がある。
クイックマイグレーションでは、共有ストレージに置かれた仮想マシンをクラスタリソースとして登録する。仮想マシンの移動は、「クラスタマネージャ」で行う。Hyper-Vマネージャでは操作できないのは残念である。
クイックマイグレーションを構成するための要件は下記の通りである。
クラスタマネージャで仮想マシンの移動を指示すると、以下の処理が行われる。
クイックマイグレーション中、外部からは仮想マシンが止まっているように見える。仮想マシンを保存・復元する仕様のため、仮想マシンのメモリ使用量が多いと数十秒から数分かかる場合もあり、ダウンタイムは無視できない。
なお、クイックマイグレーションによる仮想マシンの移動により、外部から仮想マシンにネットワークアクセスできなくなる場合がある。これは、外部に設置しているネットワークルータのルーティングテーブルが、クイックマイグレーション後に更新されないことが原因であった。仮想マシンが外部に対して定期的に何らかのパケットを出すような設定を行えば回避可能だが、本来Hyper-V側で何らかの対応をすべきものと考える。将来の改善を望みたい。
Hyper-VマネージャでHyper-Vの基本的な操作は一通り網羅されているが、多数のHyper-Vホストをまとめて管理するのは大変な作業である。
Microsoftはこのために「System Center Virtual Machine Manager(SCVMM)」という製品を販売しているが、このSCVMMの次バージョンでHyper-V対応が行われる予定である。SCVMMには、複数の仮想化環境を統合管理するのに役立つさまざまな機能が用意されている。
このように、SCVMMは仮想化環境の本格的な構築・管理に欠かせない機能が多く含まれており、管理者の負担を軽減してくれる。
Hyper-Vでは、外部インタフェースとして非常に多くのWMI(Windows Management Instrumentation)オブジェクトを公開している。標準的なWMIを経由することで、スクリプトによる操作や外部ソフトウェアとの連携も可能となる。
公開されているオブジェクトでHyper-Vのほとんどの操作が可能だといわれているが、大変分かりにくいというのが正直な感想である。公式ドキュメントによる情報もまだ十分ではないので、今後の公開情報の充実を期待したい。
http://msdn.microsoft.com/en-us/library/cc136992(VS.85).aspx
Hyper-Vは、Windows Server 2008の1機能としてうまく実装されている。Hyper-Vを有効にして、普通に仮想マシンを作って動かすぶんには悩むことはほとんどないと思う。とっつきやすく気軽に導入できる点は大きなメリットである。特にゲストOSがWindows Server 2008やWindows Vistaであれば、チューニングが進んでおり、かなり高い性能を引き出せると期待できる。これまでに紹介してきた留意点を参考に、ぜひHyper-Vを活用していただきたい。
入社以来、Windows OSの技術担当としてMicrosoftとのさまざまな共同開発に参加。現在はHyper-Vを主とした仮想化技術担当として「富士通Hyper-V仮想化センター」の活動に従事。