Enterprise Watch
バックナンバー

マイクロソフトの新仮想サーバー「Windows Server Virtualization」を見る


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


Virtual Server 2005とは異なるアーキテクチャのWindows Server Virtualization

Virtual Server 2005とWindows Server Virtualizationの機能比較
 Windows Server Virtualizationは、今までマイクロソフトがリリースしていた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側でトラブルが起こると、仮想環境にも影響が及び、最終的に仮想環境がダウンしてしまうこともある。

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

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

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

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

 さらに問題になるのは、ドライバの熟成度だろう。Windows Serverでは、多くのユーザーがさまざまな周辺機器を利用することで、ドライバの熟成度がアップし、ドライバ自体のトラブルも少なくなる。しかし、Hypervisor方式だと、新たにドライバを開発しなければならなくなるため、あまりユーザーが使っていない周辺機器をHypervisor方式の仮想化ソフトで使用すると、負荷が目いっぱいかかった時にトラブルが起こる可能性もある。もし、HDDのアクセスでトラブルが起こると、Hypervisor方式上に構築されているすべての仮想環境に影響を及ぼす。


Windows Server Virtualizationの仮想化アーキテクチャ

Hypervisorを利用した仮想化のアプローチ。Windows Server Virtualizationは、MicroKernelized Hypervisorを採用している

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

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

 Windows Server VirtualizationのHypervisorは、VMwareのVMM(ESX用)よりも小さなソフトウェアモジュールになっている。大きさとしては、Windowsのマウスドライバの1/5ぐらいだ。VMMのような仮想環境の管理機能などは持たずに、OSが直接ハードウェアをコントロールするのではなく、OSから切り離すだけの機能しか持っていない。Hypervisorが小さくなることで、オーバーヘッドが小さくなり、仮想環境の動作パフォーマンスがアップする。

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

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

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


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

 Windows以外のOSに関しては、Linuxの仮想ソフトを開発しているXenSource(8月にCitrixが買収)と提携して、仮想ソフトXenに対応したLinuxをWindows Server Virtualizationで動作できるようにする予定だ。つまり、Xen対応LinuxにVMBus、ネットワークVSC、ストレージVSC、Hypercallアダプタ(Hypervisorを呼び出すためのAPI)などのドライバやシステムソフトをマイクロソフトとXenSourceで共同で提供することになる。これにより、LinuxもWindows Server Virtualization上で高いパフォーマンスで動作させることができる。

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

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

 なお、64ビット版のWindows Server 2008をペアレントOSとして利用しても、ゲストOSは32ビット版でも64ビット版でも問題なく利用できる。

 ペアレントOSが64ビット化されたことにより、最大2TB(Windows Server 2008 Enterprise Edition)の物理メモリを搭載することができる。ゲストOS側では、最大32GBの仮想メモリを使用することができる。ただし、動作させるゲストOSによって、利用できる仮想メモリは変わってくる。32ビットOSなら4GB、64ビットOSなら32GBとなる。

 なお、ペアレントOSで最大2TBのメモリが搭載できるため、ゲストOSに割り当てることができるメモリも数十GBにすることができる。このことは、仮想環境で動作するゲストOSにとっては、ある程度広いメモリを利用できるため、高いパフォーマンスを得ることができる。


Windows Server Virtualizationでの高度なメモリ・リソース・コントロール
 また、Windows Server Virtualizationでは、メモリリソースの管理に関しても新しい機能が採用されている。今までの仮想化ソフトでは、同じバージョンのOSを複数動作させる場合でも、それぞれの仮想環境が厳密に分けられているため、同じプログラムが二重にメモリに配置される。これでは、メモリ利用が無駄になるということで、Windows Server Virtualizationでは、同じバージョンのOSを動かすときは、メモリ上のページを共有することで、動作に必要な物理メモリを削減することができる。これにより、同じバージョンのOSを複数ゲストOSとして起動しても、少ない物理メモリで動かすことができる。

 また、今までの仮想化ソフトでは、ゲストOSを用意する場合は、物理的にメモリ空間を用意する必要がある。たとえば、Windows Server 2008をゲストOSで動かすときには、できれば2GBのメモリが必要になる。もし、Windows Server 2008のゲストOSを3つ動かすと、仮想環境で6GB必要になり、さらに、ホストOSの動作にも2GBいるため、最低でも起動するのに8GB以上必要になる。

 これでは、メモリ容量の関係で、利用するのも難しくなる。Windows Server Virtualizationでは、仮想環境を設定する場合にメモリリザーブのパーセンテージを指定することができる。通常、メモリリザーブは100%になっているため、指定したメモリ容量だけ、物理メモリを消費する。この時、メモリリザーブのパーセンテージを小さくすることで、小さなメモリ容量でもゲストOSを動かすことができる。これにより、物理メモリ容量の足りないテスト環境でも、ゲストOSを起動できるようになる。もし、メモリが足りなくなった場合は、ゲストOS上でスワップするのではなく、ペアレントOS上でスワップすることである程度のパフォーマンスを保つことができる。


