対クラッシュ防御(ext3fs)

以前使っていたUPSを取り外してしまったため、ジャーナリング機能を持つ ext3fs を導入しました。今回、Kernelは2.2.16を使用。
まず、Kernelにパッチを当てます。パッチは ftp://ftp.linux.org.uk/pub/linux/sct/fs/jfs/ から ext3-0.0.2f.tar.gz を拾ってきました。
パッチのREADMEを見ながら作業しませう。

○パッチを当てる

#cd /usr/src
#tar zxf ext3-0.0.2f.tar.gz
#cd /usr/src/linux
#patch -p1 < ../ext3-0.0.2f/linux-2.2.16-3.ext3.diff
#patch -p1 < ../ext3-0.0.2f/linux-2.2.16-3.kdb.diff

パッチに失敗するファイルがあるので(何で?)チェックします。
#find /usr/src/linux/ | grep \.rej
./fs/buffer.c.rej
./include/linux/fs.h.rej
./Makefile.rej
上記ファイルを見ながら手作業でパッチを当てます…。(あぅ)

○カーネルを作成する

カーネルオプションの設定をします。
#make xconfig (or menuconfig or config ...)
Code maturity level options -> Prompt for development and/or incomplete code/drivers [yes]
Filesystems -> Second extended fs development code [yes]

その他の設定をしてカーネルを再構築します。
#make dep;make clean;make bzdisk (or bzlilo)
再起動すると /proc/filesystems のなかに ext3 が入ってるのが確認できます。

○ジャーナルファイルを作る

パーティションの最上位ディレクトリに journal.dat ファイルを作る。
#dd if=/dev/zero of=/share/journal.dat bs=4k count=10000
40MBの空ファイルができた。
READMEにはどれだけの大きさが必要なのかわかりませんと書いてある。
小さなファイルシステムなら2MB、大きければ30MB以上いるかもしれないとある。
最低4MBは確保して欲しいらしい。

間違って書き換えてしまわないように、

#chattr +i journal.dat

としておく。

journal.datのinode番号を見る。
#ls -i journal.dat
inode番号が表示されるのでメモしておく。(ここでは15としておく)

ext3としてマウントする。
#mount -t ext3 /dev/hda2 /share -o journal=15(inode番号)
これでext3としてマウントされる。
inode番号を指定するのは初めてext3でマウントするときのみ。
2回目以降は -o journal=… はいりません。
#cat /etc/mtab
として確認してみます。
ext3でマウントできていたらOKです。
確認できたら /etc/fstab を書き換えてext2をext3にしておきます。

○ルートパーティションをext3にする

調子に乗ってrootパーティションもext3にしてみます。(^^;
上記と同じようにjournal.datをまず作ります。
ただし、rootなわけなのでmountコマンドでパラメータを渡せません。

とりあえずlinuxのbootプロンプトのところでパラメータを渡しました。

boot: Linux rw rootflags=journal=15

としましたが、liloコマンドでもパラメータを渡せるようです。
#/sbin/lilo -R Linux rw rootflags=journal=15

それらしく動いたら(?)/etc/fstab を書き換えて完了。

ちなみに古いfsckは使えなくなるので http://web.mit.edu/tytso/www/linux/ext2.html からとってこいとのこと。(持ってきてないや…)

戻る