自分のコードがLinuxカーネルに採用されるまで: 分散ストレージの革命Cephにその例を見る

次の記事

Facebook、メールアドレスと電話番号によるターゲティング広告を来週開始

cephlogo

Linuxのカーネルは、世界最大の、コラボレーションによる開発プロジェクトだ。およそ3000名の個人貢献者が協働してオペレーティングシステムのカーネルの作成とメンテナンスを行い、そしてそれは腕時計や携帯電話からメインフレームに至るまで、ありとあらゆるものの上で動いている。さらに各プラットホームのさまざまな周辺機器すら、Linuxで動いているものが多い。Linuxの作者であるLinus Torvaldsは、カーネルのメンテナたちの緩やかな階層の最上部に座り、何を入れる入れないを彼が最終的に決めている。

しかしそれでは、相当新しいと思われる技術をカーネルに入れてもらうためには、どうすればいいのか?

Sage Weilは当時、カリフォルニア大学サンタクルーズ校で、博士論文のための研究としてLinuxのための分散ファイルシステムを作っていた。そのころはまだ“ビッグデータ”という流行語もなく、HadoopやAmazon S3のようなものもなかった。彼は分散フォールトトレランス(fault tolerance, 障害耐性)について研究していたのだが、研究が進むにつれて、クラスター化ファイルシステムの管理はユーザスペースではなくカーネルのレベルでやるべきだ、という確信に達した。彼は自分のそのファイルシステムを“Ceph”と呼んだ。CephはCephalopod(頭足類)の短縮形で、蛸の複数の脚が非常に複雑高度な並列運動をすることに由来している

Weilは、オープンソースやLinuxのコミュニティと無縁な人間ではなかった。1996年には仲間たちと共にWebホスティング企業Dreamhostを作った。彼の分散ファイルシステムの研究が進むにつれて、その実用化のためにはカーネルに組み入れられることが絶対に必要だ、と分かってきた。でも、自分でカーネルをコンパイルしてクラスター化ファイルシステムを実装してくれるユーザなど、めったにいないだろう。

そこでWeilは、正統派ハッカーの王道を行くことにした。彼は二つの、カーネル関連のメーリングリストに参加し、まずカーネル開発の動向と状況をさぐった。最初は控えめに発言していたが徐々に彼の名前が知られるようになり、評価も上がった。カーネル開発のワークショップにも、二つほど参加し、そこで実物の、生きた人間であるカーネルハッカーたちに出会った。

カーネルハッカーは、パッチという形で自分のコードを提案提出するが、彼も成熟し完成した自分の研究成果を公開カーネルに含めるパッチとして提出した。ベテランのカーネルメンテナたちによる検討の結果、最初の2回は却下された。Weilは彼らの所見を精読し、そこに提案されている改良を実装し、再び提出した。

そうやってWeilが彼のクラスター化ファイルシステムを改良しているとき、AmazonがストレージサービスS3の供用を開始した。さらにHadoopが、分散ストレージHDFSを展開した。この二者のほかにも、大規模ストレージサービスの盛衰が何件か見られたが、そのほとんどがユーザスペースで動く孤立的なシステムだった。

2010年の3月にLinus TorvaldsはやっとCephファイルシステムをメインのカーネルにマージし、それ以降は、Linuxのユーザなら誰もが分散ファイルシステムの利用や勉強をできるようになった。

Weilはマージが実現してからも、じっとしてはいなかった。彼は一群のCephデベロッパたちを牧羊犬のように統轄し、また並行してDreamhostの経営にもフルタイムであたった。そして、Cephユーザにコンサルテーションサービスを提供するための、Inktankという会社も立ち上げた。そのInktankは、短期的そして長期的に、何がねらいなのか、Weilと一部の社員たちに聞いてみた。

社長兼COOのBryan Bogensbergerとコミュニティ担当VP Ross Turkはともに、同社の今後が非常に楽しみである、と語った。Inktankのデベロッパたちは自分たちを取り巻く状況がよく分かっているので、Cephそのものではなく、Cephで何ができるのか、何をすべきかもわきまえている。その中には、遠い先の夢のようなものもあるが、彼らは総じて、将来の開発課題の発見と育成に関し、きわめて積極的だ。

たかが分散ファイルシステムが、未来のまったく予期せざる開発テーマを喚起するって? たとえばCephファイルシステムは、HadoopクラスタのHDFSの、簡単な差し替えリプレースとして利用できる。それは、正しい使い方をすれば、ユーザがクラスタのストレージの部分をあまり気にする必要がなくなり、クラスタの利用そのものに集中できることにつながる。Cephによるストレージは各ノードのインテリジェント性が高く、いかなる種類のマスターコントロールプロセスとも無関係・独立に、ローカルに保存されたオブジェクトに対しコードを動かせる。たとえば、あるCephノードに保存されている画像ファイルに、そのノード自身が作ったサムネイルを付けることができる…そのために中央的なバッチプロセッサを動かす必要がない。ということは、オブジェクトがそのストレージノードに挿入されたらその場ですぐに、自動的に、サムネイルを作ることが可能になる。一見平凡なことのようだが、ストレージのワークフローとしては強力かつ画期的な新技術だ。

CephはAmazon S3のAPIと互換性がある。Amazon S3を使うアプリケーションは、ストレージのURLを書き換えるだけでCephを使える。Amazon S3との競合製品を作りたい者、クラウドにおけるAmazonの支配性を嫌う者、あるいはオープンクラウドの理想を追う者はいずれも、Cephを有効に利用できる。

多くの点でCephの来歴はLinuxのそれと似ている。一人の男が、主として研究目的でコードを落書きしていた。そのうち、それまであったものよりも良いものを作れることに気づいた。CephもLinuxも、企業の研究開発投資とは無縁だ。そして、人気が拡大し同好の士によるコミュニティが成長することによって、社会的にも強力になっていった。Cephには、ストレージの世界を揺るがす大きな可能性がある。Linuxに、コンピューティングを揺るがす力があったように。

Inktankは現在、社員を募集している。LinuxがそれまでのUNIXによるコンピューティングをディスラプトしたように、Cephによるストレージ市場のディスラプトに関心のある方は、応募してみてはいかがか。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中