Windows Server Virtualizationの動作環境

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

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

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

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

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

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


Windows Server Virtualizationが抱える課題

 Windows Server Virtualizationは、Intel VT、AMD-Vなど仮想化機能をハードウェアでサポートしたCPUが必要になる。Intel VTやAMD-Vなどでは、ソフトウェアでは処理の面倒な部分をCPUなどのハードウェアでサポートしている。つまり、Intel VTやAMD-Vに対応した仮想化ソフトを使えば、処理が高速化するため、仮想環境も高いパフォーマンスで動作する。Intel VTやAMD-Vは、現在リリースされているXeonやOpteronには、搭載されている。このため、Windows Server Virtualizationは、これらのCPUが持つ仮想化をサポートするハードウェアのメリットを100%活かすことができる。

 より高度な仮想化をサポートするハードウェアとしては、仮想環境が持っている仮想メモリ空間と物理メモリ空間をマッピングする機能が計画されている。これを利用すれば、仮想環境からのメモリアクセスが高速化するため、OSの動作スピードが大幅にアップする。また、グラフィックカードなどに使われているPCI Expressインターフェイスの仮想化なども計画されている。これ以外にも、USB、シリアルATA、PCI、PCI-XなどのI/Oに関する仮想化も将来的には、計画されている。

 Windows Server Virtualizationでは、現在CPUに入っているIntel VTやAMD-Vは、サポートしているが、これ以降の仮想化支援ハードウェアに関しては、サポートしていない。この意味では、仮想化機能のワンステップを提供しているにすぎない。

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

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

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

 Windows Server Virtualizationでは、このLive Migration機能は最初のバージョンでは提供されないことになった。ライバルといわれているVMwareではすでに提供されているため、この部分ではVMwareの方が一日の長がある。


仮想環境の管理方法

 Windows Server Virtualizationでは、MMCを利用したVirtualization Management Consoleが用意されている。このコンソールにより、リモートからWindows Server Virtualization上に構築されている仮想環境を管理することができる。

 Virtualization Management Consoleでは、各仮想環境のマルチプロセッサの数をあらかじめセットすることができる。つまり、Windows Server 2008では8プロセッサすべてを割り当て、Windows NT 4.0などのレガシーOSでは1プロセッサだけを割り当てるといったように、仮想環境ごとにプロセッサ数を変更することができる。もちろん、メモリやHDDの容量もあらかじめセットすることが可能だ。

 さらに、Virtualization Management Consoleでは、動的にハードウェアリソースを変更することができる。これにより、年に一回など年度末の作業を仮想OSで動かしたいとき、通常であれば1プロセッサしか割り当てていないため、負荷がかかりすぎるとする。そのときには、他の仮想環境のパフォーマンスを落として、仮想OSにより多くのプロセッサを割り当てて負荷を回避する。年度末の作業が終われば、仮想OSの環境はほとんど動作しないため、また割り当てるプロセッサを少なくするといったことも簡単に行える。

 ただし、動的にリソースを変更できるのは、Windows Server 2008のみ。他のWindows Server 2003やWindows 2000 Serverなどは、最初に設定したリソースをダイナミックに変更することはできない。

 Virtual Server 2005にあった仮想環境ごとに割り当てられるメモリ容量の上限3.6GBは、Windows Server Virtualizationでは撤廃されゲストOSで32GBのメモリ空間が使えるようになっている。これ以外に、メモリのページシェアリング(仮想環境同士でメモリを共有する)により少ないメモリで複数の仮想環境を動かせる。これは、暫定的にテストをしたり、メモリの少ない開発環境でも複数の仮想環境を動かすことができる。さらに、リザーブメモリを用意しておき、どこかの仮想環境でメモリが足りなくなり負荷が高くなったら、リザーブメモリからメモリを割り当てることも可能だ。

 この他にも、現在実行中の仮想環境をコピーできるボリュームシャドーコピー(VSS)などの機能が用意されている。

 なお、複数の仮想環境を管理するためにマイクロソフトでは、System Center Virtual Machine Manager(以下、SCVMM)というアプリケーションが用意される。SCVMMでは、複数の仮想環境を動作させている物理サーバー群(仮想サーバー・ファーム)を管理することができるため、各物理サーバーの負荷をチェックして、仮想環境を配置することができる。また、仮想環境のVSSをひな形として利用して、一からOSのインストール作業をしなくても、ベースとなる仮想OSを簡単に動かすことができる。


