もしカーネルが選べるとしたら

Debian GNU/Solarisという選択肢

2007/07/02

solaris.jpg

 サン・マイクロシステムズのCEO、ジョナサン・シュワルツ氏は6月13日のブログエントリで、Linuxの生みの親リーナス・トーバルス氏を自邸のディナーに招待している。「私が料理しよう、君はワインを持ってくること。これぞ本当の意味でマッシュアップだ」。

 この招待は、リーナスがメーリングリスト上でサンに対して強い不信感を表明したのに即座に反応して、シュワルツ氏が提案したものだ。リーナスは、サンのオープンソースへのコミットメントは信用できないという。

リーナスの熱烈なラブコール

 6月12付けのLinuxカーネルメーリングリスト宛てポストでリーナスは、サンのスタンスを非難している。「サンはLinuxのリソース(特にドライバ類)を使いたいというわけだ。でも、彼らは何ひとつとして見返りを与えたりはしないだろう(中でも非常に非常に数少ない彼らの輝かしい成果であるZFSについては)」。リーナスは、よほどSolarisの次世代ファイルシステム「ZFS」が気に入っているらしく(参考記事:ノートPCでこそ使いたいZFS)、何度も繰り返しZFSを例にして、サンは重要でない部分ばかり公開して、技術的に優れた肝心の部分をGPLとしてオープンソースコミュニティに提供するということをしていないし、今後もしないだろうと指摘する。「ほとんど間違いなく保証できるできるけど、サンはZFSをGPLv3で出してくることはないね。たとえそれ以外の部分をリリースするとしても。なぜなら、もしそんなことをしたら、特許による保護を失ってしまうから」。これは過去のサンの行状から推論できることだとリーナスは言う。「確かに最終的にJavaはGPLv2でリリースされたし、そのことは賞賛すべきだ。でも、どうしてそんなに時間がかかったのかと、みんなちょっと考えてみたほうがいい」。

 リーナス本人が認める通り、彼のサンに対する見方はかなりシニカルだ。しかし、そうしたシニカルな言葉の端々には、サンに対する熱烈なラブコールが読み取れる。それは待たされすぎた恋人が自分に対して言い聞かせる「期待してはダメ」という叫びに似ているのだと記者は思う。リーナスは、サンの人々がLinuxコミュニティが抱えるカーネル開発者、ドライバ資産をのどから手が出るほどほしがっているのだといって揶揄するが、リーナスはリーナスで、Solarisが持つ優れた技術の数々に対して、できればGPLの基に統合できればと願っているのではないか。

 ZFSを含めて、OpenSolarisのコードはCDDLというライセンス形態で配布されている。GNUプロジェクトの解説によれば、「(CDDLと)GNU GPLとは矛盾します。そこで、GPLで保護されたモジュールとCDDLで保護されたモジュールは合法的に一緒にリンクすることができません」とされている。このため、互いにオープンソースでありながら、LinuxでZFSが利用できないということになっている(それ故にLinux上にZFSを移植したものは、カーネルに組み込む形ではなく、ユーザー空間で動かすファイルシステム「FUSE」(Filesystem in Userspace)を利用する形になっている)。

 リーナスはポストの最後を、こう結ぶ。「これまでのところジョナサン・シュワルツは(前任者であるスコット・マクニーリとは)確かに違ったし、彼が自分で言う言葉の通り、オープンソースに対して真剣であるということを切に願う。誤解してほしくないのだが、Solarisが(CDDLではなく)GPLv3になれば、これは非常に非常にすばらしいものになるだろう。たとえそれがコードに関して一方通行に終わることになるのだとしても!」。一方通行というのが、LinuxからSolarisへのコードの貢献のほうが、その逆よりも大きいのだと言いたいのか、あるいはその逆なのか記者にはよく分からない。

 この愛憎相半ばするようなメッセージを見たジョナサン・シュワルツは、やはりそこにラブコールを読み取ったのだろう。もちろん、お前のことを真剣に考えているに決まっているじゃないか――、そう即答するプレイボーイのように、彼はその翌日にはブログの公開メールの中で、リーナスをディナーに招待したのだった。サンはオープンソースに対して真剣に取り組んでいる、その証に招待しようということだ。

SolarisとGNUシステムのマッシュアップ

 原稿執筆時点の7月2日現在、2人のディナーはまだ実現していないようだが、もし実現するとしたら、これは象徴的な出来事になるかもしれない。つまり、OpenSolaris(あるいはSolaris)とGNUシステムのマッシュアップという可能性だ。念のために付け加えておくが、Linux同様にOpenSolarisも単なるカーネルだ。

 例えば、Debian GNU/LinuxのLinuxカーネルをOpenSolarisに置き換えた「Nexenta OS」が、現在すでにプロジェクトとして存在する。2006年3月にアルファ版のバージョン1をリリースし、2007年5月にはアルファ版のバージョン7をリリースしている。Nexenta OSは、実際にはDebianそのものではなく、派生ディストリビューションのUbuntuを使っているが、その結果、見た目はUbuntuそっくりになっている。

 もともとDebianは、カーネルをLinuxだけに限定していない。GNUプロジェクトが開発したMachベースのカーネル「GNU Hurd」や、NetBSD、FreeBSDといったカーネルを用いたバージョンが存在する。従って、Debian GNU/OpenSolarisともいうべきNexenta OSも、特別に新しいやり方というわけでも、突飛というわけでもない。むしろ、少し歴史をさかのぼって言えば、GNUとLinuxが結びついたことのほうが“接ぎ木”だった。もともとリチャード・M・ストールマンがGNUプロジェクトで目指したUNIX互換システムは、カーネルとしてGNU Hurdを採用するはずだった。1990年代前半、そのHurdの開発がはかばかしくなかったために、横からスッと出てきたLinuxカーネルがジグソーパズルの最後の1ピースを埋め、急成長が始まったわけだ。

 その1ピースが再び別のカーネルに置き換わる可能性はある。少なくとも、ディストリビューションに選択肢があるのと同様に、カーネルにも選択肢が増えるのは健全だ。Solarisがオープンソース化され、GPL化する可能性さえある現在、「Debian GNU/OpenSolaris」という選択肢は現実味を帯びてきている。

