ファイルシステムが壊れた時のfsck
〜Windowsのchkdsk〜
0.更新履歴
- 2001.02.07 新規作成
1.はじめに
このドキュメントは,Solaris2.6上でOracleが稼動しているマシンが不用意にOSがダウンしてしまい,Oracleを格納していたディスクが壊れてマウントできなくなった時,fsckコマンドを使って修復した記録を記述するものである.
2.修復ログ
次の様に,mountしようとしたら壊れているのでダメといわれたので,fsckを実行した.
# mount /oracle mount: the state of /dev/dsk/c3t0d0s0 is not okay and it was attempted to be mounted read/write mount: Please run fsck and try again # fsck /dev/rdsk/c3t0d0s0 ** /dev/rdsk/c3t0d0s0 ** Last Mounted on /oracle ** Phase 1 - Check Blocks and Sizes INCORRECT BLOCK COUNT I=842705 (432016 should be 426400) CORRECT? y PARTIALLY TRUNCATED INODE I=842708 SALVAGE? y PARTIALLY TRUNCATED INODE I=842709 SALVAGE? y ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups FREE BLK COUNT(S) WRONG IN SUPERBLK SALVAGE? y 14501 files, 29031231 used, 111403031 free (5407 frags, 13924703 blocks, 0.0% fragmentation) ***** FILE SYSTEM WAS MODIFIED ***** # |
3.fsckが行う処理
ログのとおり,fsckはいくつかのフェーズでディスクのチェックを行っている. 以下の表に,書くフェーズで行っている内容について説明する.
フェーズ | 内容 |
---|---|
Phase 1 Check Block and Sizes |
不良または重複するブロックを検査する.そのinodeを表示している. |
Phase 2 Check Pathnames |
iノードテーブルが示すパスをチェックする. ファイルを構成するiノードが全部生きているかとか. 不良なiノードがあれば,それを削除する. ディレクトリ情報の整合性チェック. |
Phase 3 Check Connectivity |
参照されないディレクトリのチェック. lost+foundディレクトリのチェック. |
Phase 4 Check Reference Counts |
参照されないファイルのチェック. 不良・重複ブロックのチェック. 空きinode数のチェック |
Phase 5 Check Cyl groups |
inodeマップ中の利用済みinodeの消滅しているinodeの有無チェック. フリーブロック総数チェック. |
4.パラメータ
パラメータ | 動作内容 |
---|---|
-A |
全てのファイルシステムのチェックを行う. |
-R |
ルートディレクトリ以外のファイルシステムのチェック. |
-N |
実際には実行しないが,実行内容の表示を行う. |
-t fstype |
ファイルシステムを指定する. |
-y | 全ての問い合わせにyesと回答する. |
fsckでは,ディスクの検査と修正を行う. 異常個所を見つけると,前述のサンプルのようにSalvage?とたずねてくるが,yesしか回答しようがない. これを自動的にyesと回答するために,-yオプションを用いることができる.
ただし,サルベージしても絶対修正できるという保証は無いらしく,逆にファイルシステムをクラッシュさせてしまうこともあるようである.