OSがパニックなどで異常終了してしまった場合、次回起動時にfsckを実行するように促されます。要は、「ファイルシステムの整合性が取れてないので、このまま使用するとデータが損失して危険だよ。fsckで一度ファイルシステムの整合性を取って下さいよ」と言うことです。管理者となって最初にこのメッセージに遭遇したときは焦りましたが、言われた通り実行していけば大抵は正常に復旧できます。
本当は、オプションを指定しないで、「修復しますか?」という問いに確認しながらyで答えるのがいいのですが、障害中にそんな悠長なことは言ってられません。yオプションを一緒に指定して自動的にyesと答えるようにしちゃいましょう。
起動中にfsckを掛けるように言われたら、rootのパスワードを入力し、シングルユーザモードに移行。そしてfsckを実行します。
# fsck -y /dev/md/rdsk/d5 ** /dev/md/rdsk/d5 ** Last Mounted on /opt ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity UNREF DIR I=1087936 OWNER=sa MODE=40755 SIZE=512 MTIME=Feb 19 15:57 2001 RECONNECT? y DIR I=1087936 CONNECTED. PARENT WAS I=985408 ** Phase 4 - Check Reference Counts UNREF FILE I=843020 OWNER=root MODE=100644 SIZE=0 MTIME=Feb 23 19:16 2001 CLEAR? y UNREF FILE I=843066 OWNER=root MODE=100644 SIZE=0 MTIME=Feb 23 19:16 2001 CLEAR? y UNREF FILE I=843068 OWNER=root MODE=100644 SIZE=0 MTIME=Feb 23 19:16 2001 CLEAR? y LINK COUNT DIR I=1087936 OWNER=sa MODE=40755 SIZE=512 MTIME=Feb 19 15:57 2001 COUNT 0 SHOULD BE 2 ADJUST? y ** Phase 5 - Check Cyl groups FREE BLK COUNT(S) WRONG IN SUPERBLK SALVAGE? y 2224 files, 591640 used, 5941359 free (4095 frags, 742158 blocks, 0.0% fragmentation) ***** FILE SYSTEM WAS MODIFIED *****
fsckによるファイル整合が無事終了したので、システムを一度停止して、再度起動する。
# sync # sync # sync # halt ok boot
僕は遭遇したことがないのですが、スーパーブロックが運悪く逝ってしまう場合が有ります。その場合は、代替スーパーブロックで復旧する必要があります。多分この手順でいいと思いますが、保証は出来ません。
fsckを実行した際、BAD SUPER BLOCKとかいうメッセージが出力される。
# fsck /dev/rdsk/c0t2d0s0
newfsで代替スーパーブロックを確認する。Nオプションは、ファイルシステムを再構成しないので大丈夫です。ここで出力された代替スーパーブロックをメモっておきます。
# newfs -Nv /dev/rdsk/c0t2d0s0 --- mkfs -F ufs -o N /dev/rdsk/c0t2d0s0 2101200 255 16 8192 1024 32 6 90 4096 t 0 0 8 16 n /dev/rdsk/c0t2d0s0: 2101200 sectors in 515 cylinders of 16 tracks, 255 sectors 1026.0MB in 23 cyl groups (23 c/g, 45.82MB/g, 11264 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 94128, 188224, 282320, 376416, 470512, 564608, 658704, 752800, 846896, 1223280, 1317376, 1411472, 1501472, 1595568, 1689664, 1783760, 1877856, 1971952, 2066048,
先ほど確認した代替スーパーブロックの1つを指定してfsck。
# fsck -F ufs -o b=32 /dev/rdsk/c0t2d0s0
fsckによるファイルシステム復旧にはそれなりの時間が掛かります。Solaris7から標準装備されているufsロギング機能を利用すれば、fsckを実行する機会も減ってくることでしょう。ufsロギング機能の解説はこちらに有ります。
/etc/vfstabにてオプションにloggingを付加すれば設定は終わりです。
# vi /etc/vfstab --- /dev/dsk/c0t2d0s3 /dev/rdsk/c0t2d0s3 /var ufs 1 no logging # /etc/telinit 6