Linux 備忘録 : Ext3 のジャーナルファイルの再作成の方法
本日は、休日出勤。残念ながら、昨日は疲労で高熱をだしたりで、週末の料理レシピはお休みです。
お仕事で使っている Oracle サーバのディスクにおいて、Ext3 のジャーナルファイルが怪しくなってきたので再作成する事にしました。ジャーナルの再構築って、過去に幾度か失敗した経験があるので怖いのですが今回は無事に成功しました。備忘録として手順をまとめてみました。
- 1. まず始めに Ext3 上でファイルシステムの破損状況を調査する
- umount /dev/hda1
e2fsck -fn /dev/hda1
正常時
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/hda1: 150/4308992 files (10.7% non-contiguous), 3486771/8614848 blocks
Parallelizing fsck version 1.20-WIP (17-Jan-2001)
異常時
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'pmon_14940.trc' in /oradata/bdump (212993) has deleted/unused inode
213170. Clear? noEntry 'arc0_14960.trc' in /oradata/bdump (212993) has deleted/unused inode
213171. Clear? noPass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: -5386571 -5386572 -5386574
Fix? noFree blocks count wrong for group #164 (14151, counted=14148).
Fix? noFree blocks count wrong (4880041, counted=4880038).
Fix? noInode bitmap differences: -213170 -213171
Fix? noFree inodes count wrong for group #13 (16195, counted=16193).
Fix? noFree inodes count wrong (4301413, counted=4301411).
Fix? no/dev/hda1: 7579/4308992 files (24.7% non-contiguous), 3730799/8610840 blocks
Parallelizing fsck version 1.20-WIP (17-Jan-2001) - 2. 破損箇所を特定する
- find / -inum inode番号
inode でファイルを検索して、削除しても問題がない inode かを確認する。問題があるファイルの場合もあるけど、今回はそこまで踏み込まないものとします。かなりの破損状況が確認された場合は、「nemuiDoc: あるext3復旧レポート」が参考になります。 - 3. Ext3 を いったん Ext2 に戻す
- tune2fs -O^has_journal /dev/hda1
- 4. ファイルシステムの修復を行う
- fsck -y /dev/hda1
fsck -fn 時に出力された破損 inode に相当するファイル(find で調査した値)は
lost+found ディレクトリに移動されます。 - 5. クリーンな状態になったところで、Ext2 を Ext3 に戻す
- tune2fs -j /dev/hda1
以上で、クリーンな状態のジャーナルファイルが再作成されます。こんなので効果があるかどうか分かりませんが・・・。そもそもファイルシステムが破損した場合は、ファイルシステムデバッガ debugfs を使って調査するみたいです。
勉強不足で未経験ですが、下記の方法でもジャーナルファイルを無効化し、Ext2 に戻すことができるようです。
debugfs 1.32 (09-Nov-2002)
debugfs: features -needs_recovery -has_journal
Filesystem features: dir_index filetype sparse_super
debugfs: quit
コメントやシェアをお願いします!