Enterprise Watch
バックナンバー

Hyper-Vはどの程度使えるか【第一回】

Hyper-Vの基礎知識

 Windows Server 2008の仮想化機能「Hyper-V」のダウンロード提供が開始された。仮想化機能がWindows Server 2008のOSレベルで提供されることで、複数のサーバーを1台のハードウェアに統合したり、レガシーサーバー環境を新しいハードウェアに移行することが容易になる。レガシーシステムをそのまま使い続けるのではなく、コストパフォーマンスに優れた新しいサーバーハードウェアに移行しても、トラブルなく使うことができるというメリットがある。今回は、Hyper-Vの概要を紹介する。


ハイパーバイザ方式を採用したHyper-V

Virtual Server 2005とHyper-Vの違い【出典:Tech・Ed 2008 Yokohama(以下同)】

Virtual Server 2005とHyper-Vの仕様面での違い
 Hyper-Vは、今までマイクロソフトがリリースしていたVirtual Server 2005とは、根本的にアーキテクチャが異なっている。

 Virtual Server 2005は、ホストOSとなるWindows Server 2003上に仮想環境を構築するアプリケーションとして動作している。この方式では、仮想環境の動作をすべてWindows Serverが管理することになる。このため、ゲストOS(Virtual Server 2005の仮想環境で実行されるOS)上のI/Oアクセスは、すべてホストOS(Virtual Server 2005が動作するWindows Server 2003)のI/Oアクセスに変更されることになる。ゲストOS上のHDDアクセスは、一度ホストOSのファイルアクセスに変更されて、アクセスすることになる。つまり、仮想環境ソフトといっても、他のサーバーアプリケーションとまったく変わらないレベルで動作することになる。

 ホストOSを経由するため、仮想環境の動作パフォーマンスはあまりよくない。HDDやメモリへのアクセスも、いちいちホストOSを経由して行われるため、オーバーヘッドが多い。特に、ホストOSで何かのアプリケーションを同時に動かすと、仮想環境の動作に負荷がかかり、パフォーマンスが悪くなる。また、ホストOS側でトラブルが起こると、仮想環境にも影響が及び、最終的に仮想環境がダウンしてしまうこともある。

 そこで、考えられたのが、ハイパーバイザ方式の仮想環境だ。ハイパーバイザ方式は、ホストOSというものを用意せずに、ハードウェア上に仮想環境をサポートした小さなOS(=ハイパーバイザ)を構築して、その上でOSを動かそうというものだ。このため、ホストOS、ゲストOSといった区別はなく、ハイパーバイザ上で動作するOSは、すべて仮想環境上で動作するものとなる。

 ハイパーバイザ方式のメリットとしては、仮想環境上のOSが直接ハイパーバイザ上に用意されたI/Oにアクセスするため、ホストOS方式のように余分な部分がなくなるため、高いパフォーマンスで動作することができる。

 また、ハイパーバイザは、小さなソフトモジュールであることから、高いパフォーマンスを示すこともメリットだ。このため、管理機能はシンプルなものになり、リモート環境からGUIなどを使って管理することができる。

 デメリットとしては、ハイパーバイザが各種ハードウェアをコントロールするために、専用のドライバが必要になるという点だ。ホストOS方式を利用すれば、Windows Serverがサポートしている膨大な周辺機器を、仮想環境でも変更なしに利用することができる。ハイパーバイザ方式の場合は、専用ドライバが必要になるため、サポートされる周辺機器が少なくなる。


Hyper-Vの仮想化アーキテクチャ

ホスト型とハイパーバイザ型の違い
 Hyper-Vは、ハイパーバイザ型とホスト型のハイブリッド方式(マイクロソフトでは、MicroKernelized ハイパーバイザと呼んでいる)で仮想環境を提供する。ベースはハイパーバイザ型だが、Hyper-Vは、VMwareのハイパーバイザ型仮想環境のESX Server(Monolithicハイパーバイザといわれる)のように、ハイパーバイザ上ですべて仮想環境として動作するわけではない。Hyper-Vは、ハイパーバイザ上で動作するペアレントパーティションとゲストOSが動作するチャイルドパーティションに区分され、ペアレントパーティションにはWindows Server 2008が必要になる(以後、便宜上ペアレントパーティションで使われるWindows Server 2008をペアレントOSと呼ぶ)。

 VMwareのESX Serverで採用されているMonolithicハイパーバイザでは、ハイパーバイザ層にサードパーティが開発したドライバが必要になる。しかし、Hyper-Vで採用しているMicroKernelized ハイパーバイザでは、ハイパーバイザ層にはドライバを置かずにペアレントOS部分にWindows Server 2008で利用されているドライバ本体が置かれる。ペアレントOS側には、仮想環境に対応したネットワークやストレージのドライバ(Virtualization Service Provider=VSP)を用意する。VSPを経由して、ペアレントOSで使われているWindows Server 2008のドライバに接続される。このため、ペアレントOSでは、Windows Server 2008用にリリースされる数多くのドライバがそのまま利用できる。


