はじめに
古めのOSですが、CentOS 4サーバが突然停止し、サーバを起動したところ、コンソールに以下のメッセージが表示されておりました。
/tmp配下など/(ルートパーティション)にファイルを書き込めなくなっており、fsckでルートパーティションのファイルシステム修復が必要になりました。
/: 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 passwrd for maintenance
(or type Control-D to continue):
以下はfsckを実行して、ルートパーティションを修復した時のコマンドメモです。
fsck完了まで数時間かかりましたが、サーバは無事復旧しました。
今回は幸いにも、ルートパーティション内のファイルは消えることなく残っており、ファイルの書き込みなども正常に行えるようになりました。
/(ルートパーティション)に対するfsck実行例
・fsckを実行したいサーバのコンソールで、rootユーザのパスワードを入力します。
Give root password for maintenance
(or type Control-D to continue): → rootのパスワードを入力します。
・fsck対象サーバのルートパーティションの情報を確認します。
fsck対象サーバのルートパーティションのデバイスファイル名を確認します。また、cat /etc/fstabとmountコマンドを実行して、ルートパーティションのファイルシステムを確認します。今回のサーバの場合はext3でした。
# df -Ph /
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/cciss/c0d0p3 20G 9.4G 8.9G 52% /
#
# cat /etc/fstab
(省略)
LABEL=/ / ext3 defaults 1 1
(省略)
# mount
(省略)
/dev/cciss/c0d0p3 on / type ext3 (rw)
(省略)
・ルートパーティションを読み取りモードでマウントしなおします。
既に/tmp配下等にファイル書き込めない状態になっていましたが、念の為、ルートパーティションを読み取りモードでマウントしなおします。
# mount -o ro,remount /
・念の為、ルートパーティションに対して、ファイル書き込めない状態(読み取りになっている事)になっている事を確認します。
# date > /tmp/write_test.txt
・fsckを実行します。
# fsck -y -t ext3 /dev/cciss/c0d0p3
・ルートパーティションに対するfsckが完了するのを待ちます。以下のメッセージが完了されたらfsck完了です。
(省略)
Free inodes count wrong (XXXXXXX, counted=XXXXXXX)
Fix? yes
/: ***** FILE SYSTEM WAS MODIFIED *****
/: ***** REBOOT LINUX *****
(Repair filesystem) 26 # exit
(Repair filesystem) 26 # reboot
fsck対象サーバ起動後の動作確認
fsck対象サーバの用途に応じて、動作確認の内容は異なると思いますが、最低限確認した方が良いかなと思う事を記載しました。
fsck実行後にサーバが起動してきたら、ルートパーティションにファイルが残っているか、ファイルを書き込めるか、fstabに記載したパーティションがマウントされているなどを確認します。
# ls -lrta /
# cat /etc/fstab
# df -Ph
# mount
# date >> /tmp/write_test.txt
# date >> /tmp/write_test.txt
# cat /tmp/write_test.txt
# rm /tmp/write_test.txt
ログを見てHDDやハードウェア系のエラーが出ていないか確認します。
# cat /var/log/messages
# dmesg
fsckで復旧したサーバのネットワークインターフェースや別サーバへの疎通が正常であるか確認します。
# ifconfig
# netstat -nr
# ping XX.XX.XX.XX
名前解決が行えるか確認します。
# dig www.example.com
自動起動を設定しているような意図したサービスやプロセスが起動している事を確認します。
# chkconfig --list
# ps awux | grep -v grep | sort
今回のfsck対象サーバはntpで時刻同期を行っているサーバでしたが、念の為、時刻がずれていない事も確認します。
# date
以上になります。