Solaris のシステム管理 (デバイスとファイルシステム)

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

ファイルシステムのスーパーブロック内のデータが破壊された場合は、復元しなければなりません。スーパーブロックが不正なときには、fsck コマンド からメッセージが表示されます。さいわい、スーパーブロックのコピーがファイルシステム内に格納されています。

fsck -o b コマンドを使用すると、スーパーブロックをいずれかのコピーと置き換えることができます。または fsck のバックアップスーパーブロックの自動検索機能を使用します。この機能は Solaris 10 6/06 リリースの新機能です。この機能の詳細は、「バックアップスーパーブロックの自動検索」を参照してください。

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

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

Procedure不正なスーパーブロックを復元する方法 (Solaris 10 6/06 リリース)

これは、Solaris 10 6/06 リリースの新しい手順です。ファイルシステムに不正なスーパーブロックがある場合は、次のメッセージに示すように fsck によって自動的に代替のスーパーブロックが計算されます。


BAD SUPERBLOCK AT ...

LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS? 
LOOK FOR ALTERNATE SUPERBLOCKS WITH NEWFS?

注意 – 注意 –

損傷したスーパーブロックが含まれるファイルシステムが、ntracknsect などの newfs または mkfs のカスタマイズされたパラメータを使用して作成されている場合、修復処理のために fsck で自動的に計算されたスーパーブロックがファイルシステムを損傷させる可能性があります。

カスタマイズされたパラメータを使用して作成されたファイルシステムで、ファイルシステムに不正なスーパーブロックが含まれている場合、fsck は、fsck セッションを取り消すための次のようなプロンプトを表示します。


CANCEL FILESYSTEM CHECK?

