fsckで修復の練習
CentOS 5.5
// SRPMS の取得・展開 # wget http://ftp.riken.go.jp/Linux/centos/5/os/SRPMS/e2fsprogs-1.39-23.el5_5.1.src.rpm # rpm2cpio e2fsprogs-1.39-23.el5_5.1.src.rpm | cpio -id # tar xzvf e2fsprogs-1.39.tar.gz // この辺りのディレクトリにいろいろある # cd e2fsprogs-1.39/tests/f_h_badnode/ // アーカイブされているので展開 # gzip -d image.gz // そのままだとfsckかけられないのでloopbackデバイスに割り当てる # losetup /dev/loop0 image // マウントすると messages に警告が出力される。(意訳:なんかヤバイからfsckかけたほうがよくね?) # mount /dev/loop0 /mnt/ # tail /var/log/message Aug 27 02:42:36 www14006u kernel: EXT2-fs warning: checktime reached, running e2fsck is recommended // fsckをかけるときはumountした状態であることが鉄則。さもなくば壊れる。 # umount /mnt/ # fsck -t ext3 -f -C /dev/loop0 fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Problem in HTREE directory inode 12929: node (531) has bad max hash Problem in HTREE directory inode 12929: node (993) referenced twice Problem in HTREE directory inode 12929: node (1061) has bad min hash Problem in HTREE directory inode 12929: node (1062) has invalid depth Problem in HTREE directory inode 12929: node (1062) has bad max hash Problem in HTREE directory inode 12929: node (1062) not referenced Invalid HTREE directory inode 12929 (/test2). Clear<y>? yes Pass 3: Checking directory connectivity Pass 3A: Optimizing directories Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/loop0: ***** FILE SYSTEM WAS MODIFIED ***** /dev/loop0: 47730/100192 files (0.0% non-contiguous), 13377/31745 blocks // 返値 1:ファイルシステムのエラーが修正されたの意味 # echo $? 1 // 修復後、マウントしてlost+foundに移動されたファイルが無いか確認。 # mount /dev/loop0 /mnt/ # ll -a /mnt/lost+found/ 合計 13 drwx------ 2 root root 12288 6月 25 2002 . drwxr-xr-x 6 root root 1024 6月 25 2002 .. // 後始末 loop0 がずっと割り当てられたままなので解除。 # umount /mnt # losetup -d /dev/loop0
- オプション
- ファイルシステム故障の種類
# ls e2fsprogs-1.39/tests/
ChangeLog f_bbinode f_hurd f_salvage_dir
Makefile.in f_big_sparse f_illbbitmap f_selinux
README f_bitmaps f_illibitmap f_special_ea
d_loaddump f_clear_xattr f_illitable f_summary_counts
defaults f_crashdisk f_imagic f_swapfs
e_brel_bma f_dirlink f_imagic_fs f_valid_ea_in_inode
e_icount_normal f_dup f_journal f_zero_group
e_icount_opt f_dup2 f_lotsbad f_zero_super
e_irel_ima f_dup3 f_lpf filter_dumpe2fs
f_16384_block f_dup_de f_lpf2 m_dasd_bs
f_8192_block f_dup_resize f_lpffile m_large_file
f_bad_disconnected_inode f_dupdot f_messy_inode m_meta_bg
f_bad_local_jnl f_dupfsblks f_miss_blk_bmap m_no_opt
f_badbblocks f_dupsuper f_miss_journal m_raid_opt
f_baddir f_end-bitmap f_misstable m_std
f_baddotdir f_expand f_mke2fs2b progs
f_badinode f_ext_journal f_noroot r_move_itable
f_badjourblks f_extra_journal f_okgroup r_resize_inode
f_badorphan f_filetype f_orphan run_e2fsck
f_badprimary f_h_badnode f_overfsblks run_mke2fs
f_badroot f_h_badroot f_preen test_config
f_badsymlinks f_h_normal f_recnect_bad test_script.in
f_badtable f_h_reindex f_reconnect
f_bbfile f_holedir f_resize_inode
# ll -i /sbin/ | grep 1012997 1012997 -rwxr-xr-x 3 root root 1158080 11月 12 2010 e2fsck 1012997 -rwxr-xr-x 3 root root 1158080 11月 12 2010 fsck.ext2 1012997 -rwxr-xr-x 3 root root 1158080 11月 12 2010 fsck.ext3