ページの先頭行へ戻る
PRIMECLUSTERGlobal Disk Services 説明書 4.2

6.1.3 リストア手順 (システムがブートできない場合)

1) CD-ROM 装置 (またはネットワーク) からシステムをブートします。

Solaris 10 の場合は 1a) の手順、Solaris 9 の場合は 1b) の手順に従ってブートを実施します。

1a) Solaris 10 の場合:

1b) Solaris 9 の場合:

注意

  • Solaris 9 をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS のバージョンは、リストアする OS と同じバージョンにしてください。

  • Solaris 10 (カーネルパッチ 137111-08 以前を適用済) をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS は、リストアする OS と同じバージョン (カーネルパッチ 137111-08 以前を適用済) にしてください。

  • Solaris 10 (カーネルパッチ 137137-09 以降を適用済) をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS は、リストアする OS と同じバージョン (カーネルパッチ 137137-09 以降を適用済) にしてください。

  • GDS でミラーリングしているシステムにおいて、CD-ROM 装置 (またはネットワーク) からブートして不当な操作を行うと、ミラーリング状態が破壊される場合があります。必ず本手順に従って操作を行い、本手順にない操作はできるだけ避けてください。

  • 復旧作業に伴い、物理スライス上のファイルシステムをマウントする場合には、不当な書込みを防ぐために、読取り専用でマウントすることを推奨します。


2) ルート (/)、/usr、/var ファイルシステムのリストア先となる物理スライスのデバイス名を確認します。

# eeprom nvramrc | grep sdx-root-slice
devalias sdx-root-slice-1 /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw
devalias sdx-root-slice-2 /devices/pci@1e,4000/scsi@3/sd@0,0:a,raw
# eeprom nvramrc | grep sdx-usr-slice
devalias sdx-usr-slice-1 /devices/pci@1f,4000/scsi@3/sd@0,0:g,raw
devalias sdx-usr-slice-2 /devices/pci@1e,4000/scsi@3/sd@0,0:g,raw
# eeprom nvramrc | grep sdx-var-slice
devalias sdx-var-slice-1 /devices/pci@1f,4000/scsi@3/sd@0,0:b,raw
devalias sdx-var-slice-2 /devices/pci@1e,4000/scsi@3/sd@0,0:b,raw

この例では、主となる物理スライスのデバイス名は以下のとおりです。

/ : /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw
/usr : /devices/pci@1f,4000/scsi@3/sd@0,0:g,raw
/var : /devices/pci@1f,4000/scsi@3/sd@0,0:b,raw

また、副となる物理スライスのデバイス名は以下のとおりです。

/ : /devices/pci@1e,4000/scsi@3/sd@0,0:a,raw
/usr : /devices/pci@1e,4000/scsi@3/sd@0,0:g,raw
/var : /devices/pci@1e,4000/scsi@3/sd@0,0:b,raw

注意

多重度 3 以上のミラーリング構成の場合、副側の物理スライスは複数存在します。

参考

  • /usr、/var ファイルシステムが存在しない構成の場合は、以下のように物理スライス名が表示されません。

    # eeprom nvramrc | grep sdx-usr-slice
    # eeprom nvramrc | grep sdx-var-slice
  • MPLB ディスクの場合、2 本目以降のパスの物理スライスのデバイス名は、以下の方法で調べることができます。ネットワークからブートした環境で、2 本目以降のパスが定義されていれば、そのパスの物理スライスにリストアすることも可能です。

    # eeprom nvramrc | grep sdx-root-slice (1 本目のパス)
    devalias sdx-root-slice-1 /devices/pci@1f,4000/fibre-channel@4/sd@10,0:a,raw
    ~
    # eeprom nvramrc | grep sdx-root-alt-slice (2 本目のパス)
    devalias sdx-root-alt-slice-1b /devices/pci@1f,4000/fibre-channel@5/sd@10,0:a,raw
    ~

3) 手順 2) で確認した物理スライスのデバイス名から、物理スライス名を確認します。

# ls -l /dev/rdsk | grep /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw
lrwxrwxrwx   1 root     root          45 Oct 19 23:36 c0t0d0s0 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:a,raw
# ls -l /dev/rdsk | grep /devices/pci@1e,4000/scsi@3/sd@0,0:a,raw
lrwxrwxrwx   1 root     root          45 Oct 19 23:36 c1t0d0s0 -> ../../devices/pci@1e,4000/scsi@3/sd@0,0:a,raw
# ls -l /dev/rdsk | grep /devices/pci@1f,4000/scsi@3/sd@0,0:g,raw
lrwxrwxrwx 1 root root 45 Oct 19 23:36 c0t0d0s6 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:g,raw
# ls -l /dev/rdsk | grep /devices/pci@1e,4000/scsi@3/sd@0,0:g,raw
lrwxrwxrwx   1 root     root          45 Oct 19 23:36 c1t0d0s6 -> ../../devices/pci@1e,4000/scsi@3/sd@0,0:g,raw
# ls -l /dev/rdsk | grep /devices/pci@1f,4000/scsi@3/sd@0,0:b,raw
lrwxrwxrwx 1 root root 45 Oct 19 23:36 c0t0d0s1 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:b,raw
# ls -l /dev/rdsk | grep /devices/pci@1f,4000/scsi@3/sd@0,0:b,raw
lrwxrwxrwx 1 root root 45 Oct 19 23:36 c1t0d0s1 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:b,raw

