2005年8月27日土曜日

さぁ、いよいよXenでの仮想化技術が面白くなってきましたよ

割と最近、Xenと呼ばれるOSの仮想化技術が公表されました。仮想化技術というと分かりにくいですが、簡単に言えば1台のPCで同時に複数のOSを起動させようという技術です。VMwareなんかがそれにあたります(XenはVMwareとは仮想化の方法は違いますが)。
VMwareはご存知の方も多いと思いますが、WindowsないしLinux上でWindowsやLinuxを複数起動できるエミュレーションソフトです。企業などへの導入実績も豊富で、今までに長い間開発もされてきたツールであるため、完成度は非常に高いです。
しかし、VMwareはどうしてもパフォーマンスの低下が起きてしまい、さらには潤沢なスペックを必要としていました(ある程度スペックがないとまともに動かない。それでもVMwareは結構軽快に動作することは確か。今のエントリークラスのPCでもそれなりに動かせるくらいチューニングされている)。とはいえ、フリーで公開されている他の仮想化ツールとは雲泥の差でパフォーマンスは高いですけれども。
VMwareなどでは追加するOSに変更を加えなくてもよい分、パフォーマンスをコストとして支払っています。それに対し、追加するOSのカーネル(OSの核となる部分)に修正を加え、仮想化に特化したOSを走らせることでパフォーマンスの低下を劇的に抑えた仮想化ツールが公開されました。それが、Xenなのです。
Xenはオープンソースで公開されており、無料で手に入ります。追加するOSに修正を加える分、仮想OSのパフォーマンスは(実行する内容によっては)ネイティブと遜色ないところまで引き出せるといいます。
しかし、先にも書きましたように、カーネルに修正を加えるため、基本的にはオープンソースなカーネルでなければ簡単にはOSを追加できないことは分かっていただけると思います。なので、今まではXenを使って仮想化を行えるOSはLinuxのみ(BSDもできたっけ?)となっておりました。
ところで、実はPCのハードウェアベンダの流れというのは、この「仮想化」をどんどんプッシュする形になっています。なぜパフォーマンスが低下するにもかかわらず仮想化を推し進めるのか。そこにはちゃんと理由があります。
仮想的に用意したOSは現在走っているOS上で実行している1アプリケーションに過ぎません。よって、追加したOSはとある「ファイル」によって管理されることになります。
そこで、現在走っているメインのOSがメンテナンスなどにより停止しなくてはいけなくなったとします。普通ならそこでOSを止めてしまうわけですが、仮想OSならば、そのファイルを別のPCに渡してやることで次のOS先で仮想OSとして実行することも可能な訳です。
これは企業などでサーバにてさまざまなリソースを管理しているところにとっては重要なポイントとなります。サーバを停止するということはリソースへのアクセスができなくなるということ。その時間はできる限り短いほうがいい。そのため、メインのサーバとスレイブのサーバを用意することで回避することができるわけですが、複数台分の維持費は馬鹿になりません。
仮想化技術はこういった維持費をできるだけ抑えるための技術であるといえます。また、OSの開発などにもかなり役に立ちますね。
さて、じゃあハードウェアベンダが仮想化の波を作ってくれるとどう助かるのか。なんと、ImtelとAMDは次期CPUにてCPUレベルで仮想化をサポートすると打ち出したのです。これにより、現在のCPUではカーネルの修正が必要だったXenに対し、カーネルの修正が必要なくなることになる、というのです。
すると、追加するOSに変更もなく、パフォーマンスもあまり低下しないという仮想化ツールが生まれることになります。そして、カーネルに変更を加えなくてよいということは、プロプライエタリなOSを仮想OSとして実行することができるわけです。
そして、とうとうそれが実現したらしいのです!それがオープンソースの仮想ソフト「Xen」でWindowsが稼働の記事にて紹介されています。そう、かのWindowsがXenによって動作させることができたのです!!!
残念ながら現在出ているCPUではWindowsを仮想OSとして実行することはできませんが、将来のPCではそれも可能となるようです。
仮想化技術は企業以外にもプログラマにも恩恵を与えると思われます。プログラムを開発する際、自分の環境を壊したくなければ、サンドボックスとして仮想OSを構築し、そこで開発ないしテストを行って、必要なくなればそのOSを消してしまえばいいのですから。
Xenは登場してまだ日の浅いツールです。これからどんどんと開発が進んでいくことと思われます(今は32bitアーキテクチャのみなので、64bitに対応するのが当面の目標だったっけ)。現在リリースされているLinuxでは、FedoraCore4、SUSE Linux9.3がXenに対応したカーネルを同梱しています。
これから先、ますますXenから目が離せなくなりますねぇ。


