Solaris のシステム管理 (基本編)

不正なスーパーブロックの復元

ファイルシステムのスーパーブロック内のデータが破壊された場合は、復元しなければなりません。スーパーブロックが不正なときには、fsck コマンド からメッセージが表示されます。幸い、スーパーブロックのコピーがファイルシステム内に格納されています。fsck -o b コマンドを使用すると、スーパーブロックをそのいずれかのコピーで置き換えることができます。

スーパーブロックの詳細については、「スーパーブロック」を参照してください。

ルート (/) ファイルシステム内のスーパーブロックが損傷し、修復できない場合は、次のどちらかの操作を実行します。

不正なスーパーブロックを復元する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 不正なスーパーブロックがルート (/) または /usr ファイルシステム内にあるかどうかを調べ、次のどちらかの操作を実行します。

    1. 不正なスーパーブロックがルート (/) または /usr ファイルシステム内にある場合は、システムをいったん停止し、ネットワークまたはローカル接続された CD からブートします。

      ローカル接続された CD からブートする場合は、次のコマンドを使用します。


      ok boot -s cdrom
      

      ブートサーバーまたはインストールサーバーがすでに設定済みのネットワークからブートする場合は、次のコマンドを使用します。


      ok boot -s net
      

      システムを停止する方法については、「SPARC: 復元を目的としてシステムを停止する方法」または「IA: 復元を目的としてシステムを停止する方法」を参照してください。

    2. 不正なスーパーブロックがルート (/) または /usr ファイルシステム内にない場合は、損傷したファイルシステム以外のディレクトリに移動し、ファイルシステムをマウント解除します。


      # umount /mount-point
      

      注意 - 注意 -

      次の手順では、必ず newfs -N オプションを使用してください。-N オプションを省略すると、新しい空のファイルシステムが作成されます。


  3. newfs -N コマンドを使用して、スーパーブロックの値を表示します。


    # newfs -N /dev/rdsk/device-name
    

    このコマンドの出力には、newfs コマンドによってファイルシステムが作成されたときに、スーパーブロックのコピーとして使用されることになったブロック番号が表示されます。カスタマイズされたファイルシステムを作成する方法については、「カスタムファイルシステムパラメータ」を参照してください。

  4. fsck コマンドを使用して、代替スーパーブロックを指定します。


    # fsck -F ufs -o b=block-number /dev/rdsk/device-name
    

    fsck コマンドは、指定された代替スーパーブロックを使用して、一次スーパーブロックを復元します。いつでも代替ブロックとして 32 を試すことができます。また、newfs -N コマンドで表示された代替ブロックを使用することもできます。

例 - 不正なスーパーブロックを復元する

次の例は、スーパーブロックのコピー 5264 を復元する方法を示しています。


# 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 *****
#