2008年07月14日 08時00分 UPDATE
特集/連載

いまさら聞けないHyper-V【後編】正式リリース版で見るHyper-Vの機能と運用の勘所

Hyper-Vの利用に当たっては、その仕様を理解しておくことが重要だ。今回はHyper-Vの機能を解説しつつ、注意点や押さえておくべき勘所を紹介する。

[小丸芳弘,富士通]

 前編「正式リリース版で見るHyper-Vのアーキテクチャ」では、Hyper-Vのアーキテクチャについて解説した。今回は、Hyper-Vの各種機能やその機能を利用する際の勘所について解説する。

Hyper-Vの導入と基本操作

 Hyper-Vの各種機能を説明する前に、Hyper-Vの導入方法を簡単に紹介しておく。Hyper-VはWindows Server 2008の基本機能の一部であり、導入は簡単だ。具体的な手順は以下の通り。

Hyper-Vのインストール

  1. BIOSユーティリティで仮想化機能(Intel VTまたはAMD-V)とデータ実行防止機能(DEP)を有効にする
  2. Windows Server 2008(x64版)をインストールする
  3. Hyper-V用更新プログラム「Windows6.0-KB950050-x64.msu」をインストールする
  4. 「サーバーマネージャ」でHyper-Vの役割を追加する

 Server Coreの場合は、次のコマンドを実行する。

start /w ocsetup Microsoft-Hyper-V

 以上の操作を行ったら、再起動する。以上でHyper-Vの導入は完了だ。

 なお、手順3の更新プログラムは、サーバーマネージャでHyper-Vの役割を追加した後でインストールしても問題ない。

Hyper-Vマネージャ

 Hyper-V上の設定変更や仮想マシンの管理は、「Hyper-Vマネージャ」で行う(画面1)。Hyper-VマネージャはMMC 3.0のスナップインとして実装されている。

Hyper-Vマネージャ 画面1 Hyper-Vマネージャ《クリックで拡大》

 Hyper-Vマネージャでは以下の操作が可能である。

  • 仮想マシンの一覧、状態確認
  • 仮想マシンの作成、削除、設定変更
  • 仮想マシンの起動やシャットダウン、一時停止、スナップショットなど
  • 仮想ネットワークの設定
  • 仮想HDDの操作(作成、削除、変換など)
  • 仮想マシン操作用の接続クライアント(vmconnect.exe)の起動・終了(画面2)
接続クライアント 画面2 接続クライアント(vmconnect.exe)《クリックで拡大》
  • 仮想マシンのエクスポート/インポート
  • ほかのHyper-Vホストへの接続と管理

 Hyper-Vマネージャは、Windows Server 2008(x86版)にも同梱されている。また、Windows Vista SP1にもインストール可能であり、クライアントPCからHyper-Vをリモート管理することもできる。

仮想マシンの作成

 仮想マシンの作成は、Hyper-Vマネージャの右ペインで[新規]→[仮想マシン]をクリックすると起動する「仮想マシンの新規作成ウィザード」で行う(画面3)。ウィザードの指示に従い、仮想マシンのCPU個数やメモリ容量、HDD、ネットワーク、DVDドライブの設定を行えば、簡単に仮想マシンを作成できる。

仮想マシンの新規作成ウィザード 画面3 仮想マシンの新規作成ウィザード《クリックで拡大》

 ゲストOSのインストールは、ホストの物理CD/DVDドライブを仮想マシンに割り当ててOSのインストールメディアからインストールするか、ISOファイルイメージを利用する。

 ゲストOSをインストールしたら、すぐに「統合サービス」をインストールしよう。仮想マシンの接続クライアントの[操作]→[統合サービス セットアップ ディスクの挿入]を実行し、セットアッププログラムの指示に従ってインストールを行えばよい。

サポートされるゲストOS

 Microsoftによって正式にサポートされるゲストOSは、以下の通り。OSごとにサポートされるCPUの数が異なる。また、Windows NT 4.0のような古いOSはサポートされない。

 なお、ゲストOSごとにCPU数をチェックするような機構は存在しないため、以下に書かれたCPU数以上でも動作する可能性はある。ただし、正式サポートされないので注意が必要である。

サポートされるゲストOSと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は、仮想化ソフトウェアとして必要な機能を一通り備えている。以下に紹介する「スナップショット」などは、ほかの仮想化ソフトウェアでもおなじみの機能である。ここでは各種機能を紹介するとともに、運用に際して知っておくべき注意点にも触れているので参考にしていただきたい。

仮想マシンの保存/一時停止機能

 Hyper-Vにはほかの多くの仮想化ソフトウェアと同様に、仮想マシンの保存/一時停止機能がある。保存は、その瞬間の仮想マシンのCPUやメモリの状態がファイルとして保存され、仮想マシンは停止する。仮想マシンが使用していたメモリは解放される。

 これに対し、一時停止は仮想マシンの状態をディスクに出力せず、仮想マシンが使用しているメモリも解放されない。

仮想マシンのエクスポート/インポート機能

 仮想マシンのエクスポートを実行すると、仮想マシンを構成するVHDファイル、設定ファイル、スナップショットなどのデータファイルが、指定したフォルダ配下に丸ごとコピーされる。設定ファイルのみをエクスポートすることもできる。このフォルダを別のホストにコピーしてインポートすれば、簡単に仮想マシンの複製を作ることが可能である。

 インポート時はファイルのコピーを行わず、インポート元として指定したフォルダ配下のデータをそのまま使用する。

 なお、仮想マシンが保存状態でもエクスポート/インポートできる。

