7月版 新ファイルシステム「ext4」開発開始か


上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/7/25

ext4ファイルシステムへの道

 ext3で扱えるディスク/ファイルのサイズやファイル数を拡張する一連のパッチがリリースされました。

 6月にはMingming Caoが「extents and 48bit ext3」というタイトルのメールで、ext3ファイルシステムをextentベースに変更し、さらに48bitにするパッチを投稿しました。8Tbytes(ブロックサイズ4kbytesの場合)の壁を超えるため、extentのサイズを48bitで管理するというものです。ext3ファイルシステムを-o extentsオプション付きでマウントすると、ディスク上のextentのフォーマットが48bitに変更されるそうです。

 ただ、いったんこの形式でマウントしてしまうと、その後は対応していないカーネルではマウントできなくなります。この点が議論になり、Jeff Garzikは「ディスク上のフォーマットが不可逆的に変わってしまうのであれば、いっそのこと『ext4』という名前にしよう」という意見を出しました。議論の結果、ext3を大幅に変更することについては異論が多く、ext4を作成する方向になったようです。

 しかし、まだ課題は残っています。ext3のソースコードをそのままコピー(cp -r ext3 ext4)してext4を作成したとしても、それ以降はext3のメンテナンスがやりにくくなることが問題となりました。Matthew Wilcoxは、「ext2とext3の差分を調べたが、ext3でしか修正されていない問題がいくつかある」と指摘しました。ext4が増えるとさらに複雑になることが予想されるので、今後のメンテナンスを考えると重要な問題となるでしょう。

 Linus Torvaldsはこの議論を見て、「ext3で利用できるディスクのサイズを大きくすることも必要かもしれないが、ほかにも重要な問題もある」ことを指摘しました。「現状、ext3がiノード管理のために確保しているメモリ領域は大き過ぎる。これは問題だろう。次のコマンドを実行して、その結果を見てみろ」というのです。

# cat /proc/slabinfo | grep ext3

 この問題に対しては、Theodore Tsoがすぐに「Inode diet」というパッチを出して対応しました。

 ext4がどうなっていくのかまだ明確には見えてきていませんが、しばらくext3関連の動きから目が離せそうにありません。

関連リンク:
NECソフトウェア東北株式会社 佐藤さんの、ext3の各種制限への対応について、いままでの経緯について説明したLC2006での発表論文
http://lc.linux.or.jp/paper/lc2006/CP-09.pdf
発表資料
http://lc.linux.or.jp/lc2006/slide/CP-09s.pdf

4KSTACKSの場合割り込みがカウントされないバグ

 Danial Thomは「Measuring tools - top and interrupts」というメールで、「ハードウェア割り込みが多数発生していてもsys cpuが増えないのはおかしい」と指摘しました。ネットワーク負荷を掛けていてもCPU負荷が高くないのは変だろう、ということです。「その程度のネットワーク負荷は大したことがないからCPUに負荷は掛からないのだ」という見当違いのメールが多数流れた後、実は問題があったことが分かりました。

 最近のカーネルは、4KSTACKS(2006年1月版)を利用しています。Arjan van de Venの解説によると、4KSTACKSを利用していると、ハードウェア割り込みとソフトウェア割り込みとユーザー割り込みはそれぞれ独自にスタック領域を持っています。「softirqが実行中か」というフラグはスタック上にあり、割り込み時間の計上はこのフラグを参照して行われています。そして、一部の割り込みの経路ではこのフラグが更新されておらず、今回の問題が発現したというわけです。

 たまには負荷を計測するツールがちゃんと動いているのか、前提条件をまず確認しておく必要がありそうですね。

-stableの進ちょく

 今回も相変わらずSCTP関連の修正が多いようです。また、2.6.16と2.6.17系列が並行してメンテナンスされている点が特徴的です。2.6.16がいつまでメンテナンスされるのか、気になるところです。

  • 2.6.16.20(6月5日)
     ・sbp2のiPod用のワークアラウンド
     ・libataのレジュームの修正
    など、12パッチ
  • 2.6.16.21(6月20日)
     ・SCTPの無限ループの修正(CVE-2006-3085)
     ・run_posix_cpu_timersから意味のないBUG_ONを削除(CVE-2006-2445)
     ・PowerPCの32bitカーネルのMCAの問題(CVE-2006-2448)
    など、4パッチ
  • 2.6.16.22(6月22日)
     ・tmpfsの[acm]time時間の扱いの修正
     ・MIPSでのNTFSの修正など、http://bugzilla.kernel.org/でトラッキングされている問題の修正
    など、12パッチ
  • 2.6.16.23(6月30日)
     ・SCTPの問題修正(CVE-2006-2934)
     ・PARPORT_SERIALがSERIAL_8250_PCIに依存していたのを修正
  • 2.6.17.1(6月20日)
     ・SCTPの無限ループの修正(CVE-2006-3085)
  • 2.6.17.2(6月29日)
     ・ohci1394のsuspend/resume
     ・bcm43xx:Machine Checkの対策
     ・SCTPの各種修正
    など、23パッチ
  • 2.6.17.3(6月30日)
     ・SCTPの問題修正(CVE-2006-2934)
(以上、敬称略)

2/2

Index
Linux Kernel Watch 7月版
 新ファイルシステム「ext4」開発開始か
  Page 1
 2.6.17カーネルリリース
 突破口の見えないvgetcpuの実装
 リードオンリーでbind mount
Page 2
 ext4ファイルシステムへの道
 4KSTACKSの場合割り込みがカウントされないバグ
 -stableの進ちょく

連載 Linux Kernel Watch


 Linux Squareフォーラム Linuxカーネル関連記事
連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします
連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
特集:全貌を現したLinuxカーネル2.6[第1章]
エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する
特集:/procによるLinuxチューニング[前編]
/procで理解するOSの状態

Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する
特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
Linuxのカーネルメンテナは柔軟なシステム
カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


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

注目のテーマ

Linux & OSS 記事ランキング

本日 月間