マイクロソフトのHyper-V
それでは、代表的な仮想化ソフトウェアを見ていこう。Hyper-Vは、Windows Server 2008専用の仮想化ソフトウェアである(図7)。
前述のように、Hyper-Vでは仮想マシンの上で動くWindows Server 2008を使ってデバイスへのアクセスなどを行なう。この特別扱いされた仮想マシンを「ペアレントパーティション」と呼ぶ。それ以外のOSが稼働する仮想マシンは「チャイルドパーティション」だ。
このHyper-Vは、ハイパーバイザコールなどによるメモリやCPUの仮想化機能(準仮想化のための機能)として、「Enlightenments」と呼ばれる機能を持っている。これは、メモリマネジメント機構へのアクセスなどをハイパーバイザに依頼するハイパーコールと、それを処理する機能などを総称したものである。
また、外部記憶やディスプレイ制御などのために、仮想マシン間で高速にデータを転送するための「VMBus」という仮想的なバスを用意している。デバイスのアクセスについては、ゲストOSに組み込んだ「VSC(Virtualization Service Client)」が受け付ける。そして、VMBusを介してペアレントパーティションにある「VSP(Virtualization Service Provider)」と通信を行なって処理している。
仮想化で一歩先行くVMware ESX
VMware ESX(図8)は、それ自体がデバイスドライバを持ち仮想化を行なっている仮想化ソフトウェアだ。仮想マシンごとに用意される「VMM(Virtual Machine Monitor)」と「VMkernel」、そしてデバイスドライバなどから構成されている。
ヴイエムウェアは仮想化支援機能のないプロセッサ時代から仮想化ソフトウェアを提供しており、完全仮想化を得意としていた。この基本技術はバイナリトランスレーションと呼ばれるもので、プログラムコードを書き換えることにより、ハードウェアによる仮想化支援機能を持たないプロセッサでも仮想化を実現していた。しかし、現在ではプロセッサが持つハードウェア仮想化支援機能を利用できるようになった。さらに、準仮想化もサポートしてより効率的な仮想化を実現している。
VMware ESXは、純粋なベアメタルアーキテクチャのハイパーバイザといえる。VMwareの準仮想化のインターフェイスは「VMI(Virtual Machine Interface)」と呼ばれ、これに対応したLinuxなどをVMI-Linuxなどと呼ぶ。
前述の通り、PCアーキテクチャの仮想化ソフトウェアとして古くから使われているため、対応するサーバ用ハードウェアも多い。
VMware ESXは、VMware Infrastructureと呼ばれる製品群の1つである。先頃、新バージョンの「VMware vSphere 4」も登場した。また、最近ではメモリ占有量の小さいVMware ESXiも無償で提供<されている。VMware Infrastructureには、仮想マシンを停止させずに他のマシンで実行しているESXへと移行させる「VMotion」や、クラスタ内で仮想マシンを負荷の低いマシンへと移動させる「VMware DRS」などが用意されている。
オープンソースのXen
Xenはオープンソースとして開発が続けられている仮想化ソフトウェアであり、もともとはケンブリッジ大学の研究プロジェクトとしてスタートした(図9)。開発の中心はプロジェクトメンバーが創立したゼンソースだったが、同社は2007年にシトリックス・システムズが買収しており現在ではその一部門となっている。Xen自体はGPLで公開されるオープンソースソフトウェアのままであり、Xen.orgが配布などを行なっている。
Xenは当初準仮想化を前提にした仮想化ソフトウェアとして開発されたが、そのあと完全仮想化にも対応している。ただし、このためにはプロセッサに仮想化支援機能(Intel VT、AMD-V)が必要になる。
Xenでは仮想マシンを「ドメイン」と呼び、ドメイン0で実行されているゲストOSがハードウェアアクセスを行なう。それ以外のドメインをドメインUという。ドメインUには「Front-Endデバイスドライバ」が組み込まれており、Xenハイパーバイザ経由でドメイン0の「Back-Endモジュール」と通信してI/O処理を行なう。
なお、ゼンソースはマイクロソフトと仮想化で提携しており、Hyper-V上でXen対応のゲストOSを動作させるために必要なモジュールなどが提供されている。
この連載の記事
-
第7回
ソフトウェア・仮想化
ネットワーク機器で用いられる仮想化技術 -
第6回
ソフトウェア・仮想化
サーバだけじゃない!ストレージ仮想化の重要性 -
第5回
ソフトウェア・仮想化
クライアントPCを仮想化するVDIの正体 -
第4回
ソフトウェア・仮想化
パーティショニングによる仮想化とは? -
第2回
ソフトウェア・仮想化
ホストOS型とハイパーバイザ型の違いを知る -
第1回
ソフトウェア・仮想化
さまざまな仮想化技術の基本を理解する -
ソフトウェア・仮想化
すっきりわかった仮想化技術<目次> - この連載の一覧へ