対クラッシュ防御(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
からとってこいとのこと。(持ってきてないや…)
戻る