ファイルシステムのスーパーブロックが損傷した場合は、復元しなければなりません。スーパーブロックが不良なときには、fsck からメッセージが表示されます。幸い、スーパーブロックの重複コピーがファイルシステム内に格納されています。fsck -o b を使用すると、問題のスーパーブロックをコピーに置き換えることができます。
スーパーユーザーになります。
損傷したファイルシステムの外側のディレクトリに変更します。
ファイルシステムをマウント解除します。
# umount mount-point
次の手順では、必ず newfs といっしょに -N オプションを使用してください。-N オプションを省略すると、新しい空のファイルシステムが作成されます。
newfs -N コマンドを使用して、スーパーブロックの値を表示します。
# newfs -N /dev/rdsk/device-name
このコマンドの出力には、newfs によってファイルシステムが作成されたときに、スーパーブロックのコピーに使用されたブロック番号が表示されます。
fsck コマンドを使用して、代替スーパーブロックを指定します。
# fsck -F ufs -o b=block-number /dev/rdsk/device-name
fsck は、指定された代替スーパーブロックを使用して、一次スーパーブロックを復元します。いつでも代替ブロックとして 32 を試すことができます。また、newfs -N で表示された代替ブロックを使用することもできます。
次の例では、/files7 ファイルシステム用にスーパーブロックのコピー 5264 が復元されます。
# cd / # umount /files7 # newfs -N /dev/rdsk/c0t3d0s7 /dev/rdsk/c0t3d0s7: 163944 sectors in 506 cylinders of 9 tracks, 36 sectors 83.9MB in 32 cyl groups (16 c/g, 2.65MB/g, 1216 i/g) super-block backups (for fsck -b #) at: 32, 5264, 10496, 15728, 20960, 26192, 31424, 36656, 41888, 47120, 52352, 57584, 62816, 68048, 73280, 78512, 82976, 88208, 93440, 98672, 103904, 109136, 114368, 119600, 124832, 130064, 135296, 140528, 145760, 150992, 156224, 161456, # fsck -F ufs -o b=5264 /dev/rdsk/c0t3d0s7 Alternate superblock location: 5264. ** /dev/rdsk/c0t3d0s7 ** Last Mounted on ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 36 files, 867 used, 75712 free (16 frags, 9462 blocks, 0.0% fragmentation) /dev/rdsk/c0t3d0s7 FILE SYSTEM STATE SET TO OKAY ***** FILE SYSTEM WAS MODIFIED ***** #
ルート (/) ファイルシステム内のスーパーブロックが損傷し、システムをブートできない場合は、/kernel/unix をインストールし直し、newfs を使用してルート (/) ファイルシステムを再構築してください。スーパーブロックは newfs コマンドによって作成されるので、復元する必要はありません。
あるパスで問題が訂正されても、前のパスで見つからなかった問題が解決されないため、fsck を何度か実行してファイルシステムを修正しなければならないことがあります。fsck はクリーンになるまで動作を続けるわけではないので、手作業で実行しなければなりません。
fsck で表示される情報に注目してください。問題を解決する上で参考になります。たとえば、メッセージは不良ディレクトリを指す場合があります。そのディレクトリを削除すると、fsck がクリーンな状態で動作していることがわかります。
それでも fsck でファイルシステムを修復できない場合は、fsdb、ff、clri、または ncheck コマンドを使用し、間違いを指定して修正します。これらのコマンドの使用方法については、fsdb(1M)、ff(1M)、clri(1M)、ncheck(1M) の各マニュアルページを参照してください。最終的には、ファイルシステムを作成し直し、その内容をバックアップ媒体から復元せざるを得ない場合があります。ファイルシステム全体を復元する方法については、第 35 章「ファイルとファイルシステムの復元の手順」を参照してください。
ファイルシステムを完全に修復できないが、読み取り専用としてマウントできる場合は、cp、tar、または cpio を使用して、データのすべてまたは一部をファイルシステムから取り出してください。
問題の原因がハードウェアディスクエラーであれば、ファイルシステムを作成し直して復元する前に、ディスクをフォーマットし直して再びスライスに分割しなければならない場合があります。一般に、ハードウェアエラーが発生すると、さまざまなコマンドで同じエラーが繰り返し表示されます。format(1M) コマンドはディスク上の不良ブロックを処理しようとします。ただし、ディスクの損傷が致命的でなければ、フォーマットし直した後も問題が解決されないことがあります。format コマンドの使用方法については、format(1M) のマニュアルページを参照してください。新しいディスクをインストールする方法については、第 23 章「SPARC: ディスク追加の手順」または第 24 章「x86 : ディスク追加の手順」を参照してください。