図1●NILFSの概要(NTTサイバースペース研究所 小西隆介氏の講演資料より引用)
図1●NILFSの概要
(NTTサイバースペース研究所
小西隆介氏の講演資料より引用)
[画像のクリックで拡大表示]

 「不具合が続出したことが,逆に事態が前進する転機になった」---NTTサイバースペース研究所の小西隆介氏は,同氏らが開発したNILFS図1)が最新バージョンのLinuxカーネルに標準採用された経緯をこう表現する。

すべての更新データを復元,SSDで高速

 「半導体ディスク(SSD)上のベンチマークで最も速かったファイル・システムはNILFS」---米LINUX MAGAZINEはこんな記事を掲載している。ext3, ext4, reiserfs, xfs, Brfs, nilfsといったLinuxファイル・システム上でファイルの読み書きを行うベンチマークで,ファイルのサイズが異なる4種類のテストを行い,いずれのケースでもNILFSが最も高い性能を示したという結果を紹介したのだ。この記事は注目を集め,米国のソーシャル・ブックマーク・サービスDiggでは500ユーザー以上がブックマークしている。

 とは言っても,NILFSは速度を向上させるために開発されたソフトウエアではない。過去に更新されたデータをいつでも復元できるようにするファイル・システムだ。これにより,データの可用性を高め,システムの異常停止後の復旧時間の短縮,設定ミスや操作ミスなどによる障害からの復旧を容易にすることを狙いとしている。

 NILFSはある時点の状態だけを保存するのではなく,すべての更新を保存する。そのために,データを更新するのではなく追記していく方式をとっており,そのことが性能が高い理由のひとつになっている。

 NILFSを開発したのは,NTTサイバースペース研究所のNILFSチーム。NILFSは2009年6月に正式リリースされたカーネル2.6.30に標準採用された。初めての日本発標準ファイル・システムである。

Linuxへの統合のため大幅に書き直す

 NILFSの開発が始まったのは2004年12月のこと。2005年9月にはオープンソースとして公開した。だがそれからLinuxカーネルに採用されるまで,足かけ4年を要した。

 NILFSチームがLinuxカーネルへの統合(マージ)を正式に提案したのは,公開の翌年,2006年6月。Linux推進団体OSDL(現 The Linux Foundation)のイベントでのことだ。小西氏らはカーネル2.6のメンテナ(責任者)であるAndrew Morton氏にマージを提案した。Morton氏の答えは「(使われなくなったディスク領域を回収する)ガーベジ・コレクション(GC)機能ができたら入れてもよい」というものだった。

 NILFSチームはガーベジ・コレクション機能の開発を始めた。しかし,検討するうちにガーベジ・コレクションを実現するには,設計をやり直す必要があることが判明。チームはNILFSの書き直しを決意した。「大幅に書き直し,2万8千行のコードは2万行になった」(小西氏)。作り直したNILFS2は,約2年後の2008年2月に正式に公開された。

 小西氏らは2008年8月にNILFS2をカーネル・メーリングリストに投稿した。が,ここで壁に突き当たる。NILFSのソースコードをレビューしてくれるカーネル開発者が集まらないのだ。レビューが行われ,レビュー・コメントが集まらなければ正式にはマージされない。こう着状態に陥ってしまった。

続発する不具合への対応が評価される

 そんな中,2008年12月ごろ,問題が発覚する。設計ミスにより,不具合の報告が続出したのだ。しかし「これが転機になった」(小西氏)。

 不具合対応に追われているうちに「いつのまにかNILFSを保守している雰囲気になった」(小西氏)。結果的に不具合の指摘と対応がレビューと同じ役目を果たしていた。

 2009年3月,チームはマージNILFSを統合してほしいというリクエストのメールを,Linuxカーネル・メーリングリストに投稿する。「(カーネル2.6の責任者)Andrewの答えはYes」(小西氏)。NILFSは,2009年6月にリリースされた新カーネル2.6.30にマージされた。カーネル2.6.30は,NTTデータの原田季栄氏らが開発したセキュリティ強化モジュールTOMOYO Linuxも標準採用され(関連記事),日本発の斬新なソフトウエアが同時に採用されることとなった。

 Linuxだけでなく,同じくオープンソースのUNIX系OSであるNetBSDへの移植も始まっている。移植を行っているのはReinoud Zandijk氏というNetBSDの技術者で,2009年7月にNetBSDの開発版に統合された。ただし現時点ではまだ読み込み機能のみで,書き込み機能のサポートは検討中という。

不完全を恐れず,真摯に対応する

 経営に関する本を読むと「クレームを恐れるのではなく,適切な対応でファンを増やそう,顧客の要望をくみ取ろう」という趣旨の記述を目にすることがよくある。この態度は,経営だけでなく技術にも当てはまると言えそうだ。

 特に多くの技術者が協力しながら新しいものを作り上げていくオープンソースのようなプロジェクトでは,完ぺきになるまで内部で作ってから提出するよりも,不完全な段階から提示し,意見を交わしながら作り上げていくスタイルのほうがより多くの力を結集できる。

 すべてを完全にすることは不可能だ。しかし真摯に対応していけば,何もない場合よりもよい結果が得られる場合は少なくない。NILFSがたどった道のりを聞いて,改めてそう感じた。

◎関連リンク
NILFS公式サイト

■変更履歴
図2を削除しました。 [2009/10/02 18:54]