SolarisをLinux化するプロジェクト

 Nexenta OSとは別のプロジェクトとして、サン・マイクロシステムズが最近明らかにしたのが「プロジェクト・インディアナ」の存在だ。これはDebianプロジェクト創始者のイアン・マードック氏が、最近サンに移籍して取り組んでいるプロジェクトだ。マードック氏はブログの中で、Linuxベースで作業を行う膨大な数の開発者にSolarisを使ってもらうには、ZFS、DTrace、ゾーンといったSolarisのメリットを知ってもらうだけではダメだという。

 OpenSolarisの最大の問題は、導入のハードルの高さだ。OpenSolarisを動かすには、すでに稼働しているSolarisマシンを用意するか、サンが無償で提供する「Solaris Express Enterprise Pro Champion Edition」というバイナリパッケージを利用することになるが、これは非Solarisユーザーにはハードルが高い。マードック氏は「OpenSolarisを、よりLinuxユーザーに親しみやすいものにするには、まずLinuxでいう意味でのディストリビューションを作らなければならない」という。なぜなら、Linuxユーザーが重視するのは、Linuxカーネルではなく、GNUのツールやデスクトップ、開発環境など、言い方を変えればディストリビューションにバンドルされているソフトウェアやパッケージシステムでしかないからだとマードック氏は指摘する。psコマンドを叩いて出力結果に違和感を覚えたり、標準でインストールされているmakeコマンドがGNUのものでないためにコンパイルに失敗するようでは、多くのLinux育ちのUNIXユーザーはフラストレーションをためてしまうだろう。マードック氏が言うとおり、今の30代以下は、サンのワークステーションに触れることなくUNIXといえば最初からLinuxという世代なのだ。

LinuxカーネルよりSolarisカーネルを選ぶ理由

 いくらオープンソース化されたからといって、誰がわざわざLinuxを「過去の遺物」で置き換えるだろうか。そう思った読者もいるかもしれない。しかし、そうした印象は誤解に基づいていると思う。

 確かに、一部のハイエンドサーバ市場を除くと、2000年頃から急速にSolarisは輝きを失っていった。インテルのx86プロセッサは、価格対性能比の伸びがめざましく、SPARCプロセッサは、いつまでもクロックが低いままだった。また、もともとシングルプロセッサ向けに設計されていたLinuxカーネルと比べると、早い段階からSMP向けのロック機構を多く採り入れたSolarisは、いくぶん動作がモッサリして感じられた。それで「x86+Linux」は「SPARC+Solaris」よりも、はるかに安くて速い選択肢に見えた。x86のコモディティ化したハードウェアをどんどん買い足して、いくらでもスケールアウトができるように思われた。

 しかし、再び風向きは変わってきている。

 1つは、時代がより高度な並列化を求めていることだ。サーバは今後ますます多くのトランザクションをリアルタイムに処理することが求められるようになる。それらの処理は、個々には必ずしも高負荷というわけでも、多くのコンピューティングパワーを要するものでもない。そうした処理には、UltraSPARC T1のように同時に走るスレッドの数が数十にもなる並列処理に適したプロセッサが有利だ。

 リーナスはSPARCプロセッサは過去のものだと言いたいようだが、サーバ用途に関していえば、SPARCアーキテクチャが再び大きなアドバンテージを持ちつつあるように記者には思われる。プロセッサのダイ写真を見れば一目瞭然だが、UltraSPARCのダイ上には、よく整備された田畑のように小さなコアがギッチリと並んでいる。まるでペイントソフトでコピー&ペーストしてモジュールを並べただけのようなデザインは、実は設計すべきダイの数が少なくて済むというメリットもある。一方、x86系のプロセッサはコア数が少なく、キャッシュメモリに多くのトランジスタを割いている。ダイの半分以上とか場合によっては7割程度をキャッシュが占める状態になっている。これは、単一、あるいは2つ3つのプロセスを高速に動かすデスクトップアプリケーションのような用途には適するだろう。しかし、大量の細かな処理を集約してさばくサーバ用途に向くかは疑問だ。これは、デスクトップで圧倒的なシェアを持ったインテルの、逆説的な桎梏(しっこく)ではないだろうか。誰も32コアのプロセッサ上でシングルスレッド設計のクライアント向けアプリケーションを走らせたいなどとは思わないだろう。

 x86であれ、SPARCであれ、今後、コア数が大幅に増えたときにも性能がリニアにスケールするかどうか、また管理が容易かどうかという点を考えると、LinuxよりSolarisに一日の長があるように思われる。セキュリティ関連の機能でも、業務システムでメリットがある先進的な機能が、Solarisには多く取り込まれている。

 マードック氏は、OpenSolarisとSolarisの関係についても、興味深いことを言っている。OpenSolarisのほうは、先進的な機能をどんどん入れ、一方Solarisのほうはバックワードコンパチビリティや安定性重視にして、あまり実験的なコードを入れたりはしない。

 かつてLinuxがそうだったように、OpenSolarisの“クール”な機能の数々が、学生や若い開発者の心を捉え、Debian GNU/OpenSolarisで彼らが育つとしたら? 一部のミッションクリティカルシステムだけでなく、多くのサーバでSPARC+Solarisが採用されるような黄金時代が再び来るかもしれない。

(@IT 西村賢)

情報をお寄せください:



@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)