既報のとおり、Red Hatは、6月18~20日の3日間にわたり開催された「Red Hat SUMMIT Boston 2008」において、仮想化への取り組みを強化することを発表した。その詳細について、同社 Product Marketing ManagerのAndrew Cathrow氏に話を聞く機会が得られたので、お伝えしよう。
KVMベースのハイパーバイザーとは?
まず、組込型のハイパーバイザに関してだが、これはKVMをベースに開発したものと説明されていた。しかし、Cathrow氏によれば、このハイパーバイザはある意味でLinuxカーネルそのものだという。KVMは、もともとは"Kernel-based Virtual Machine"の意味だといわれる。"カーネル・ベース"とあるところからも分かるとおり、Linuxカーネルに仮想化されたゲストOSの実行をサポートする機能を組み込む手法で、分類としてはホストOSの上でゲストOSを実行する「ホストベース」の仮想化技術と位置づけられる。
これに対して現在主流となっているのはハイパーバイザ方式で、こちらは仮想化を実現するための機能だけを備えたハイパーバイザと呼ばれるソフトウェアをハードウェア上でまず実行し、その上で仮想化されたOSを動作させる。ハイパーバイザは仮想化を実現するための機能とハードウェアの制御を行なうが、それ以外の機能は持たず、通常のOSよりも負荷が軽く安定性が高いとされる。ハイパーバイザ方式の仮想化は、VMware ESX ServerやMicrosoftのHyper-V、オープンソースのXenなどが採用する方式だ。
実際はLinuxカーネルそのもの
Red Hatのハイパーバイザは「KVMベース」と説明されていたが、個人的には「KVMのコードを基にハイパーバイザ方式に作り替えた」という話だと理解していた。しかし、今回Cathrow氏に確認したところ、「事実上Linuxカーネルそのもの」という答えであった。つまり、Red Hatのハイパーバイザは、Linuxからハイパーバイザとしての動作に不要な部分を外して軽量化し、さらに多少の追加機能を加えたものだと考えられる。同氏は、「ハイパーバイザ上でユーザー・アプリケーションを実行することはできない」といい、具体的にはglibcやXといったアプリケーション実行のための機能が外されていると説明した。サイズに関しては「40MB以下を目標としているが、現時点でのサイズは57MB程度だ」という。
同氏はこのアイデアについて、「携帯電話やネットワーク機器のOSとして、不要な機能を取り除いて構成したLinuxが使われているのと同じように、ハイパーバイザ用にLinuxをカスタマイズしたもの」だと表現した。このアプローチのメリットは、Linuxカーネルの進化が即座にハイパーバイザに反映される点だ。もっとも分かりやすいのはデバイス・サポートだろう。ハイパーバイザは物理サーバのハードウェアを制御しなくてはならないため、新しいデバイスに対応するためにはデバイスドライバが必要になる。一般的なハイパーバイザでは、よく使われるデバイスに対して独自に対応しているが、Linuxカーネルをそのまま使えば、Linux用に開発されたデバイスドライバをそのまま使えるため、広範かつ迅速なデバイスサポートが可能になる。さらに同氏は、「パワー・マネジメント(電源管理)のような新しい機能がLinuxに実装されれば、それもすぐに利用できるようになる。独立したハイパーバイザでは、ハイパーバイザで新機能に対応し、さらにハイパーバイザ上で動作するOSでも対応を行なうことになり、重複した開発負担が生じる」という。