Hyper-V上のゲストOSの動き。VSCに対応したゲストOSは、ペアレントパーティションのドライバを利用してハードウェアにアクセスする
 Hyper-Vのハイパーバイザは、VMwareのVMM(ESX用)よりも小さなソフトウェアモジュールとマイクロソフトでは説明している。大きさとしては、Windowsのマウスドライバの1/5ぐらいの800KB弱となっている。VMwareで搭載されている仮想環境の管理機能などは、Hyper-V上には用意されず、ペアレントOS上に管理機能が構築されている。ハイパーバイザが小さくなることで、オーバーヘッドが小さくなり、仮想環境の動作パフォーマンスがアップする。

 ハイパーバイザは、仮想環境が動作するため「仕切り(チャイルドパーティション)」を作る。さらに、ペアレントOSが、IHVドライバ、デバイスの追加・削除、プロセッサパワーマネージメントなど、複数の仮想環境を動かすのに必要な管理を行っている。

 Hyper-Vの仮想環境で動作させるOSは、特殊なドライバがなくても動作するようになっている(レガシーモード)。しかし、仮想環境をきちんとサポートしたドライバなどがあれば、より高いパフォーマンス、より高い管理性、より高いセキュリティを実現することができる。このため、仮想化を前提にしたWindows Server 2008/2003では、Virtualization Service Client(VSC)というソフト(ディスク、ネットワーク、ビデオカード、キーボード、マウスなどの仮想ドライバ)が用意されている(統合コンポーネントと呼ばれる)。VSCは、仮想環境専用のドライバ群のため、エミュレーションによりハードウェアにアクセスする既存の仮想環境よりも、オーバーヘッドが非常に小さくなる。

 VSCは、仮想化ドライバのため、実際にハードウェアにアクセスするには、個々のハードウェアを管理しているドライバにアクセスする必要がある。これが、ペアレントパーティションにあるVirtualization Service Provider(VSP)となる。このときに仮想的なバスVMBusが利用される。

 さらに、仮想化を想定していない既存のOS(Windows NT Serverなど)は、今までの仮想化と同じようにエミュレーションドライバ(レガシーモード)で動作するようになっている。


VSP、VSC、VMBusのそれぞれの役割 レガシーモードでの動作方法。仮想マシンのデバイスドライバの動きをハイパーバイザがハンドリングするためオーバーヘッドが多い VSCの動作方法。VMBusを経由してカーネルモードだけで完結するためオーバーヘッドが少ない

 Windows以外のOSに関しては、Linuxの仮想ソフトを開発しているCitrixと提携して、仮想ソフトXenに対応したLinuxをHyper-Vで動作できるようにしている。つまり、Xen対応LinuxにVMBus、ネットワークVSC、ストレージVSC、Hypercallアダプタ(ハイパーバイザを呼び出すためのAPI)などの統合サービスをマイクロソフトとCitrixで共同で提供している。これにより、LinuxもHyper-V上で高いパフォーマンスで動作させることができる。

 VSCが用意できないチャイルドパーティション上のゲストOSでは、今までの仮想環境と同じように標準的な仮想ハードウェアを設計して(エミュレーション)、ゲストOSが持っている標準的なドライバを動かす。このため、ゲストOSがHyper-Vに非対応でも(VSCが提供されていなくても)、動作させることができる。ただし、Hyper-Vに完全対応したゲストOSよりもパフォーマンスは悪くなる。

 ペアレントパーティションには、64ビット版のWindows Server 2008が必須となる。Windows Server 2008にはGUIを利用した管理ソフトが用意されているため、非常に簡単に仮想環境が管理できる。さらに、Windows Server 2008で採用されたServer Coreをペアレントパーティションで利用することもできる。Server Coreを利用した場合は、Windows Server 2008のフルバージョンをペアレントOSとして利用するよりも、OS自体の負荷が小さいため、ゲストOSをより高パフォーマンスで動かせる。仮想環境の管理に関しては、リモート管理ツールを使って、GUIベースで管理することも可能だ。


