□ext3
ext3 は ReiserFS 同様に、ジャーナリングファイルシステムです。
名前のとおり、ext2 を拡張してジャーナルログを取得するようにした
ので、ReiserFS よりはちょっと遅いといわれていますが、何と言って
も頑丈な ext2 の派生ですから信頼性は高いと思われます。
重要:というのも ReiserFS を用いている場合に、高負荷などの理由で
?? サーバーがハングして、リセット後の通常起動で復旧した時に、
?? そのとき書き換えていたファイルの中身が、他のファイルの内容
?? に置き換わってぶっ壊れる、という自体がたびたび発生します。
?? もっとも、それらの症状は flock() 関数を使わずファイルロック
?? をすれば回避できるようなのですが… flock() しててもだめな
?? 場合があるようなんです。ext3 ではいかに!?(余談に後述)
ext2 のファイルシステムを ext3 にするのはとても簡単です。
まずはカーネルを ext3 対応にリコンパイルして、e2fsprogs も最新の
物を入れてサーバー再起動して、変更したいパーティションに対して、
/sbin/tune2fs -j /dev/xxxn
とすればOK。そしてこれを起動時からマウントするなら /etc/fstab の
記述も ext2 から ext3 にすればOK。たったこれだけ。ほんとか?
プロセスリストを見ていると、新しいカーネルデーモンが動いてます。
>?? PID USER????? PR? NI? VIRT? RES? SHR S %CPU %MEM??? TIME+? COMMAND
>?? 834 root????? 15?? 0???? 0??? 0??? 0 S? 0.0? 0.0?? 0:00.02 kjournald
>?? 887 root????? 15?? 0???? 0??? 0??? 0 S? 0.0? 0.0?? 0:00.00 kjournald
>?? 888 root????? 15?? 0???? 0??? 0??? 0 S? 0.0? 0.0?? 0:00.02 kjournald
>?? 889 root????? 15?? 0???? 0??? 0??? 0 S? 0.0? 0.0?? 0:00.00 kjournald
これ(kjournald)が ext3 のジャーナリングシステムをつかさどって
くれてます。
「んじゃ新しいパーティションを ext3 にする場合はどないすんねん?」
という質問もあるでしょう。って自分でそう思ったんですけどね。新しく
フォーマット&マウントする場合には、
/sbin/mkfs -t ext3 (-c) /dev/xxxn
として
mount -t ext3 /dev/xxxn /mnt
とします。-c は ext2 のときと同様に精査するためのオプションです。
新しくフォーマットするんだからつけたほうがいいとは思いますけどね。
ちなみに -t ext3 をつけないと、普通に ext2 でフォーマットします。
フォーマット完了後に出てくるメッセージが微妙に違いますのでよく見て
てくださいね。
「ext2」の場合
> :
> :
> Superblock backups stored on blocks:
> 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
>
> Writing inode tables: done
> Writing superblocks and filesystem accounting information: done
> :
> :
「ext3」の場合
> :
> :
> Superblock backups stored on blocks:
> 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
>
> Writing inode tables: done
> Creating journal (8192 blocks): done
> Writing superblocks and filesystem accounting information: done
> :
> :
とまぁこんな感じですが、違いがわかるかな?
余談:どれが一番よいのか?
1.信頼性という点について
前述の「重要」の所にも書きましたが、少なくとも ReiserFS はハング
したときに書き出しているファイルの中身を壊すことがあるので信頼性
という意味では今ひとつという烙印を押さざるを得ません。書き出しさ
えなければ問題ないといえば問題ないんですが。
そんなわけでうちの会社でも ext3 を使うようになりましたが、通常の
リブートは速くなるし、重大な問題が仮に発生したとしても最悪 ext2
でマウントして何とかなったので、現状では ext3 の方がはるかにいい
と思います。
2.速度を計ってみました。(2.4.xx で)
測定方法はいたって簡単。/usr 以下をそれぞれのファイルシステムで
フォーマットした /mnt に tar | tar でコピーして、掛かった時間を
出してみました。(3回)
・「ext2」の場合
4.360u 20.170s 2:50.21 14.4% 0+0k 0+0io 589pf+0w
4.570u 20.950s 3:24.42 12.4% 0+0k 0+0io 589pf+0w
4.660u 20.080s 3:56.69 10.4% 0+0k 0+0io 589pf+0w
・「ext3」の場合
5.250u 28.940s 3:27.38 16.4% 0+0k 0+0io 589pf+0w
4.530u 28.460s 3:21.62 16.3% 0+0k 0+0io 589pf+0w
5.080u 29.430s 3:25.84 16.7% 0+0k 0+0io 589pf+0w
・「reiserfs」の場合
5.540u 45.770s 4:44.55 18.0% 0+0k 0+0io 589pf+0w
5.580u 47.890s 4:32.19 19.6% 0+0k 0+0io 589pf+0w
5.680u 47.570s 4:40.29 18.9% 0+0k 0+0io 589pf+0w
最近のシステムだとまた変わっているかもしれませんね。