仮想環境の問題はライセンス

Windows Server Virtualizationのリリーススケジュール
 Windows Server Virtualizationのリリースに関しては、Windows Server 2008のRTM完成後、180日後にリリースするとしている。現在公開されているx64版のWindows Server 2008 英語版 RC0には、Windows Server VirtualizationのCTP版が同梱されている。Windows Server VirtualizationのBeta版は、Windows Server 2008 RTM版と同時に提供される予定だ。

 最終的なアナウンスはないが、Windows Server Virtualizationは、Windows Server 2008 Enterprise Edition以上に無償で提供されることになるだろう。Windows Server 2008 Web EditionやWindows Server 2008 Standard Editionは、Windows Server Virtualizationが実際に動作しても、ライセンス的には違反となる可能性が高い。

 Windows Server Virtualizationは、仮想環境としては強力な環境が用意されている。しかし、大きな問題としては、仮想環境で動かすOSのライセンスだ。

 現状ではWindows Server 2003 Enterprise Editionでは、4つまでのWindows OS仮想環境が動作できるようなライセンスになっている。Windows Server 2008に関しては、詳細なライセンスは発表されていないが、今までと同じなら、Windows Server 2008 Enterprise Editionをペアレントパーテーションとして動かさないと仮想環境ごとにOSのライセンスが発生してしまう。レガシーOSのWindows 2000 ServerやWindows NT 4.0を仮想環境で動かす場合は、ペアレントパーテーションがWindows Server 2008 Enterprise Editionで動作しているのなら、OSのダウングレード権利を利用して、それぞれのOSを追加のライセンスコストなく動かすことができそうだ。

 しかし、物理サーバーのOSにWindows Server 2008 Standard Editionなどを利用した場合は、現状のままだと、それぞれの仮想環境で動作するWindows OSには別にライセンスが必要になる。また、クライアントOSに関しては、現状では別にライセンスが必要になる。

 OSのライセンスに関しては、Windows Server 2008が実際にリリースされるまでに、もう少し整理されると思う。しかし、よりライセンスコストがかかるようでは、仮想化も普及しないだろう。


 さらに問題なのは、OSだけでなく、SQL ServerやExchange Serverなどのサーバーアプリケーションだ。マイクロソフトでは、サーバーアプリケーションは、実際に実行されている環境分のライセンスが必要というようになっている。このため、テスト環境を含めて、他の仮想環境にSQL Serverがインストールされていても、稼働していなければ、ライセンスは発生しないことになっている。つまり、稼働しているものにライセンスが必要となる。問題なのは、すべてのマイクロソフトのサーバーアプリケーションにこのライセンスが適応されているわけではなく、一部のサーバーアプリケーションのみということだ。

 また、Small Business Server(SBS)などは、単一のOS環境上で、SQL ServerやExchange Serverなどが動作することを前提としているため、SBSのサーバーアプリケーションをばらして、仮想環境にインストールして動かすことは、ライセンス上許されていない。さらに、仮想環境に関したことをマイクロソフトだけでなく、他社のサーバーアプリケーションまで広げていくと、ライセンスに関してどのようになるかは、各社によって考え方がまちまちだ。

 仮想環境におけるライセンスは、業界全体でコンセンサスができている状況ではない。ユーザーとしては、最悪仮想環境ごとにライセンスが必要になるということも考えられる。これでは、仮想環境を構築して、ハードウェアコストを下げたとしても、OSやサーバー・アプリケーションのコストがかさんでしまう。このあたりに関しては、業界全体できちんとしたコンセンサスを作り、ユーザーにも、メーカーにもベネフィットのあるライセンス形態を構築する必要があるだろう。そうでなければ、仮想化というメリットの大きなテクノロジーも、ソフトウェアライセンスという問題により普及しなくなるかもしれない。



URL
  Windows Server 2008
  http://www.microsoft.com/japan/windowsserver2008/


( 山本 雅史 )
2007/09/28 00:05

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