grep コマンドの引数には、手順 2) で確認したデバイス名を指定します。

この例では、主側となる物理スライス名は以下のとおりです。

/ : c0t0d0s0
/usr : c0t0d0s6
/var : c0t0d0s1

また、副側となる物理スライス名は以下のとおりです。

/ : c1t0d0s0
/usr : c1t0d0s6
/var : c1t0d0s1


4) テープ媒体に採取されているバックアップデータを、それぞれの主側の物理スライスにリストアします。

例として、ufsdump(1M) コマンドで採取したバックアップデータを用いてリストアする手順を示します。

# newfs /dev/rdsk/c0t0d0s0
# mount -F ufs /dev/dsk/c0t0d0s0 /mnt # cd /mnt
# ufsrestore rvf /dev/rmt/0 # cd / # umount /mnt # newfs /dev/rdsk/c0t0d0s6 # mount -F ufs /dev/dsk/c0t0d0s6 /mnt # cd /mnt # ufsrestore rvf /dev/rmt/0
# cd /
# umount /mnt
# newfs /dev/rdsk/c0t0d0s1 # mount -F ufs /dev/dsk/c0t0d0s1 /mnt
# cd /mnt
# ufsrestore rvf /dev/rmt/0
# cd /
# umount /mnt

注意

  • 主側の物理スライスへのリストアが I/O エラーなどによって失敗する場合は、副側の物理スライスへリストアしてください。

  • システムディスクをミラーリングする前に採取したバックアップデータを用いてリストアしないでください。

参照

ufsrestore(1M) コマンドの詳細については、Solaris のマニュアルを参照してください。使用方法やオプションの意味を確認し、適切なオプションを指定してください。


5) ブートブロックをシステムディスクのルートパーティションにインストールします。

# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0

6) ディスクのセクタサイズとシリンダサイズを調べて記録します。

# prtvtoc /dev/rdsk/c0t0d0s0
~ * Dimensions: * 512 bytes/sector * 248 sectors/track * 19 tracks/cylinder * 4712 sectors/cylinder ~

この例では、セクタサイズは 512 (バイト) = 1 (ブロック)、シリンダサイズは 512×4712 (バイト) = 4712 (ブロック) です。


7) ディスクの先頭セクタ (VTOC 域) を含む物理スライスを調べます。

prtvtoc(1M) コマンドの出力結果において First Sector フィールドが 0 の物理スライスが、ディスクの先頭セクタを含んでいます。

# prtvtoc /dev/rdsk/c0t0d0s0
~
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00          0    409656    409655
       1      7    00     409656    307242    716897
       2      5    00          0   4117568   4117567
       3      3    01     737906    388648   1126553
       4     33    00     716898     21008    737905
       5      4    00    1126554    942734   2069287
       6      4    00    2069288   2048280   4117567
~

この例では、Partition 0 の物理スライスが先頭セクタを含みます。

参考

Partition 2 はディスク全体に対応する特殊なパーティションです。


8) リストアが完了した主側の物理スライスから副側の物理スライスにデータをコピーします。

物理スライスがディスクの先頭セクタを含まない場合は 8a) の手順、物理スライスがディスクの先頭セクタを含む場合は 8b) の手順に従ってコピーを実施します。

注意

  • 多重度 3 以上のミラーリング構成の場合、副側の物理スライスは複数存在します。すべての副側の物理スライスにデータをコピーしてください。

  • 手順 4) においてリストアを行っていない主側のスライスのデータは、コピーする必要はありません。

8a) 物理スライスがディスクの先頭セクタを含まない場合:

コピー時間を短縮するために、dd(1M) コマンドの bs オプション (入出力ブロックサイズ) には、手順 6) で調べたシリンダサイズを指定します。

# dd if=/dev/rdsk/c0t0d0s6 of=/dev/rdsk/c1t0d0s6 bs=4712b
# dd if=/dev/rdsk/c0t0d0s1 of=/dev/rdsk/c1t0d0s1 bs=4712b

8b) 物理スライスがディスクの先頭セクタを含む場合:

以下の手順を実施します。

8b-1) まず、物理スライスの先頭シリンダのみをコピーします。副側の先頭セクタ (VTOC 域) を上書きしないように先頭セクタをスキップし、セクタ単位にコピーします。

先頭セクタをスキップするため、dd(1M) コマンドの iseek オプションと oseek オプションには 1 を指定します。bs オプションには、手順 6) で調べたセクタサイズを指定します。count オプションには、手順 6) で調べたシリンダサイズ (単位はブロック) から 1 を引いた値を指定します。

# dd if=/dev/rdsk/c0t0d0s0 of=/dev/rdsk/c1t0d0s0 bs=512 iseek=1 oseek=1 count=4711

8b-2) 次に、物理スライスの残りのシリンダをコピーします。

コピー時間を短縮するために、dd(1M) コマンドの bs オプションには、手順 6) で調べたシリンダサイズを指定します。手順 8b-1) でコピーした先頭シリンダをスキップするため、iseek オプションと oseek オプションには 1 を指定します。

# dd if=/dev/rdsk/c0t0d0s0 of=/dev/rdsk/c1t0d0s0 bs=4712b iseek=1 oseek=1

9) システムをリブートします。

# shutdown -g0 -i6 -y