また1つ、Linuxの「次世代」ファイルシステムが登場する。名前は「Tux2」。まだコードは一切リリースされていないものの、アルゴリズムが目新しいためにSlashdotなどで話題になっているものだ。
現在Linuxで標準なのは「Ext2」。1993年、それまでLinux標準だったMinix FSの制限を打ち破るために作成されたファイルシステムだ。
Ext2の限界
ここに来て多くのファイルシステムが開発されている理由は、Ext2の機能が不十分になってしまったせいだ。とくに問題になっているのが、ファイルシステム修復プログラム「fsck」にかかる時間が長いことだ。
Ext2はファイルシステムの一貫性を保つ機能が欠けている。このため、キャッシュをディスクに書き込む途中でシステムがクラッシュすると、ファイルシステムの内容が矛盾した(壊れた)状態になってしまう。その状態で運用を続けることは無理なので、fsckで修復しなければならないのだが、fsckの実行は長時間かかってしまうのだ。
システム稼動中にプラグを抜いても、fsckなしにすぐ運用を再開できるファイルシステムが必要だ。
そのようなファイルシステムは、(Linus Torvaldsがリリースしている)公式のカーネルにはまだ在存しないが、非公式のパッチであれば「ReiserFS」が提供されている。ReiserFSは、キャッシュをディスクに書き込む前にログを取っておいて、もしクラッシュしても、ログを「リプレイ」することで一貫性を保つことのできるものだ。この機能は「ジャーナリング」と呼ばれ、商用UNIXやほかのOSでも広く使われている。
新アルゴリズムを採用したTux2
Tux2もfsckを必要としない。しかしその仕組みは、ジャーナリングファイルシステムとは異なっている。用いているのは、「Phase Tree」と呼ばれる新しいアルゴリズムである。
Phase Treeは、3つのツリーでファイルシステムを構成、書き込み専用のツリーに対してデータを保存し、全てのデータを書き込んだところで一度に(アトミックな操作で)きれいな状態のツリーに「遷移」させる。この方法では、書き込み中の状態というのが在存しないので、どのタイミングでも一貫性が保たれている。つまりどのタイミングでクラッシュしても、ファイルシステムを修復する必要がないということだ。
Tux2のもう一つの特徴は、既存のExt2との親和性が高いことである。Ext2を“Tux2”としてマウントするだけでファイルシステムを自動的に変換、Tux2として使用することができるという。これはReiserFSにはない大きな利点だ。
そのほかにTux2は、UNIXのセマンティクスをできるだけ維持したまま(MacのリソースフォークやWindows NTのストリームのような)ファイルにメタ情報を持たせるための仕組みや、1ブロックに満たないファイルの末尾をまとめて収納することでディスクの使用効率を高めるアルゴリズムの導入なども、目標に入れているという。
Tux2の公開の時期は未定。いまはオリジナル開発者のDaniel Phillipsが未公開のまま開発を進めている段階だが、コードはGNU GPL (General Public License)でリリースされる予定だ。