Solstice DiskSuite 4.2.1 ユーザーズガイド

例 - ブートデバイス障害からの回復

次の例では、6 つの状態データベースの複製のうち 2 つと、ルート (/)、swap/usr の各サブミラーを含んだブートデバイスに障害が発生しました。

まず、ブートデバイスに障害が発生すると、次のようなメッセージが表示されます。このメッセージは、アーキテクチャによって異なります。


Rebooting with command:
Boot device: /iommu/sbus/dma@f,81000/esp@f,80000/sd@3,0   File and args: kadb
kadb: kernel/unix
The selected SCSI device is not responding
Can't open boot device
...

このメッセージが表示されたら、デバイスをメモしてから、次の手順に従います。

  1. 他のルート (/) サブミラーからブートする。

    この例では、6 つの状態データベースの複製のうち、エラーであるのは 2 つだけなので、まだブートが可能です。そうでない場合、シングルユーザーモードで無効な状態データベースの複製を削除する必要があります。この作業については、「状態データベースの複製の不足からの回復方法 (コマンド行)」を参照してください。

    ルート (/) ファイルシステム用のミラーを作成する場合、その作業の一部として、代替ブートデバイスを記録する必要があります。この例では、disk2 がその代替ブートデバイスです。


    ok boot disk2
    ...
    SunOS Release 5.5 Version Generic [UNIX(R) System V Release 4.0]
    Copyright (c) 1983-1995, Sun Microsystems, Inc.
     
    Hostname: demo
    ...
    demo console login: root
    Password: <パスワードを入力>
    Last login: Wed Dec 16 13:15:42 on console
    SunOS Release 5.1 Version Generic [UNIX(R) System V Release 4.0]
    ...
  2. metadb(1M) コマンドを使用して、2 つの状態データベースの複製が障害を受けていることを確認する。


    # metadb
       flags          first blk         block count
        M     p        unknown           unknown          /dev/dsk/c0t3d0s3
        M     p        unknown           unknown          /dev/dsk/c0t3d0s3
        a m  p  luo    16                1034             /dev/dsk/c0t2d0s3
        a    p  luo    1050              1034             /dev/dsk/c0t2d0s3
        a    p  luo    16                1034             /dev/dsk/c0t1d0s3
        a    p  luo    1050              1034             /dev/dsk/c0t1d0s3

    現在システムは、障害の発生したディスクの一部であるスライス /dev/dsk/c0t3d0s3 上の状態データベースの複製を検出することができません。

  3. metastat(1M) コマンドを使用して、ルート (/)、swap/usr の片方のミラーの半分が障害を受けていることを確認する。


    # metastat
    d0: Mirror
        Submirror 0: d10
          State: Needs maintenance
        Submirror 1: d20
          State: Okay
    ...
     
    d10: Submirror of d0
        State: Needs maintenance
        Invoke: "metareplace d0 /dev/dsk/c0t3d0s0 <new device>"
        Size: 47628 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t3d0s0          0     No    Maintenance 
     
    d20: Submirror of d0
        State: Okay
        Size: 47628 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t2d0s0          0     No    Okay  
     
    d1: Mirror
        Submirror 0: d11
          State: Needs maintenance
        Submirror 1: d21
          State: Okay
    ...
     
    d11: Submirror of d1
        State: Needs maintenance
        Invoke: "metareplace d1 /dev/dsk/c0t3d0s1 <new device>"
        Size: 69660 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t3d0s1          0     No    Maintenance 
     
    d21: Submirror of d1
        State: Okay
        Size: 69660 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t2d0s1          0     No    Okay        
     
    d2: Mirror
        Submirror 0: d12
          State: Needs maintenance
        Submirror 1: d22
          State: Okay
    ...
     
    d2: Mirror
        Submirror 0: d12
          State: Needs maintenance
        Submirror 1: d22
          State: Okay
    ...
     
    d12: Submirror of d2
        State: Needs maintenance
        Invoke: "metareplace d2 /dev/dsk/c0t3d0s6 <new device>"
        Size: 286740 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t3d0s6          0     No    Maintenance 
     
     
    d22: Submirror of d2
        State: Okay
        Size: 286740 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t2d0s6          0     No    Okay  

    この例では、metastat は、次のサブミラーに保守が必要なことを示します。

    • サブミラー d10、デバイス c0t3d0s0

    • サブミラー d11、デバイス c0t3d0s1

    • サブミラー d12、デバイス c0t3d0s6

  4. システムを停止し、ディスクを修復し、format(1M) コマンドまたは fmthard(1M) コマンドを使用して、ディスクを障害を受ける前と同じようにパーティション分割する。


    # halt
    ...
    Halted
    ...
    ok boot
    ...
    # format /dev/rdsk/c0t3d0s0
    
  5. リブートする。

    なお、ルート (/) ミラーの残った片方からリブートしなければなりません。ミラーを作成する際に、代替ブートデバイスを記録しておいてください。


    # halt
    ...
    ok boot disk2
    
  6. metadb(1M) コマンドを使用し、故障した状態データベースの複製を削除してから、追加して戻す。


    # metadb
       flags          first blk         block count
        M     p        unknown           unknown          /dev/dsk/c0t3d0s3
        M     p        unknown           unknown          /dev/dsk/c0t3d0s3
        a m  p  luo    16                1034             /dev/dsk/c0t2d0s3
        a    p  luo    1050              1034             /dev/dsk/c0t2d0s3
        a    p  luo    16                1034             /dev/dsk/c0t1d0s3
        a    p  luo    1050              1034             /dev/dsk/c0t1d0s3
    # metadb -d c0t3d0s3
    # metadb -c 2 -a c0t3d0s3
    # metadb
       flags          first blk         block count
        a m  p  luo    16               1034              /dev/dsk/c0t2d0s3
        a    p  luo    1050             1034              /dev/dsk/c0t2d0s3
        a    p  luo    16               1034              /dev/dsk/c0t1d0s3
        a    p  luo    1050             1034              /dev/dsk/c0t1d0s3
        a        u     16               1034              /dev/dsk/c0t3d0s3
        a        u     1050             1034              /dev/dsk/c0t3d0s3
  7. metareplace(1M) コマンドを使用して、サブミラーを再び有効にする。


    # metareplace -e d0 c0t3d0s0
    Device /dev/dsk/c0t3d0s0 is enabled
     
    # metareplace -e d1 c0t3d0s1
    Device /dev/dsk/c0t3d0s1 is enabled
     
    # metareplace -e d2 c0t3d0s6
    Device /dev/dsk/c0t3d0s6 is enabled

    しばらくすると、再同期が終了します。これで元のデバイスからブートできるようになります。