仮想化とは、ホストOS(電源を入れて起動しているOS)上でゲストOS(VMwareなどで起動する仮想のOS)を実行することをさします。ハードウェアなどのリソースは仮想化ツールがAPIとなってアクセスすることとなります。
当然、ハードウェアにアクセスするためにワンクッション(場合によってはそれ以上)置かなくてはいけないため、パフォーマンスは低下します。
今まで仮想化ツールとしてはVMware、VirtualPCなどが商用でリリースされ、Bochs、Qemuなどがフリーでリリースされていました。いずれもゲストOSに変更を加えることなく導入が可能ですが、パフォーマンスの低下はかなりあり、複数のOSを稼動させるにはハイスペックマシンを必要としていました。
しかし、XenはOSのカーネルをチューニングすることにより、パフォーマンスの低下をぐっと抑えることに成功しました。ただし、カーネルをチューニングするため、Linuxなどのオープンソースなカーネルを持つOSしか対象にできなかったのです。
しかし、ImtelやAMDがCPUに仮想化技術をサポートすることとなり、状況が一変します。CPUレベルで仮想化技術をサポートすることにより、OSのカーネルをチューニングする必要なくXenを実行することができるようになるのです。そのため、Xen上で実行できるゲストOSの幅が大きく広がり、かのWindowsをも動作させることができるようになる、と言われています。
そして、実際に動作したという報告があったのは先にも述べたとおりです。これにより、大きくXenの可能性が広まったといえます。一台のPCで複数のサーバを稼動させ、集中管理することも可能になりますし(ただし逆にその一台が故障したときなどは怖いのでスレイブマシンが重要になることに変わりはない)、プログラム開発にも大きな力を発揮してくれるでしょう。
そしてXenはオープンソースであり、無料で手に入れることができるというのが大きなポイントになると思います。企業ではサポートが必要なためオープンソースが必ずしもコスト安になるとはいえませんが、個人の技術あるプログラマなどはXenを使ってのプログラム開発は幅を広げることにつながるのでは、と思っています。
もっと庶民的な観点で言うと、Linux上でXenにてWindowsを実行し、IEでしか見られないサイトを楽しむ、なんてこともパフォーマンスの低下が抑えられるなら手軽にできるわけです(笑)
Xenが登場し、最近では*nux系の雑誌にもたびたび掲載されるようになって来ました。しかし、Linuxなどしか仮想化できないとしてVMwareを脅かすものでもないだろう、とされていたのですが、ここにきてWindowsを実行できるようになったためにわかに活気付きそうですね。記事によればWindowsを実行できたとはいえ、それは容易ではなかったといいます。でも、実行できたというのが大きいですよね。
Xenを実行するためにはさまざまな知識と手間を必要とするためまだまだ手軽に導入、とは行きませんが、そのあたりもこれから徐々に整備されていくことでしょう。まだ世に発表されてから日も浅いのですし。
今のところは設定ファイルのジェネレータがなかったりUIがCUIしかないといった状態なので、そこが整備されるともっと身近になるかと思います。頑張れ、Xen!

0 件のコメント:

コメントを投稿