ファイルシステムがカスタマイズされたパラメータを使用して作成されている場合またはこのシステム上での fsck の実行に関する他の心配がある場合は、fsck セッションの取り消しが適切な応答です。


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

  2. 不正なスーパーブロックがあると思われるファイルシステムを検査します。


    # fsck /dev/rdsk/c0t1d0s0
    
    ** /dev/rdsk/c0t1d0s0
    
    BAD SUPERBLOCK at ...
    
  3. ファイルシステムの作成方法を特定し、次のいずれかを選択します。

    • ファイルシステムが newfs コマンドを使用して作成された

      • fsck がすべてのスーパーブロックが破損していることを報告し、汎用のスーパーブロックを使用する必要があります。下の例で説明するように、fsck プロンプトに応答します。


        注意 – 注意 –

        カスタマイズされたパラメータを使用してファイルシステムが作成されている場合はこのオプションを使用しないでください。このオプションは最後の手段として使用してください。バックアップコピーからファイルシステムを復元する準備をします。



        # fsck /dev/dsk/c1t2d0s0
        ** /dev/rdsk/c1t2d0s0
        BAD SUPERBLOCK AT BLOCK 16: BLOCK SIZE LARGER THAN MAXIMUM SUPPORTED
        
        LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS? no
        
        
        LOOK FOR ALTERNATE SUPERBLOCKS WITH NEWFS? yes
        
        SEARCH FOR ALTERNATE SUPERBLOCKS FAILED.
        
        USE GENERIC SUPERBLOCK FROM MKFS? no
        
        
        USE GENERIC SUPERBLOCK FROM NEWFS? yes
        
        CALCULATED GENERIC SUPERBLOCK WITH NEWFS
        If filesystem was created with manually-specified geometry, using
        auto-discovered superblock may result in irrecoverable damage to
        filesystem and user data.
        
        CANCEL FILESYSTEM CHECK? no
        
        ** Last Mounted on
        ** Phase 1 - Check Blocks and Sizes
        ** Phase 2 - Check Pathnames
        ** Phase 3a - Check Connectivity
        ** Phase 3b - Verify Shadows/ACLs
        ** Phase 4 - Check Reference Counts
        ** Phase 5 - Check Cylinder Groups
        CORRECT GLOBAL SUMMARY
        SALVAGE? y
        
        
        UPDATE STANDARD SUPERBLOCK? y
        
        81 files, 3609 used, 244678 free (6 frags, 30584 blocks, 0.0% fragmentation)
        
        ***** FILE SYSTEM WAS MODIFIED *****
      • fsck が次のようなメッセージを表示し、代替のスーパーブロックが見つかったことを報告します。


        FOUND ALTERNATE SUPERBLOCK 32 WITH NEWFS

        この fsck のシナリオでは、「バックアップスーパーブロックの自動検索」 に示すようにプロンプトに従います。

    • ファイルシステムが mkfs コマンドを使用して作成された

      • fsck がすべてのスーパーブロックが破損していることを報告し、汎用のスーパーブロックを使用する必要があります。下の例で説明するように、fsck プロンプトに応答します。


        注意 – 注意 –

        カスタマイズされたパラメータを使用してファイルシステムが作成されている場合はこのオプションを使用しないでください。このオプションは最後の手段として使用してください。バックアップコピーからファイルシステムを復元する準備をします。



        # fsck /dev/dsk/c1t2d0s0
        ** /dev/rdsk/c1t2d0s0
        BAD SUPERBLOCK AT BLOCK 16: BLOCK SIZE LARGER THAN MAXIMUM SUPPORTED
        
        LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS? yes
        
        
        LOOK FOR ALTERNATE SUPERBLOCKS WITH NEWFS? no
        
        SEARCH FOR ALTERNATE SUPERBLOCKS FAILED.
        
        USE GENERIC SUPERBLOCK FROM MKFS? yes
        
        CALCULATED GENERIC SUPERBLOCK WITH MKFS
        If filesystem was created with manually-specified geometry, using
        auto-discovered superblock may result in irrecoverable damage to
        filesystem and user data.
        
        CANCEL FILESYSTEM CHECK? no
        
        ** Last Mounted on
        ** Phase 1 - Check Blocks and Sizes
        ** Phase 2 - Check Pathnames
        ** Phase 3a - Check Connectivity
        ** Phase 3b - Verify Shadows/ACLs
        ** Phase 4 - Check Reference Counts
        ** Phase 5 - Check Cylinder Groups
        CORRECT GLOBAL SUMMARY
        SALVAGE? y
        
        
        UPDATE STANDARD SUPERBLOCK? y
        
        81 files, 3609 used, 243605 free (117 frags, 30436 blocks, 0.0% fragmentation)
      • fsck が次のようなメッセージを表示し、代替のスーパーブロックが見つかったことを報告します。


        FOUND ALTERNATE SUPERBLOCK 32 WITH MKFS

        この fsck のシナリオでは、「バックアップスーパーブロックの自動検索」 に示すようにプロンプトに従います。

  4. プロンプトに応答し、スーパーブロックを復元します。

    次のメッセージが表示される場合は、fsck を再実行する必要はありません。


    ***** FILE SYSTEM WAS MODIFIED *****

    ただし、このメッセージのあとに fsck を再実行してもファイルシステムは損傷しません。このメッセージは、fsck の修正処置に関する情報を示すだけのものです。

Procedure不正なスーパーブロックを復元する方法 (Solaris 8、9、および 10 リリース)

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

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

    • ルート (/) ファイルシステム、/usr ファイルシステム、または /var ファイルシステムに不正なスーパーブロックが存在する場合、ネットワークまたはローカルに接続された Solaris DVD からブートします。

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


      ok boot cdrom -s
      

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


      ok boot net -s
      

      システムを停止する必要がある場合は、『Solaris のシステム管理 (基本編)』の第 12 章「Oracle Solaris システムのブート (手順)」または『Solaris のシステム管理 (基本編)』「GRUB を使用して x86 システムをブートする (作業マップ)」を参照してください。

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


      # umount /mount-point
      

      注意 – 注意 –

      次の手順では、必ず newfs -N オプションを使用してください。-N オプションを指定しない場合は、そのファイルシステムのデータがすべて破壊され、空のファイルシステムに置き換わります。


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


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

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

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


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

    fsck コマンドは、指定された代替スーパーブロックを使用して、一次スーパーブロックを復元します。代替ブロックとしては、常に 32 を使用できます。または、newfs -N コマンドの実行結果として出力される任意の代替ブロックを使用します。


例 21–3 不正なスーパーブロックの復元 (Solaris 8、9、および 10 リリース)

次の例は、スーパーブロックのコピー 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)

***** FILE SYSTEM WAS MODIFIED *****
#