スナップショット機能

 スナップショットとは、稼働中の仮想マシンのある時点の状態を保存する機能である。仮想マシンはスナップショット取得後も動作を継続するが、スナップショットを取った時点にほぼ瞬時に戻せる。Hyper-Vでは、複数のスナップショットを作成でき、なおかつ分岐もできる(画面4)。そのため、例えばアプリケーションのインストールテストなどでは、テスト時間の大幅な短縮が可能になるだろう。

スナップショット 画面4 スナップショットの取得状態や分岐状態は、Hyper-Vマネージャで確認できる

 Hyper-Vのスナップショット機能は、スナップショット取得時のCPUやメモリなどの内容をファイルに書き出し、その後はディスクの差分のみを別の「スナップショットファイル(AVHDファイル)」に保存する。元に戻すときは、書き出したCPUやメモリの状態を復元し、スナップショットファイルを新たに作成し直す。

 なお、スナップショットは仮想マシンのバックアップを目的とした機能ではない。また、スナップショットを使用するに当たっては幾つかの注意点がある。

  • パススルーディスクでは使用できない
  • 仮想マシンのディスクI/O性能が劣化する場合がある

 容量固定型の仮想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マネージャでは操作できないのは残念である。

 クイックマイグレーションを構成するための要件は下記の通りである。

  • Active Directory
  • フェイルオーバークラスタ(MSFC)
  • SANまたはiSCSIによる共有ストレージ
  • 仮想マシン個別の共有ストレージ(仮想マシンごとに個別のLUN:Logical Unit Numberが必要)

 クラスタマネージャで仮想マシンの移動を指示すると、以下の処理が行われる。

  1. 仮想マシンを保存状態にし、共有ストレージにファイルとして保存
  2. 共有ストレージの制御権を移動先のホストに切り替え
  3. 移動先で仮想マシンを保存状態から復元
クイックマイグレーション 図1 クイックマイグレーションの構成例

 クイックマイグレーション中、外部からは仮想マシンが止まっているように見える。仮想マシンを保存・復元する仕様のため、仮想マシンのメモリ使用量が多いと数十秒から数分かかる場合もあり、ダウンタイムは無視できない。

 なお、クイックマイグレーションによる仮想マシンの移動により、外部から仮想マシンにネットワークアクセスできなくなる場合がある。これは、外部に設置しているネットワークルータのルーティングテーブルが、クイックマイグレーション後に更新されないことが原因であった。仮想マシンが外部に対して定期的に何らかのパケットを出すような設定を行えば回避可能だが、本来Hyper-V側で何らかの対応をすべきものと考える。将来の改善を望みたい。

System Center Virtual Machine Manager 2008

 Hyper-VマネージャでHyper-Vの基本的な操作は一通り網羅されているが、多数のHyper-Vホストをまとめて管理するのは大変な作業である。

 Microsoftはこのために「System Center Virtual Machine Manager(SCVMM)」という製品を販売しているが、このSCVMMの次バージョンでHyper-V対応が行われる予定である。SCVMMには、複数の仮想化環境を統合管理するのに役立つさまざまな機能が用意されている。

  • 多数のホスト(Hyper-V、Virtual Server、VMware)を集中管理するコンソール
  • 仮想マシン作成・展開のテンプレート管理、ライブラリ管理
  • ユーザーごとに仮想マシンの管理権限を委譲できるセルフサービスポータル
  • 物理サーバから仮想マシンへ(P2V)、ほかの仮想化ソフトウェアからHyper-Vへ(V2V)の移行
  • PowerShellによる全操作のスクリプト化

 このように、SCVMMは仮想化環境の本格的な構築・管理に欠かせない機能が多く含まれており、管理者の負担を軽減してくれる。

WMIによるHyper-Vの制御

 Hyper-Vでは、外部インタフェースとして非常に多くのWMI(Windows Management Instrumentation)オブジェクトを公開している。標準的なWMIを経由することで、スクリプトによる操作や外部ソフトウェアとの連携も可能となる。

 公開されているオブジェクトでHyper-Vのほとんどの操作が可能だといわれているが、大変分かりにくいというのが正直な感想である。公式ドキュメントによる情報もまだ十分ではないので、今後の公開情報の充実を期待したい。

  • Virtualization WMI Provider (英語)

http://msdn.microsoft.com/en-us/library/cc136992(VS.85).aspx

  • Virtual PC Guy's WebLog (英語)

http://blogs.msdn.com/virtual_pc_guy/archive
/tags/Developing+on+Virtual+Server+_2F00_+Hyper-V/default.aspx

最後に

 Hyper-Vは、Windows Server 2008の1機能としてうまく実装されている。Hyper-Vを有効にして、普通に仮想マシンを作って動かすぶんには悩むことはほとんどないと思う。とっつきやすく気軽に導入できる点は大きなメリットである。特にゲストOSがWindows Server 2008やWindows Vistaであれば、チューニングが進んでおり、かなり高い性能を引き出せると期待できる。これまでに紹介してきた留意点を参考に、ぜひHyper-Vを活用していただきたい。

<筆者紹介>

小丸芳弘

富士通株式会社 パーソナルビジネス本部 Windows開発統括部 プロジェクト課長

入社以来、Windows OSの技術担当としてMicrosoftとのさまざまな共同開発に参加。現在はHyper-Vを主とした仮想化技術担当として「富士通Hyper-V仮想化センター」の活動に従事。



関連ホワイトペーパー

仮想化 | Windows Server 2008 | VMware | Xen


この記事を読んだ人にお薦めのホワイトペーパー

この記事を読んだ人にお薦めの関連記事