Hyper-Vの動作環境

 Windows Server 2008で仮想環境を利用するには、ハードウェアとしては、Intel VT/AMD-Vといったx64環境(64ビット環境)をサポートしたCPUが必要になる。最新のハードウェアなら大丈夫だが、IntelとAMDのプロセッサでは、ここ数年大きな世代交代が起こっているため、サーバー用プロセッサということでも世代が少し前だと、VTとx64の両方をサポートしていない場合もあるので注意が必要だ。

 もし、CPUがHyper-Vの動作要件にマッチしているかわからない場合は、ベンチマークソフトのCyrstalCPUID(http://crystalmark.info/)でCPUをチェックしておけばいい。また、CPUがHyper-Vをサポートしていても、BIOSで機能をオンにしていない場合もあるので、BIOSレベルもチェックしておこう。

 またHyper-Vでは、仮想化されたマルチプロセッサ環境をサポートしている。このため、最新のデュアルコアやクアッドコアなどのプロセッサを使用したサーバーの方が、仮想環境を利用するのには適している。

 Hyper-Vは、64ビット版のWindows Server 2008をペアレントOSとして利用しているので、最大2TBの物理メモリを搭載できる。多くのメモリを使えることは、仮想環境で動作するゲストOSにとっては、高いパフォーマンスを得ることができる。ゲストOS側では、利用するOSにより異なるが、最大64GBの仮想メモリを使用することができる。

 Hyper-VのペアレントOSとして動作するServer Coreは、x64を利用した64ビット環境となっている。チャイルドパーティションではx86の32ビット環境でも、x64の64ビット環境でも動かすことができる。このため、物理的に搭載するメモリに関しては、多ければ多い方がいい。Windows Server 2008のServer Coreは、1GBぐらいあれば十分に動作する。しかし、チャイルドパーティションで動作するWindows Server 2008の環境を考えると、1つのゲストOSに2GBぐらいメモリを割り当てることが必要になるだろう。これらゲストOSが複数あることを考えれば、それなりにメモリは必要になる。メモリの価格は急速に低下しているので、ケチらないようにしたい。

 HDDに関しては、ペアレントOS、ゲストOSで利用されるため、高速なHDDが必要になるだろう。仮想サーバーを実際に運用するということを考えれば、SASのRAIDシステム、もしくはファイバーチャネルやiSCSIなどが必要になるかもしれない。単にテストするだけなら、SATAのドライブで十分だ。

 もう一つ重要なのは、ネットワークカードだ。複数のチャイルドOSがネットワークを利用するため、1枚のネットワークカードだと負荷が集中してしまう可能性が高い。このため、実運用の場合は、ネットワークカードを複数用意するか、TCP/IPオフロードエンジン(TCP/IPの一部の処理をネットワークカード側で行う)を搭載したネットワークカードなどを使用すべきだろう。

 このように、仮想環境は便利なものだが、実際に運用するときのハードウェアスペックは注意して用意する必要がある。ハードウェアのリソースが足りなく、サーバーに負荷がかかりすぎ、仮想環境のメリットよりもデメリットが目立つようになってしまうので、実運用時にきちんとしたデプロイメントをすべきだろう。


 Hyper-Vで動作できるゲストOSは、最大128個同時実行。構築できるゲストOSの数は、最大512個となっている。なお、ゲストOSにより利用できるCPU数(CPUコア数)は異なる。以下の表を参考にしていただきたい。

ゲストOS 最大CPU(コア)数
Windows Server 2008(x86/x64) 4
Windows Server 2003 SP2(x86/x64) 2
Windows 2000 Server SP4(x86) 1
Windows Vista SP1Business/Enterprise/Ultimate(x86/x64) 2
Windows XP SP3 Professional(x86) 2
Windows XP SP2 Professional(x86/x64) 1
SUSE Linux Enterprise Server 10 SP1/SP2(x86/x64) 1


Hyper-Vが抱える課題

 仮想環境を本格的に運用するためには、現在運用している物理サーバーの環境をチェックして、仮想環境に移行させるというソフト(P2Vソフト)が必要になる。このソフトでは、物理サーバーのドライバを仮想環境用のドライバに変更することができるかどうかをチェックしたり、実際に変更作業を行ったあとに、仮想環境にコピーをする。マイクロソフトでもVirtual Server 2005などで用意はされていたが、使いやすいものとはいえなかった。やはり、物理環境から仮想環境への移行に手間がかかるようでは、実際の運用で利用しようというユーザーも少なくなる。

 もう一つ重要なのが「実行中の仮想環境をネットワークを経由して、別の仮想サーバーに移行させる機能」だ。

 この機能があれば、複数の仮想サーバーがあれば、その上で動いている仮想環境を物理サーバーの負荷を見ながら、負荷の少ないサーバーに自動的に移動させることができる。これは、運用上非常にメリットが高い。

 Hyper-Vでは、Windows Server 2008が持っているクラスタ機能を利用して、この機能を実現している。マイクロソフトでは、これをQuick Migrationと呼んでいる。このQuick Migrationは、クラスタを利用しているため、仮想マシンがオンラインのままでは、サーバーは移行できない。いったん仮想マシンをオフラインにして、動作状態をディスクに保存してから、移行することになる。また、ドライブごと別サーバーに移行するため、もし同じドライブに別の仮想マシンがあるときは、この別の仮想マシンも移動してしまう。

 このような点を見れば、仮想環境を移行させる機能においては、ライバルのVMwareにはまだまだ追いついていないといっていいだろう。

 なお、P2V(物理環境から仮想環境へ)やV2V(仮想環境から仮想環境へ)などの移行機能は、System Center Virtual Machine Manager 2008で搭載されるようになる。


 次回は、Hyper-Vの基本的な使い方を紹介する。



URL
  Microsoft Hyper-V
  http://www.microsoft.com/japan/windowsserver2008/hyperv-home.mspx

関連記事
  ・ Hyper-Vはどの程度使えるか【第二回】(2008/09/26)
  ・ Hyper-Vはどの程度使えるか【第三回】(2008/10/03)


( 山本 雅史 )
2008/09/19 00:00

Enterprise Watch ホームページ
Copyright (c) 2008 Impress Watch Corporation, an Impress Group company. All rights reserved.