write ahead log

ロールフォワード用

システム起動時にUNEXPECTED INCONSISTENCYエラーが発生した時の対処

サーバを再起動すると, 見たくないものを見てしまった.

Checking filesystems

/12: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
            (i.e., without -a or -p options)

            *** An error occurred during the file system check.
            *** Dropping you to a shell; the system will reboot
            *** when you leave the shell.
            Give root password for maintenance
            (or type Control-D to continue):

人間とは困ったもので, こういう時にはじめてバックアップの不確実さに気づくのだ.

なんとかする

何がともあれメッセージ通りに従うことにする.

メッセージによるとファイルシステムのサイズが物理デバイスのブロックと一致していないらしい.

(※結果的に今回はLVMボリューム割り当て変更時のミスだった.もしその他の理由でブロックサイズが一致していなければハード故障の可能性があるので最善の対処は別かもしれない.)

/dev/mapper/VolGroup-lv_home: The filesystem size (according to the superblock) is 2621440 blocks  
The physical size of the device is 2500608 blocks  
Either the superblock or the partition table is likely to be corrupt!

/dev/mapper/VolGroup-lv_home: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
                                [FAILED]

            *** An error occurred during the file system check.
            *** Dropping you to a shell; the system will reboot
            *** when you leave the shell.
            Give root password for maintenance
            (or type Control-D to continue):

上記画面でrootのパスワードを入力する.

Give root password for maintenance
(or type Control-D to continue): [パスワードを入力]

するとrootでログインできる.

(Repair filesystem) 1# 

/etc/fstabを見ると対象のファイルシステムがわかるので確認しておく.

# cat /etc/fstab
[]
/dev/mapper/VolGroup-lv_home   /home     ext4    defaults    1    2
[]

メッセージの指示通り, fsckをかける.

# fsck -t ext4 /dev/mapper/VolGroup-lv_home

すると以下のメッセージが出てくる.
ビビりながらnを入力する.

fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
The filesystem size (according to the superblock) is 2621440 blocks
The physical size of the device is 2500608 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? [nを入力]

色々出るが, Yで. 以下のようなメッセージが出ると思う.

/12: 107499/2560864 files (1.5% non-contiguous), 83124/2621440 blocks

とりあえずこれで次のステップへ進める.

ファイルシステムの認識と物理ブロックが異なるということだったので,ファイルシステムの認識を是正する.

# resize2fs /dev/mapper/VolGroup-lv_home 2500608 [<= サイズは上記のphysicalに合わせる]

最後にもう一度fsckをかける.fをつけるとcleanな状況でも強制的にかけるらしい.

# fsck -f /dev/maper/VolGroup-lv_home 

締めにリブートする

# reboot

上記まででとりあえずブートできた.

ただ,すぐバックアップを取らないと悲惨なことになるので....

参考

vpsget ディスクイメージを縮小する システム起動時にUNEXPECTED INCONSISTENCYエラーが発生した場合は