クラウドの基本機能をサポートした「Xen 4.0」を見る
今年の初めに『仮想化道場』で、Xen 4.0に関して紹介したが、そのときは2010年明けてすぐにリリースと書いたが、結局正式リリースは4月になってしまった。そこで、今回は、実際にリリースされたXen 4.0を踏まえて、Xen 4.0の新機能を紹介していく。
■Domain0のLinuxカーネルを機能アップ
Xen4.0では、Linuxカーネルのpv_opsをサポートしている(スライドはXen Summitの資料より。以下同様) |
Xen 4.0では、ドライバやハイパーバイザーを管理するDomain0に、仮想化環境にチューニングされたpv_ops(Paravirt_Ops)を採用したLinuxカーネル 2.6.31を採用している。以前のXenでは、Linux 2.6.18ベースのXenlinuxが使われたり、各企業がリリースするディストリビューションによっては、新しいLinuxが利用されていた。
しかし、Xen 4.0では、pv_opsをサポートすることで、最新のLinuxをDomain0に使用することが可能になった。今後は、最新のLinuxに対応しているデバイスドライバが利用できるようになり、Xen上で利用できるデバイスの数も増えてくるだろう。
Xen自体が、Linuxカーネルのメインラインに統合されるかどうかは、厳しそうだ。KVMがLinuxのメインラインに統合されたため、同じようなハイパーバイザーをもう1つメインラインに統合するには、Linuxカーネルのメンテナーの同意を取り付けにくい。ただ、XenはKVMより一歩先に、実環境での採用事例も多いため、カーネルのメインラインに採用されなくても、当面は多くの企業で利用されると思われている。
将来的に、Xenが安泰かと言えば、そのあたりは非常に微妙な問題のようだ。Xenの開発を進めているXen.orgでも、Linuxのメインラインへの採用ということは大きな問題になっているようだ。ちなみに、今回Domain0で採用されたpv_ops対応のLinuxは、メインカーネルLinuxではない。
実際、pv_opsへの対応も、Linuxのメンテナー達にXenが受け入れられるようにしていく第一歩といったところだろう。だた、本格的にLinuxのメンテナー達に支持されるためには、Xenの設計自体を現在のLinuxが持っている機能とすり合わせる必要がある。例えば、Xenだけに必要なLinux上のHook、ACPIのインプリメント、ページフラグ機能などを、Xen独自のモノからLinuxにインプリされているモノに変更していく必要がある。こうなると、Xenのアーキテクチャ自体を大きく変えていく必要があるため、時間がかかる作業となるだろう。
【お詫びと訂正】
カーネルのバージョンについて、一部誤りがありましたので、表現をあらためました。お詫びして訂正いたします。
■CPU数やメモリ容量を拡張
Xen 4.0では、サポートするCPU数を大幅に増やしている。1つのXen上で最大128CPUコアまでのCPUをサポートしている。これに合わせて、仮想マシン上でも128個の仮想CPUをサポートしている。メモリに関しては、1ホストあたり、最大1TBまでのメモリをサポートしている。
今回、Xen 4.0でここまでCPUやメモリに関して拡張が行われたのは、Xenをクラウドで使用するためのXen Cloud Platform(XCP)と無関係ではないだろう。クラウドの基盤プラットフォームとして利用していくためには、今までのXenよりも、より多くのCPU、より広いメモリ空間が必要になる。
現在、XCP(Ver0.1)として提供されているイメージには、Xen 3.4.1とLinux 2.6.27が採用されている。使われている。将来的に、Xen 4.0が安定してくれば、XCPもXen 4.0ベースへと移行していくだろう。
■仮想メモリの機能強化
Xen 4.0では、Memory Page Sharing機能が搭載された。この機能は、ゲストOSが使用しているメモリ領域の中で、同じ部分は、ゲストOS間で共有して利用する。これにより、1つのゲストOSが使用するメモリ領域が小さくなる。
例えば、VDI環境などを考えると、同じバージョンのWindows OSが仮想プラットフォーム上で複数台動作することになる。この場合、ゲストOSが必要とする分、真っ正直にメモリを消費する。しかし、Memory Page Sharing機能があれば、同じOSを使用していれば、それぞれのゲストOS分のメモリをセーブすることが可能だ。これなら、ホストOSが10GB分のメモリを持っていて、1GB割り当てたゲストOSを10台以上起動することもできる。
ただし、Memory Page Sharing機能は、Xen 4.0で初めてインプリメントされたため、まだ荒削りな部分が多い。このため、マイナーアップデートを重ねていくことで、パフォーマンス面や使い勝手などの面でも安定してくると思われる。
また、Xen 4.0では、Oracleが開発したTranscendent Memory(TMEM)というメモリ管理機能が搭載されている。TMEMは、Memory Page Sharingとは違い、ゲストOSが余っているメモリをページキャッシュとして使用することに注目している。つまり、ゲストOSが使用するページキャッシュをホスト全体で管理して、重複している部分を省いて、システム全体でゲストOSのメモリ使用量を小さくしていこうというものだ。
メモリのオーバーコミットメント機能に関しては、先行しているVMwareのESXの方が一日の長がありそうだ。今回Xen 4.0でインプリメントされたことで、今後はXenでも利用されるようになるだろう。ただ、CitrixのXenServerなどで本格的に採用されるためには、もう少しXen 4.0の安定度がアップする必要があるだろう。
メモリ管理にオーバーコミットができるように、Page Sharing機能が搭載された | OSは、与えられているメモリをPage Cacheとして消費する | Transcendent Memoryでは、ゲストOSが持っているPage Cacheをまとめて管理して、不要なPageを省こうというコンセプトだ。このモジュールはOracleが開発した |
■VHDのサポート
新しいディスクモジュールでVHDがサポートされた |
Xen 4.0では、ディスク関連のモジュールblktap(Block Tap)が、バージョンアップされている(blktap2)。blktap2では、VHDフォーマットがサポートされた。これにより、オンラインでのライブスナップショットとクローン機能がサポートされた。
また、VHDをサポートすることで、Hyper-V(Windows)の仮想ディスクをXen上でアクセスすることが可能になる。ただし、Hyper-Vの仮想ディスクがそのままXen 4.0上でゲストOSとして動作するかは、はっきりしていない。コンバーターソフトを使用しなくても、直接VHDファイルが利用できるようになれば、Hyper-VとXenとの間での相互互換性が格段にアップするだろう。
■IOMMUとVGAパススルーのサポート
Xen 4.0では、グラフィックカードのパススルー機能が実現されている。この機能を利用するためには、IntelのVT-dやAMDのIOMMU(Input Output Memory Management Unit)などのチップセット側の機能だけでなく、BIOSやグラフィックカード側も対応が必要になる。
この機能を使えば、仮想環境でもパワフルなGPUを利用したグラフィックが利用できる。例えば、Windows 7で実現しているDirectXを利用したグラフィック環境も仮想環境で実現する。仮想環境においても、今までのような、遅いVGAなどのグラフィックではなく、最新のGPUを利用したグラフィカルな画面が利用できるようになる。
この機能は、クライアントPCのハイパーバイザー(Xen Client Initiative=XCI)にとっては必須の機能だ。いくらクライアントPCを仮想化できたとしても、今までのような画面では多くのユーザーは利用しようとは思わないだろう。ハイパーバイザーをクライアントPCに普及させるためには、必要な機能だ。
さらに、ホスト側でもパススルー・グラフィック機能がサポートされることで、VDIなどの環境においても、より表現力の高い画面が提供できるようになるだろう。将来的には、Citrixが提供しているXenAppでもWindows 7の高度なグラフィック機能が提供されるようになるだろう。
■ネットワーク機能の強化
Xen 4.0には、Netchannel2という機能によりネットワークのパフォーマンスをアップしている。Netchannel2は、NICに複数の受信キューを持たせ、ゲストOSにパケットを直接DMA転送できるようにしている。ただし、このままだとDom0の負荷が高まるため、マルチキュー搭載のSmart NICへの対応、I/O仮想化機能(SR-IOV)を持ったNICへ対応することで、負荷をCPUではなくNIC側で処理することでホストの負荷を小さくしている。特にSR-IOVは、VT-dやIOMMUなどのチップセット側の機能が必要になる。
ネットワークストレージを利用するホスト環境では、ネットワークのパフォーマンスや負荷が重要になってくる。どれだけCPUに負荷をかけずに、複数のゲストOSがかかわる大量のネットワークトラフィックが扱えるかが重要になっている。
こういった意味でも、Netchannel2のサポートは重要だ。Netchannel2は、2006年ごろから開発が進められていたため、ようやく機能も安定してXen 4.0に組み込めるほどにまでブラッシュアップされたのだろう。
■フォールトトレランスをサポート
Xen 4.0では、フォールトトレランス(FT)機能のRemusがサポートされた。Remusがサポートされたことで、Xen上で実行中の仮想マシンをバックアップサーバーで常に更新し、障害時にはバックアップサーバーに切り替えることができる。この機能により、ホストに障害が起こっても、仮想マシンの動作を保証することができるようになった。
VMwareのESXでは、FT機能は、一足先にサポートされている。だたし、ハードウェアリソースに与える負荷が高いため、ESX環境でも、すべての仮想環境をFT化するにはハードウェアのコストもかかる。Xen 4.0のFT機能がどのくらいのハードウェアリソースを必要とするのかは、実際に確認する必要があるだろう。
Xen 4.0でFTの機能がインプリメントされた | Xen 4.0のFT(Remus)は、標準で50msのCheckPointが設定されている |
■USBの仮想化を実現
Xen 4.0ではようやく、ゲストOSからUSBデバイスを扱えるようにParaVirtualization USB(PV USB)がサポートされた。PV USBでは、ゲストOSにフロントエンドのドライバを設置し、Dom0に置かれているバックエンドドライバが実際のUSBハードウェアをコントロールすることになる。
Qemu-dmでもUSBの仮想化はサポートされているが、USB 1.1のためパフォーマンスが悪い。しかし、PV USBではネイティブのUSB2.0に近いパフォーマンスが実現されている。
また、サポートされているUSBデバイスもキーボード、マウスだけでなく、サウンドデバイス、FDD、シリアルポート、USBメモリ、DVDドライブ、NIC、USBディスプレイアダプタなど、多彩なデバイスがサポートされている。
PV USBは、2008年から開発が始められ、2年かけてXenに採用された。この機能は、富士通研究所の岩松氏によってインプリメントされた。
PV-USBは、ゲストOS上で動作するフロンエンドとDom0で動作するバックエンドに分かれている。実際のUSBデバイスは、Dom0のバックエンドが管理する | USBのホットプラグもサポートする |
USB 2.0デバイスの多くがサポートされている | リングバッファーのサイズを拡張することで、PVUSBでもネイティブのUSBに近いパフォーマンスが出せるようになった |
■Xeon 7500番台のRAS機能をサポート
Intelが提供している4Way以上向けの最新CPU「Xeon 7500番台」は、メインフレーム並みのRAS(Reliability=信頼性、Availability=可用性、Serviceability=保守性)機能が用意されている。
このRAS機能は、CPUやメモリ、I/Oなどのモジュールにトラブルが起こった際、システム全体をダウンさせずに動かし続けられるようにする。
このRAS機能をXenでもサポートすることで、ホストのハードウェアにトラブルが起こっても、仮想環境を動かし続けることができるようになる。
今後、クラウドなどのエンタープライズ分野でも、積極的に仮想化が利用されることを考えれば、RAS機能は必須の機能となる。ハイパーバイザー自身がRAS機能をサポートしていれば、システムダウンを回避して、システムを動かし続けることができる。これなら、ミッションクリティカルなITシステムを仮想環境で動かすこともできるだろう。
Xen 4.0は、Xeon 7500のリリースに合わせて、Xeon 7500のRAS機能をサポートした初めてのハイパーバイザーとなった | CPUのHotAddもサポートされている | ゲストOS上で、仮想CPUをHotPlugすることもできる |
このように、さまざまな機能が追加されたXen 4.0だが、CitrixなどがXenServerなどに採用するには、もう少し時間がかかるだろう。やはり、企業での導入が前提となるXenServerなどは、安定性が問題になる。こういった面では、メジャーバージョンアップが行われたXen 4.0は、もう少し様子を見る必要があるのだろう。
実際にXen 4.xベースのXen Serverやほかのディストリビューションがリリースされるのは、2010年の中盤から、後半になるだろう。