新しいExt4ファイルシステム:現在と今後のプラン
続いてIBM Linux技術センターのAvantika Mathur氏による講演が行なわれた。テーマは、Ext4ファイルシステムの現在と今後のプランだった。Mathur氏はまず最初になぜExt4なのかと問いかけた。現在のLinuxの標準ファイルシステムであるExt3には、ファイルシステムのサイズとして16テラバイトという大きな制約がある。Ext4の開発は、その問題やそれ以外の性能上の問題などから決断されたのだという。
次にMathur氏は、ではなぜXFSやまったく新しいファイルシステムではないのかと問いかけ、その主な理由は既存のExt3のコミュニティが非常に大きいことだと説明した。Ext4であれば後方互換性を維持することができ、Ext3からアップグレードする際にも、一般的にファイルシステムの移行にはつき物である長々しいバックアップとリストアの作業の必要もなくすことができるとのことだ。また彼女は、XFSのコードベースはExt3よりも大きく、コードベースは小さい方が好ましいと述べた。
Ext4ファイルシステムは、Linux 2.6.19カーネルにおいてExt4-devとして始まった。Ext4は、64ビットJBDをともなったExt3ファイルシステムのクローンだという。なおJBDというのが何なのか私にはよく分からなかった。Mathur氏の説明によると、Ext4プロジェクトの目標は、後方互換性を保ったうえで、スケーラビリティ、fsck(ファイルシステムチェック)に必要な時間、性能、信頼性を改善することだという。
Ext4ファイルシステムは現在、最大1エクサバイトまでのファイルシステムのサイズをサポートしているという。言い換えるとExt4では、1ブロックあたり4KBで、48ビットのブロック番号を使用しているため、1,152,921,504,606,846,976バイトを取り扱うことができるということだ。これにより、Mathur氏はExt4が今後5年から10年ほどの間は需要を満たすことができるだろうと予測している。なおそれ以降にそれ以上に大きなファイルシステムのサポートが実際に必要になり、64ビットのファイルシステムへの移行が必要なのであれば、それほど大掛かりな変更をせずに64ビット化することも可能なのだという。
Mathur氏によるとExt3では間接ブロックがすぐに使われることになるが、Ext4では「エクステント」のおかげで、間接ブロックをすぐに使わなくても済むのだという。彼女の説明によると、エクステントとは連続したブロック領域に対して1つのアドレスを使用するもので、各エクステントは、同一ファイルに対して最大20,000ブロックを割り当てることができ、各iノードの本体には4つのエクステントを含めることができる。
さらに、Ext4パッチツリーの中にすでにある機能や間もなく取り入れられる機能についての説明も行なわれた。Ext4では、0を実際にディスクに書き込まずにファイルに空間を割り当てることができる(ディスク空間が前もって保証される)永続先行割り当てが実現される予定だ。彼女の説明によると、割り当てられた領域が0で初期化されているかいないかはフラグを使用して判別し、初期化されていないブロックを読み取った場合にはファイルシステムのドライバが0を返すのだという。
またExt4の遅延割り当てについての報告も行なわれた。遅延割り当てではディスク空間は、ファイルがバッファに書き込まれる際に割り当てられるのではなく、バッファがディスクに書き込まれる際に割り当てられるようになる。その結果、ファイルはディスク上でより連続した場所に保存されるようになり、短期間や一時的にしか存在しないファイルは、物理ディスク空間が最終的に割り当てられる前に消去される可能性もあることになる。Ext4ではまた、エクステントで示される領域全体を一度に割り当てることのできる「複数ブロックアロケータ」も実現されている。また、オンラインでデフラグするツールも現在開発中だとのことだ。
Mathur氏によると、1エクサバイトという大きさを取り扱うファイルシステムにとって、ファイルシステムチェックの速度は悩みの種なのだという。現在のfsckを使った場合、1エクサバイトのファイルシステム全体をチェックするには119年もかかってしまうだろうとのことだ。そのためExt4用のfsckでは、割り当てられていないiノードについてはチェックしないなどの改良が加えられているのだという。また、e4fsckがその前身よりも性能的にかなり向上していることを示す性能グラフも示された。
Mathur氏は、Ext4にはExt3と比較してスケーラビリティに関する数多くの改良点があるとし、最大ファイルサイズが2テラバイトから16テラバイトに拡大したことを挙げた。なおファイルサイズの限界が16テラバイトになっているのは、性能とサイズとのトレードオフ的なことが理由だとのことだ。またExt3ではデフォルトで128バイトだったiノードエントリの大きさは、Ext4ではデフォルトで256バイトになった。さらにExt3ではタイムスタンプは秒単位だったが、Ext4ではナノ秒単位のタイムスタンプが導入された。なおその理由は、操作速度が上がり、現在ではファイルを1秒間に何度も変更することができるためだという。さらにExt4では、NFSが利用するための64ビットのiノードのバージョン番号も導入されたという。
Mathur氏は、Ext4プロジェクトに寄与している19人の開発者たちに謝辞を述べることで同氏のプレゼンテーションを締めくくった。
OLSでは企業レセプションが2回開かれたが、OLS 2日目の夜はその2回目の、IBMによるレセプションがコンファレンスルームの一室で開かれ、IBMのPower6プロセッサの紹介とともに食物や景品が振る舞われた。
Anton Blanchard氏によって手短にデモが行なわれたPower6プロセッサには、4.7GHzのコアが16基搭載されていた。Blanchard氏がデモを印象付けるために、Linuxカーネルを10回コンパイルするベンチマークツールを使用してデモを行なったところ、たったの20秒で完了した。
特に注目に値することとして、Blanchard氏によるとIBMはPower6チップのテストとデバッグ用にLinuxを使用しているとのことだ。このデモの後IBMは、PS/3やFreescaleマザーボードなどをくじ引きの景品として配った。4日間のOLS 2007の2日目はこのようにして終わった。
