/ (ルート)、/usr、あるいは /var といったファイルシステムが動作しているシステムディスクに関するトラブルへの対処方法について説明します。
以下に該当する場合は、それぞれに記載されている対処を行ってください。
(1) ルートファイルシステムなどのバックアップを採取する。
説明
システムディスクをミラーリングすることによって、一方の物理ディスクが故障したとしてもデータは保護されます。しかし、多重故障などによる致命的な障害や操作ミスによって破損されたデータを復元するためには、あらかじめバックアップを採取しておく必要があります。
対処
「第6章 バックアップとリストア」を参照してください。
(2) システムはブートできるが、システムディスクのデータが不当である。
説明
何らかのトラブルによって、システムディスクのデータが不当となり、あらかじめ採取されたバックアップデータをリストアすることによって、復旧しなければならない場合があります。
対処
ZFS ブート環境の場合は、「6.2.2 リストア手順」を参照してください。UFS ブート環境の場合は、「6.3.2 リストア手順 (システムがブートできる場合)」を参照してください。
(3) システムがブートできない (主ブートディスク装置の故障)。
説明
システムディスクがミラーリングされていても、ブートに失敗する場合がありえます。例えば、ブートディスク装置内にあるブート中にアクセスされるファイルの一部が物理的に破壊されている場合、あるいは不当な手順によるディスク交換が行われた場合などが該当します。
失敗したブート中のコンソールメッセージなどを調査して、本現象と推測される場合には、ミラーリングしているもう一方のブートディスク、すなわち、副ブートディスク装置からのブートを試みてください。
対処
1) 副ブートディスク装置の名前を確認します。OpenBoot の ok プロンプトから、次の方法で確認できます。
ok printenv boot-device |
この例では、左端の /pci@1f,4000/scsi@3/disk@0,0:a が主ブートディスク装置名で、2 番目の /pci@1f,4000/scsi@3/disk@1,0:a が副ブートディスク装置名です。
3 多重以上のミラー構成の場合、副ブートディスク装置は複数存在します。
2) 副ブートディスク装置からブートします。
ok boot /pci@1f,4000/scsi@3/disk@1,0:a |
3) 正常にブートできた場合は、主ブートディスク装置の故障原因を調査して、ディスク交換などによる復旧を行ってください。
参照
ディスク交換の手順については、「D.8 sdxswap - ディスクの交換」または「5.3.4 ディスク交換」を参照してください。
上記の手順で復旧できない場合は、主ブートディスク装置のデータ異常以外に原因があるか、あるいは副ブートディスク装置のデータも異常であることが考えられます。
副ブートディスク装置のデータも異常と思われる場合は、「(5) システムがブートできない (ブートディスクのデータ破壊)。」を参照してください。
(4) システムがブートできない (全ブートディスク装置の故障)。
注意
本トラブルシューティングは、UFSブート環境を対象としています。ZFSブート環境でシステムがブートできない場合は、以下を参照してください。
物理ディスクの交換や、システムディスクのデータのリストアが必要な場合、「6.2.2 リストア手順」を参照してください。
物理ディスクの異常、およびボリューム内のデータの異常がない場合、「(7) ZFS ブート環境でシステムがブートできない (ルートクラスの占有スライスの異常)。」を参照してください。
説明
システムディスクがミラーリングされていても、ブートに失敗する場合があります。すべてのブートディスクが物理的に故障(または故障したと想定)した場合に、復旧手順の確認を行いたい場合には、ディスクに格納されていたすべてのデータが失われてしまうため、以下の手順に従って復旧作業を行う必要があります。
ミラーリングされている物理ディスクが、同時に物理的に故障してしまう事態は考えにくいですが、運用開始前に最悪の事態からの復旧手順を確認しておきたい場合を想定して説明します。
以下の手順では、ルートクラスに登録されたすべての物理ディスクを交換し、あらかじめ採取されたバックアップをもとにデータを復旧して、再度ミラーリングの構築をやり直します。
また、物理ディスク故障以外の何らかの異常によってブートできなくなった場合を想定し、物理ディスクの交換やシステムディスクのデータのリストアを行わずに、ミラーリングの設定を解除してブートできるように復旧する方法も説明します。
SAN ブート環境の場合は、本手順における実行例と、デバイスの名前の形式やパスなどが異なります。
通常のハードディスクの場合: /dev/[r]dsk/cXtXdXsX
MPLB ディスクの場合: /dev/FJSVmplb/[r]dsk/mplbXsX
対処
[事前作業]
システム構築時および運用前に、以下の作業を実施してください。
1) システムディスクのパーティション構成とシリンダサイズを調べて記録しておきます。
この作業は、システムディスクのミラーリングを設定する前に行う必要があります。以下に示すコマンドを実行し、下線部の情報を記録してください。
例:システムディスクが c4t50000394882261A0d0 である場合
# format c4t50000394882261A0d0 format> verify Primary label contents: Volume name = <00000000> ascii name = <TOSHIBA-MBF2600RC-3706 cyl 64986 alt 2 hd 27 sec 668> pcyl = 64988 |
2) システムディスクに対して MPxIO が有効であるか確認して記録しておきます。
この作業は、システムディスクのミラーリングを設定する前に行う必要があります。
format(1M) コマンドの current サブコマンドを実行し、表示されるブートディスクの論理パス内に /scsi_vhci ディレクトリがある場合、MPxIO は有効です。
例:システムディスクが c0t50000394882261A0d0 である場合
# format c0t50000394882261A0d0 |
3) ルートファイルシステムなどのバックアップを採取しておきます。
この作業はシステムディスクをミラーリングした状態で行う必要があります。
バックアップの採取方法については、「6.3.1 バックアップ手順」を参照してください。
注意
万一の故障に備えて、バックアップは定期的にとるようにしてください。
Solaris 10 では、カーネルパッチ版数によりリストア時にブートする OS を切り分ける必要があります。そのため、バックアップ採取時、以下のコマンドでシステムのパッチ適用状態を記録しておいてください。
# /usr/bin/showrev -p |
4) ルートクラスの名前を確認します。
ルートクラスの名前は、後の手順で使用します。全ブートディスク故障によりシステムがブートできない状態では、確認が困難であるため、事前に確認します。
sdxinfo -C を実行します。TYPE フィールドに "root" と出力される行の NAME フィールドが、ルートクラスの名前です。以下の例の場合、ルートクラスの名前は、 "RootClass" です。
# sdxinfo -C |
5) ルートクラスの物理ディスク名を確認します。
ルートクラスの物理ディスク名は、後の手順で使用します。全ブートディスク故障によりシステムがブートできない状態では、確認が困難であるため、事前に確認します。
sdxinfo -Dを実行します。手順4)で確認したルートクラスの名前を-cオプションで指定します。DEVNAM フィールドが、物理ディスク名です。以下の例の場合、ルートクラスの物理ディスク名は、 " c4t50000394882261A0d0"および" c4t5000039488226254d0" です。
# sdxinfo -D -c RootClass
OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS
------ ------- ------ ------- ------- ------- -------- ---------------- -------
disk rootDisk0001 mirror RootClass rootGroup c4t50000394882261A0d0 1172087496 node1 ENABLE
disk rootDisk0002 mirror RootClass rootGroup c4t5000039488226254d0 1172087496 node1 ENABLE |
[復旧手順]
1) ルートクラスに登録されていた物理ディスクをすべて交換します。
交換作業は、各装置で定められた手順に従って実施してください。
注意
物理ディスクを交換せずに過去に GDS で使用していたディスクへリストアする場合には、CD-ROM 装置(またはネットワーク)からシステムを起動し、ルートクラスに登録されていた物理ディスクをすべて初期状態に戻します。CD-ROM 装置(またはネットワーク)からシステムを起動する方法については、手順2)を参照してください。
# format c0t0d0 |
2) CD-ROM 装置(またはネットワーク)からシステムを起動します。
起動方法については、Solaris のマニュアルを参照してください。
注意
Solaris 10 (カーネルパッチ 137111-08 以前を適用済) をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS は、リストアする OS と同じバージョン (カーネルパッチ 137111-08 以前を適用済) にしてください。CD-ROM 装置からブートする場合は、Solaris 10 5/08 以前の媒体を使用してください。
Solaris 10 (カーネルパッチ 137137-09 以降を適用済) をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS は、リストアする OS と同じバージョン (カーネルパッチ 137137-09 以降を適用済) にしてください。CD-ROM 装置からブートする場合は、Solaris 10 10/08 以降の媒体を使用してください。
Solaris 11 をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS のバージョンは、リストアする OS と同じバージョンにしてください。
GDS でミラーリングしているシステムにおいて、CD-ROM 装置(またはネットワーク)からブートして本手順以外の操作を行うと、ミラーリング状態が破壊される場合があります。必ず本手順に沿って操作を行い、本手順にない操作はできるだけ避けてください。
復旧作業に伴い、物理スライス上のファイルシステムをマウントする場合には、不当な書込みを防ぐために、読取り専用でマウントすることを推奨します。
参照
手順 2) から 5) の詳細については、Solaris のマニュアルを参照してください。
3) システムディスクを、[事前作業]の手順 1)で確認したパーティション構成に戻します。
注意
6Gbps SAS カードに接続している増設ファイルユニットのディスク、または、SPARC M12/M10、SPARC T4-4/T4-2/T4-1/T3-4/T3-2/T3-1 の内蔵ディスクの場合、手順1)で物理ディスクを交換したため、format コマンドで表示されるデバイス名は交換前のデバイス名と異なっています。format コマンドを実行し、出力されたデバイスに対してパーティションの設定を行います。
# format |
4) テープ媒体などに採取されたバックアップデータを、それぞれの物理スライスへリストアします。
以下の例では、[事前作業]の手順 3) で ufsdump(1M) コマンドを使用して採取したバックアップデータを用いて、各ファイルシステムのデータをリストアします。
ufsrestore(1M) コマンドを使用し、テープデバイス /dev/rmt/0 のテープ媒体からリストアします。
以下は、s0 スライスに対するリストアの例です。s0 以外のスライスが存在する場合、それらのスライスもリストアしてください。
# newfs /dev/rdsk/c0t50000394980066DEd0s0 |
5) ブートブロックをシステムディスクのルートパーティションにインストールします。
installboot コマンドを実行する際、/usr ファイルシステムが存在するスライスをマウントする必要があります。
/usr が / (ルート) ファイルシステムに含まれている場合
# mount /dev/dsk/c0t50000394980066DEd0s0 /mnt |
/usrが / (ルート) ファイルシステムとは別のファイルシステムの場合
# mount /dev/dsk/c0t50000394980066DEd0s3 /mnt |
6) 交換したシステムディスクをマウントします。/etc が別のパーティションに存在する場合は、これもルートファイルシステムのマウントポイントの配下に /etc としてマウントします。
# mount -F ufs /dev/dsk/c0t50000394980066DEd0s0 /mnt |
7) システムディスクのミラーリング設定を解除します。
/mnt/etc/system、/mnt/etc/vfstab、/mnt/kernel/drv/sfdsk.conf、/mnt/etc/opt/FJSVsdx/dev/devname.db を更新します。
7-1) システムディスクに対して MPxIO が有効であるか確認して記録しておきます。
format(1M) コマンドの current サブコマンドを実行し、表示されるブートディスクの論理パス内に /scsi_vhci ディレクトリがある場合、MPxIO は有効です。
例: システムディスクがc0t50000394882261A0d0である場合
# format c0t50000394882261A0d0 format> current Current Disk = c0t50000394882261A0d0: 00000000 <TOSHIBA-MBF2600RC-3706 cyl 64986 alt 2 hd 27 sec 668> /scsi_vhci/disk@g50000394882261a0 /dev/chassis/SYS/HDD0/disk |
7-2) /mnt/etc/system を編集します。
以下に例を示します。
# vi /mnt/etc/system |
7-3) /mnt/etc/vfstab にあるルートクラスのパーティションのマウント設定行を、交換したシステムディスクのパーティションに合わせて編集します。
以下に例を示します。
編集前の例
/dev/sfdsk/RootClass/dsk/swapVolume - - swap - no - /dev/sfdsk/RootClass/dsk/rootVolume /dev/sfdsk/RootClass/rdsk/rootVolume / ufs 1 no - |
編集後の例
/dev/dsk/c0t50000394980066DEd0s1 - - swap - no - /dev/dsk/c0t50000394980066DEd0s0 /dev/rdsk/c0t50000394980066DEd0s0 / ufs 1 no - |
注意
[事前作業] の手順2) で MPxIO が有効で、かつ、[復旧手順] の手順7-1) で MPxIO が無効である場合、現在の物理ディスク名 (cXtXdX) は [事前準備] で確認したシステムディスクから起動したときの物理ディスク名とは異なっています。この場合、/mnt/etc/vfstab には現在の物理ディスク名を記載してください。
7-4) /mnt/kernel/drv/sfdsk.conf から sysvol-db、SDX_DEV_TREE と記述された行をすべて削除します。
以下に例を示します。
# vi /mnt/kernel/drv/sfdsk.conf |
7-5) /mnt/etc/opt/FJSVsdx/dev/devname.db から、[事前作業] の手順 5) で確認したルートクラスの物理ディスク名を含む行を削除します。
以下に例を示します。
# vi /mnt/etc/opt/FJSVsdx/dev/devname.db |
8) /mnt/kernel/drv/mpt_sas.conf ファイルを修正し、MPxIO が有効にならないようにします。
本手順は、[事前作業] の手順2) で MPxIO が有効で、かつ、[復旧手順] の手順7-1) で MPxIO が無効の場合のみ実行します。
編集前
mpxio-disable="no"; |
編集後
mpxio-disable="yes"; |
9) 交換後のディスクのデバイス名を反映します。
本手順は、6Gbps SAS カードに接続している増設ファイルユニットのディスク、または、SPARC M12/M10、SPARC T4-4/T4-2/T4-1/T3-4/T3-2/T3-1 の内蔵ディスクの場合に必要です。
# cd /devices ; tar cf - . | ( cd /mnt/devices ; tar xf - ) |
10) boot-archive ファイルを更新します。
# cd / # /sbin/bootadm update-archive -R /mnt |
11) マウントを解除します。
# umount /mnt/etc |
12) 以下の手順で、交換したブートディスクからリブートします。
ブートディスクからリブートする手順は、6Gbps SAS カードに接続している増設ファイルユニットのディスク、または、SPARC M12/M10、SPARC T4-4/T4-2/T4-1/T3-4/T3-2/T3-1 の内蔵ディスクの場合と、それ以外の場合で異なります。
「6Gbps SAS カードに接続している増設ファイルユニットのディスク、または、SPARC M12/M10、SPARC T4-4/T4-2/T4-1/T3-4/T3-2/T3-1 の内蔵ディスクの場合」
参照
SAN ブート環境の場合の手順は、以下のドキュメントを参照してください。
MPxIO を使用する場合
SPARC Enterprise SAN Boot環境構築ガイド (Leadvilleドライバ編)
https://updatesite.jp.fujitsu.com/unix/jp/download/driver/pfca-8info/
ETERNUS マルチパスドライバを使用する場合
SPARC Enterprise SAN Boot環境構築ガイド
https://updatesite.jp.fujitsu.com/unix/jp/download/driver/pfca-4/
12a-1) 交換したブートディスクのルートパーティションのスライス名を調べて記録します。
# ls -l /dev/dsk |grep c0t50000394980066DEd0s0 |
12a-2) ブートディスクの情報を調べて記録します。
情報の確認方法は、手順7-1) で MPxIO が有効だったかどうかによって異なります。
手順7-1) で MPxIO が無効だった場合
Hardware properties の obp-path パラメタを調べて記録します。
# prtconf -v /dev/rdsk/c0t50000394980066DEd0s2 |
手順7-1) で MPxIO が有効だった場合
Paths from multipath bus adapters の obp-path パラメタを調べて記録します。
# prtconf -v /dev/rdsk/c0t50000394980066DEd0s2 |
12a-3) OpenBoot 環境に移行します。
# halt |
注意
復元用緊急起動ディスクから起動している場合は、shutdown(1M) コマンドを使用して OpenBoot 環境に移行してください。
12a-4) OpenBoot の boot-device プロパティを設定します。
手順 12a-2) で出力された obp-path のパラメタと、手順 12a-1) で出力されたスライス名(この例では :a )を連結して boot-device プロパティに設定します。
ok setenv boot-device /pci@8000/pci@4/pci@0/pci@0/scsi@0/disk@w50000394980066de,0:a |
12a-5) OpenBoot の boot-device-index プロパティを 0 に設定します。
ok setenv boot-device-index 0 |
12a-6) システムの起動と再構成を行います。
ok boot -r |
注意
ブート中に、以下の警告メッセージが出力される場合がありますが、システムへの影響はありません。現在のスワップ領域がダンプデバイスとして設定されます。ダンプデバイスの設定を変更したい場合は、dumpadm(1M) を使用してください。
savecore: open("/dev/sfdsk/System/dsk/swap"): No such file or directory dumpadm: cannot use /dev/sfdsk/System/dsk/swap as dump device: ファイルもディレクトリもありません。 |
12b-1) 交換したブートディスクのルートパーティションのデバイスパスを調べて記録します。
# ls -l /dev/dsk | grep c0t0d0s0 |
12b-2) OpenBoot 環境に移行します。
# halt |
注意
復元用緊急起動ディスクから起動している場合は、shutdown(1M) コマンドを使用して OpenBoot 環境に移行してください。
12b-3) OpenBoot 環境で show-devs コマンドを実行してデバイス名を表示します。
ok show-devs /pci@1f,4000/scsi@3 |
12b-4) OpenBoot の boot-device プロパティを設定します。
手順 12b-3) で、最終要素が disk であるデバイス名が出力された場合:
手順 12b-1) で出力されたパスから ../../devices を除き、パスの最終要素の @ より前の部分 (この例では sd ) を disk に置き換えたパスを、boot-device プロパティに設定します。
ok setenv boot-device /pci@1f,4000/scsi@3/disk@0,0:a |
手順 12b-3) で最終要素が disk であるデバイス名が出力されなかった場合:
手順 12b-1) で出力されたパスから ../../devices を除いたパスを、boot-device プロパティに設定します。
ok setenv boot-device /pci@1f,4000/scsi@3/sd@0,0:a |
12b-5) OpenBoot に boot-device-index プロパティがあるかどうか確認し、ある場合は boot-device-index プロパティを 0 に設定します。
ok printenv boot-device-index |
boot-device-index プロパティがある場合は、"boot-device-index =数値" と表示されます。この場合は、以下のコマンドを実行します。
"boot-device-index =数値" と表示されない場合は、以下のコマンドは実行しないでください。
ok setenv boot-device-index 0 |
12b-6) システムをブートします。
ok boot |
注意
ブート中に、以下の警告メッセージが出力される場合がありますが、システムへの影響はありません。現在のスワップ領域がダンプデバイスとして設定されます。ダンプデバイスの設定を変更したい場合は、dumpadm(1M) を使用してください。
savecore: open("/dev/sfdsk/System/dsk/swap"): No such file or directory dumpadm: cannot use /dev/sfdsk/System/dsk/swap as dump device: ファイルもディレクトリもありません。 |
13) 手順 8) で修正した /kernel/drv/mpt_sas.conf ファイルの内容を元に戻します。
本手順は、手順8) を実行した場合のみ実行します。
編集前
mpxio-disable="yes"; |
編集後
mpxio-disable="no"; |
14) MPxIO を有効にするために以下のコマンドを実行し、システムを再起動します。
本手順は、手順13) を実行した場合のみ実行します。
# stmsboot -u |
15) クラスタシステムである場合は、ルートクラスのクラスタリソースを削除します。
ここでの対象はルートクラスのみであり、ローカルクラスおよび共用クラスのクラスタリソースは削除しないでください。
以降では、以下のクラスが存在している場合の実行例を示します。
ルートクラス :RootClass
ローカルクラス:class0001
共用クラス :class0002
ルートクラスのクラスリソースが存在することを確認します。
# /etc/opt/FJSVsdx/bin/sdxdcrsc -I |
ルートクラスのクラスリソースが表示されない場合は、次の手順 16) に進みます。
ルートクラスのクラスリソースが表示された場合は、ルートクラスのクラスリソースを削除します。
# /etc/opt/FJSVsdx/bin/sdxdcrsc -R -c RootClass |
ルートクラスのクラスリソースが削除されたことを確認します。
以下のコマンドを実行し、対象のクラス名が表示されないことを確認してください。
# /etc/opt/FJSVsdx/bin/sdxdcrsc -I |
16) システムディスクのミラーリングを再設定します。
注意
システムディスクが壊れたという想定で本手順を実施した場合、つまり、手順 1) でディスクを交換しなかった場合は、ミラーリングの再設定時に、以下のようなエラーメッセージが出力される場合があります。
# sdxdisk -M -c System -a type=root -d c0t0d0=Root1:keep,c1t0d0=Root2:undef |
上記のエラーが出力された場合は、システムを再起動してから、ミラーリングの再設定を実施してください。
参考
本手順を実施した際に手順の漏れや誤りがあった場合、ミラーリングの解除が不完全な状態になり、その後の再設定に失敗することがあります。
本手順を実施した後、または、再設定に失敗した後に、sdxrootck コマンドを使用して、解除が不完全な箇所と解除する方法を調べることができます。
参照
sdxrootckコマンドの詳細は、「F.3.2 sdxrootck - システムディスクミラーリングの解除の確認」を参照してください。
(5) システムがブートできない (ブートディスクのデータ破壊)。
説明
何らかのトラブルによって、システムディスクのデータが不当となり、あらかじめ採取されたバックアップデータからの復旧が必要となる場合があります。
副ブートディスク装置からの復旧に失敗した場合は、以下の手順で復旧してください。
対処
ZFS ブート環境の場合は、「6.2.2 リストア手順」を参照してください。UFS ブート環境の場合は、「6.3.3 リストア手順 (システムがブートできない場合)」を参照してください。
(6) システムがブートできない (ブートディスク装置名の誤り)。
説明
システムディスクをミラーリングすると、システムのブートディスク装置名 (boot-device パラメタ) が自動的に設定および更新されます。しかし、一部のシステムでは、GDS が正しい装置名を認識することができないため、誤った装置名が設定されることがあります。
その場合、以下のコンソールメッセージが出力され、システムのブートに失敗します。
ok boot
Rebooting with command: boot
Boot device: /ssm@0,0/pci@18,700000/pci@1/scsi@2/sd@0,0:a File and args:
Evaluating: boot
Can't open boot device |
この例ではブートディスク装置名として、/ssm@0,0/pci@18,700000/pci@1/scsi@2/sd@0,0:a が使用されていますが、正しい装置名は、/ssm@0,0/pci@18,700000/pci@1/scsi@2/disk@0,0:a であるため、ブートに失敗します。
対処
bootdevtab ファイル (ブートディスク装置名ファイル) を作成し、正しい装置名が設定されるようにします。
1) 正しいブートディスク装置名を指定して、システムをブートします。
ok boot /ssm@0,0/pci@18,700000/pci@1/scsi@2/disk@0,0:a |
正しいブートディスク装置名は、以下の方法で確認できます。
1-1) システムに接続されているディスク装置名を表示します。
後の手順で使用するために、結果を記録しておいてください。
ok show-disks |
1-2) 表示結果の a) より、/ssm@0,0/pci@18,700000/pci@1/scsi@2/sd@0,0:a の正しいブートディスク装置名は、/ssm@0,0/pci@18,700000/pci@1/scsi@2/disk@0,0:a になります。
2) bootdevtab ファイルを作成します。
2-1) 雛型を作成します。
# sdxinfo -x BootDev > /var/tmp/bootdevtab |
2-2) 雛型を編集します。
# vi /var/tmp/bootdevtab 編集前: c0t0d0 /ssm@0,0/pci@18,700000/pci@1/scsi@2/sd@0,0 c1t0d0 /ssm@0,0/pci@1c,700000/pci@1/scsi@2/sd@0,0 編集後: c0t0d0 /ssm@0,0/pci@18,700000/pci@1/scsi@2/disk@0,0 c1t0d0 /ssm@0,0/pci@1c,700000/pci@1/scsi@2/disk@0,0 |
1 つ目のフィールドには、物理ディスク名を指定します。
2 つ目のフィールドには、対応するブートディスク装置名を指定します。いずれのフィールドも、パーティションの指定 (s0 や :a など) は不要です。
雛型には、GDS が推定したブートディスク装置名が出力されます。出力されたブートディスク装置名が誤っている場合は、正しい装置名に変更してください。正しい装置名は、1-1)、1-2) の手順で確認できます。また、ブートディスク装置名は 2 つ出力される場合があります。その場合は、どちらか一方を削除し、正しい装置名に変更してください。
注意
各フィールドはスペースまたはタブで区切ります。1 カラム目が # で始まる行はコメントとして扱われます。
雛型には、ルートクラスに登録されている、すべてのディスクが出力されます。
ブートディスクとして使用される可能性があるディスクを、bootdevtab ファイルで指定してください。以下のディスクが該当します。
主ブートディスク
副ブートディスク
ブートディスクのグループに接続されるスペアディスク
代替ブート環境のブートディスクとスペアディスク
(GDS Snapshot のシステムボリュームのスナップショット機能を使用する場合)
また、以下のディスクは、bootdevtab ファイルで指定する必要はありません。bootdevtab ファイルから削除するかコメントにしてください。そのまま残しておいても影響はありません。
ブートディスクとして使用されないディスク
bootdevtab ファイルで指定しなくても、GDS が正しいブートディスク装置名を推定できたディスク
FC-AL 接続された内蔵ディスクは、ディスク交換するとブートディスク装置名が変わります。
ディスク交換しても bootdevtab ファイルを再作成しなくてよいよう、以下のように指定してください。最後の @ の後に * を指定します。* の箇所は GDS が自動的に補完します。
編集前: c0t0d0 /ssm@0,0/pci@1d,700000/SUNW,qlc@1/fp@0,0/ssd@w50020f230000798c,0 編集後: c0t0d0 /ssm@0,0/pci@1d,700000/SUNW,qlc@1/fp@0,0/disk@* |
MPLB ディスクの場合、各パスのブートディスク装置名を指定してください。
編集前: # mplb0 c12t16d0 /pci@1f,4000/fibre-channel@4/disk@10,0 c13t16d0 /pci@1f,4000/fibre-channel@5/disk@10,0 # mplb1 c12t17d0 /pci@1f,4000/fibre-channel@4/disk@11,0 c13t17d0 /pci@1f,4000/fibre-channel@5/dsik@11,0 編集後: # mplb0 c12t16d0 /pci@1f,4000/fibre-channel@4/sd@10,0 c13t16d0 /pci@1f,4000/fibre-channel@5/sd@10,0 # mplb1 c12t17d0 /pci@1f,4000/fibre-channel@4/sd@11,0 c13t17d0 /pci@1f,4000/fibre-channel@5/sd@11,0 |
2-3) 雛型を /etc/opt/FJSVsdx/lib ディレクトリに配置します。
# cd /etc/opt/FJSVsdx/lib # mv bootdevtab bootdevtab.old (すでに bootdevtab ファイルが存在する場合) # cp /var/tmp/bootdevtab bootdevtab # chmod 600 bootdevtab |
2-4) bootdevtab ファイルが正しく作成されたことを確認します。
# sdxinfo -x BootDev |
ブートディスク装置名が、正しく出力されることを確認します。
3) システムのブートディスク装置名 (boot-device パラメタ) が正しく設定されることを確認します。
3-1) システムを停止し、正しいブートディスク装置名を指定してブートします。
# init 0 ~ ok boot /ssm@0,0/pci@18,700000/pci@1/scsi@2/disk@0,0:a |
3-2) boot-device パラメタの設定を確認します。
# eeprom boot-device |
boot-device パラメタには、等価性コピーが完了したブートデバイスの装置名が設定されます。等価性コピーが完了していない場合は、完了してから確認してください。
ルートクラスにディスクを追加し、そのディスクを bootdevtab ファイルで指定する必要がある場合は、ディスクをグループに接続する前に、2) の手順で bootdevtab ファイルを再作成してください。
そのディスクがグループに接続され等価性コピーが完了した時点で、boot-device パラメタに追加されます。
等価性コピーが完了するまでに bootdevtab ファイルを再作成しなかった場合は、等価性コピーが完了した時点で、GDS が推定したブートディスク装置名が boot-device パラメタに追加されます。その場合は、bootdevtab ファイルを再作成した後、以下の手順で、正しいブートディスク装置名を設定してください。または、システムをリブートすると、正しいブートディスク装置名が設定されます。
# eeprom boot-device # eeprom boot-device="... /ssm@0,0/pci@18,700000/pci@1/scsi@2/disk@1,0:a" ↑正しいブートディスク装置名 |
(7) ZFS ブート環境でシステムがブートできない (ルートクラスの占有スライスの異常)。
説明
何らかのトラブルによって、ルートクラスの占有スライスのデータが不当になり、システムが起動できなくなることがあります。
対処
参照
Solaris のコマンドの詳細については、Solaris のマニュアルを参照してください。
1) CD-ROM 装置(またはネットワーク)からシステムを起動します。
起動方法については、Solaris のマニュアルを参照してください。
注意
Solaris 10 (カーネルパッチ 137111-08 以前を適用済) をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS は、リストアする OS と同じバージョン (カーネルパッチ 137111-08 以前を適用済) にしてください。CD-ROM 装置からブートする場合は、Solaris 10 5/08 以前の媒体を使用してください。
Solaris 10 (カーネルパッチ 137137-09 以降を適用済) をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS は、リストアする OS と同じバージョン (カーネルパッチ 137137-09 以降を適用済) にしてください。CD-ROM 装置からブートする場合は、Solaris 10 10/08 以降の媒体を使用してください。
Solaris 11 をリストアする場合、CD-ROM 装置 (またはネットワーク、復元用緊急起動ディスク) からブートする OS のバージョンは、リストアする OS と同じバージョンにしてください。
GDS でミラーリングしているシステムにおいて、CD-ROM 装置(またはネットワーク)からブートして本手順以外の操作を行うと、ミラーリング状態が破壊される場合があります。必ず本手順に沿って操作を行い、本手順にない操作はできるだけ避けてください。
復旧作業に伴い、物理スライス上のファイルシステムをマウントする場合には、不当な書込みを防ぐために、読取り専用でマウントすることを推奨します。
2) インポートできる ZFS ルートプールを構成するディスクを確認します。
# zpool import |
3) インポートする ZFS ルートプールが存在するディスクの、 s0 スライスのシンボリックリンクを作成します。
手順 2) で確認した ZFS ルートプールが存在するディスク(この例では c0t0d0s2 )について、s0 スライスのデバイス特殊ファイル(/dev/dsk/c0t0d0s0)のシンボリックリンクを作成します。
以下の例では、作業ディレクトリとして /tmp/work を使用します。
# mkdir /tmp/work |
4) ZFS ルートプールをインポートします。
# zpool import -d /tmp/work rpool |
注意
"cannot mount", "failed to create mountpoint"というメッセージが出力されることがありますが、次の手順 5) で正常にインポートされていることが確認できれば、問題ありません。
5) インポートした ZFS ルートプールの状態を確認します。
手順 3) で作成したシンボリックリンクのパスが config に表示されていること、state が ONLINE であること、エラーメッセージが表示されていないことを確認します。
# zpool status rpool |
注意
ZFS ミラー方式でミラーリングしていた場合は、下記のように表示される場合があります。
# zpool status rpool |
この場合には、手順 3) で選択したデバイス以外を detach した後、手順 3) で作成したシンボリックリンクのパスが config に表示されていること、state が ONLINE であること、エラーメッセージが表示されていないことを確認します。
# zpool detach rpool 980382089098729109 |
6) 復旧するルートファイルシステムを /mnt にマウントします。
6-1) 復旧するルートファイルシステムの mountpoint プロパティを / から /mntに変更します。
# zfs list |
6-2) 復旧するルートファイルシステムをマウントします。
# zfs mount rpool/ROOT/s10s_u6was_07b |
7) /mnt/kernel/drv/sfdsk.conf から sysvol-db と記述された行をすべて削除します。
以下に例を示します。
# vi /mnt/kernel/drv/sfdsk.conf |
8) /mnt/platform 配下に boot-archive ファイルがあるか確認し、ある場合は bootadm(1M) コマンドを実行し、boot-archive ファイルを更新します。
# ls /mnt/platform/`uname -m`/boot_archive |
boot-archive ファイルがある場合は、上記のようにファイル名が表示されます。
この場合は、以下のコマンドを実行します。その他の場合は、以下のコマンドは実行しないでください。
# /sbin/bootadm update-archive -R /mnt |
9) 手順 6) でマウントしたルートファイルシステムをアンマウントし、mountpoint プロパティを / に戻してから、ZFSルートプールをエクスポートします。
# zfs unmount /mnt |
10) インポートしたZFSルートプールが存在するディスク(手順2)で確認したディスク)からシステムを起動します。
ブートディスクからリブートする手順は、以下の3つの場合で異なります。
参照
SAN ブート環境の場合の手順は、以下のドキュメントを参照してください。
MPxIO を使用する場合
SPARC Enterprise SAN Boot環境構築ガイド (Leadvilleドライバ編)
https://updatesite.jp.fujitsu.com/unix/jp/download/driver/pfca-8info/
ETERNUS マルチパスドライバを使用する場合
SPARC Enterprise SAN Boot環境構築ガイド
https://updatesite.jp.fujitsu.com/unix/jp/download/driver/pfca-4/
10a-1) リストア先のスライスのデバイスパスを確認します。
以下のコマンドを実行して、リストア先のスライスのデバイスパスを調べて記録します。
# ls -l /dev/dsk | grep c0t600000E00D0000000001060300040000d0s0 |
10a-2) ブートディスクの情報を確認します。
以下のコマンドを実行して、リストア先のスライスのデバイスパスを調べて記録します。
# prtconf -v /dev/rdsk/c0t600000E00D0000000001060300040000d0s0 |
(*1) diskノード名( この例では disk@w500000e0d0460306,0 )
(*2) SAS Address ( この例では 500000e0d0460306 )
注意
MPxIO が無効になっている場合、"Paths from multipath bus adapters:" という行は表示されません。
10a-3) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0 |
10a-4) リストア先のディスクが接続されている SAS HBA のデバイスパスを確認します。
以下のコマンドを実行して、リストア先の SAS HBA のデバイスパスを確認します。
ok probe-scsi-all |
(*1) デバイスパス
(*2) SAS Address ( 手順10a-2) の *2 で確認した SAS Address )
10a-5) boot-device プロパティを設定します。
手順10a-4) で確認したデバイスパスと、手順10a-2) diskノード名と、手順10a-1) で確認したスライス名を連結した値を、OBP の boot-device プロパティに設定します。
ok setenv boot-device /pci@8100/pci@4/pci@0/pci@0/LSI,sas@0/disk@w500000e0d0460306,0:a |
10a-6) OpenBoot に boot-device-index プロパティがあるかどうか確認し、ある場合は boot-device-index プロパティを 0 に設定します。
ok printenv boot-device-index |
boot-device-index プロパティがある場合は、"boot-device-index =数値"と表示されます。この場合は、以下のコマンドを実行します。
"boot-device-index =数値"と表示されない場合は、以下のコマンドは実行しないでください。
ok setenv boot-device-index 0 |
10a-7) システムをブートします。
ok boot |
10b-1) 交換したブートディスクのルートパーティションのスライス名を調べて記録します。
[Solaris 11.3 以前の例]
# ls -l /dev/dsk | grep c0t5000CCA00AC113CCd0s0 |
[Solaris 11.4 以降の例]
# ls -l /dev/dsk | grep c0t50000397683346A9d0s0 |
10b-2) ブートディスクの情報を調べて記録します。
情報の確認方法は、OS のバージョンと、現在 MPxIO が有効になっているかどうかによって異なります。
MPxIO が有効になっているかどうかは、format(1M) コマンドの current サブコマンドで確認できます。ブートディスクの論理パス内に /scsi_vhci ディレクトリがある場合、MPxIO は有効です。
例:ブートディスクが c0t50000394882261A0d0 である場合
# format c0t50000394882261A0d0
format> current
Current Disk = c0t50000394882261A0d0: 00000000
<TOSHIBA-MBF2600RC-3706 cyl 64986 alt 2 hd 27 sec 668>
/scsi_vhci/disk@g50000394882261a0
/dev/chassis/SYS/HDD0/disk |
[Solaris 11.3 以前の場合]
現在 MPxIO が無効である場合
Hardware properties の obp-path パラメタを調べて記録します。
# prtconf -v /dev/rdsk/c0t5000CCA0150FEA10d0s0 disk, instance #0 Driver properties: ~ Hardware properties: ~ name='obp-path' type=string items=1 value='/pci@400/pci@2/pci@0/pci@e/scsi@0/disk@w5000cca0150fea11,0' ~ Device Minor Nodes: ~ |
現在 MPxIO が有効である場合
Paths from multipath bus adapters の obp-path パラメタを調べて記録します。
# prtconf -v /dev/rdsk/c0t5000CCA0150FEA10d0s0 |
[Solaris 11.4 以降の場合]
現在 MPxIO が無効である場合
Hardware properties の ddi-boot-path パラメタを調べて記録します。
# prtconf -v /dev/rdsk/c0t50000397683346A9d0s2 disk, instance ~ Driver properties: ~ Hardware properties: ~ name='ddi-boot-path' type=string items=1 value='/pci@8000/pci@4/pci@0/pci@0/scsi@0/disk@w50000397683346aa,0' ~ Device Minor Nodes: ~ |
現在 MPxIO が有効である場合
Paths from multipath bus adapters の ddi-boot-path パラメタを調べて記録します。
# prtconf -v /dev/rdsk/c0t50000397683346A9d0s2 disk, instance ~ Device Hold: ~ Driver properties: ~ Hardware properties: ~ Paths from multipath bus adapters: ~ name='ddi-boot-path' type=string items=1 value='/pci@8000/pci@4/pci@0/pci@0/scsi@0/disk@w50000397683346aa,0' ~ Device Minor Nodes: ~ |
10b-3) OpenBoot 環境に移行します。
# halt |
注意
復元用緊急起動ディスクから起動している場合は、shutdown(1M)コマンドを使用してOpenBoot環境に移行してください。
10b-4) OpenBoot の boot-device プロパティを設定します。
[Solaris 11.3 以前の場合]
手順10b-2) で出力された obp-path のパラメタと、手順10b-1) で出力されたスライス名(この例では :a )を連結して boot-device プロパティに設定します。
ok setenv boot-device /pci@400/pci@2/pci@0/pci@e/scsi@0/disk@w5000cca0150fea11,0:a |
[Solaris 11.4 以降の場合]
手順10b-2) で出力された ddi-boot-path のパラメタと、手順10b-1) で出力されたスライス名(この例では :a )を連結して boot-device プロパティに設定します。
ok setenv boot-device /pci@8000/pci@4/pci@0/pci@0/scsi@0/disk@w50000397683346aa,0:a |
10b-5) OpenBoot に boot-device-index プロパティがあるかどうか確認し、ある場合は boot-device-index プロパティを 0 に設定します。
ok printenv boot-device-index |
boot-device-index プロパティがある場合は、"boot-device-index =数値"と表示されます。この場合は、以下のコマンドを実行します。
"boot-device-index =数値"と表示されない場合は、以下のコマンドは実行しないでください。
ok setenv boot-device-index 0 |
10b-6) システムをブートします。
ok boot |
注意
ブート中に、以下の警告メッセージが出力される場合がありますが、システムへの影響はありません。現在のスワップ領域がダンプデバイスとして設定されます。ダンプデバイスの設定を変更したい場合は、dumpadm(1M) を使用してください。
savecore: open("/dev/sfdsk/System/dsk/swap"): No such file or directory dumpadm: cannot use /dev/sfdsk/System/dsk/swap as dump device: ファイルもディレクトリもありません。 |
10c-1) 交換したブートディスクのルートパーティションのデバイスパスを調べて記録します。
# ls -l /dev/dsk | grep c0t0d0s0 |
10c-2) OpenBoot 環境に移行します。
# halt |
注意
復元用緊急起動ディスクから起動している場合は、shutdown(1M)コマンドを使用してOpenBoot環境に移行してください。
10c-3) OpenBoot 環境で show-devs コマンドを実行してデバイス名を表示します。
ok show-devs /pci@1f,4000/scsi@3 |
10c-4) OpenBoot の boot-device プロパティを設定します。
手順 10c-3) で、最終要素が disk であるデバイス名が出力された場合:
手順 10c-1) で出力されたパスから ../../devices を除き、パスの最終要素の @ より前の部分(この例では sd )を disk に置き換えたパスを、boot-device プロパティに設定します。
ok setenv boot-device /pci@1f,4000/scsi@3/disk@0,0:a |
手順 10c-3) で最終要素が disk であるデバイス名が出力されなかった場合:
手順 10c-1) で出力されたパスから ../../devices を除いたパスを、boot-device プロパティに設定します。
ok setenv boot-device /pci@1f,4000/scsi@3/sd@0,0:a |
10c-5) OpenBoot に boot-device-index プロパティがあるかどうか確認し、ある場合は boot-device-index プロパティを 0 に設定します。
ok printenv boot-device-index |
boot-device-index プロパティがある場合は、"boot-device-index =数値"と表示されます。この場合は、以下のコマンドを実行します。
"boot-device-index =数値"と表示されない場合は、以下のコマンドは実行しないでください。
ok setenv boot-device-index 0 |
10c-6) システムをブートします。
ok boot |
注意
ブート中に、以下の警告メッセージが出力される場合がありますが、システムへの影響はありません。現在のスワップ領域がダンプデバイスとして設定されます。ダンプデバイスの設定を変更したい場合は、dumpadm(1M) を使用してください。
savecore: open("/dev/sfdsk/System/dsk/swap"): No such file or directory dumpadm: cannot use /dev/sfdsk/System/dsk/swap as dump device: ファイルもディレクトリもありません。 |
11) システムディスクの占有スライスを削除します。
システムディスクのパーティション構成をprtvtoc(1M)コマンドで確認し、占有スライス(タグが33のスライス)が存在する場合は、sdxsystem Formatコマンドで削除します。
# prtvtoc /dev/rdsk/c0t0d0s2 # /etc/opt/FJSVsdx/bin/sdxsystem Format -d c0t0d0 |
12) システムディスクのミラー先だったディスクを初期化します。
# dd if=/dev/zero of=/dev/rdsk/c1t0d0s0 bs=1024k # format -e |
format -eコマンドでは、ミラー先だったディスク(c1t0d0)を選択し、"Disk not labeled. Label it now?"という問合せに対しyを入力します。
13) クラスタシステムである場合は、ルートクラスのクラスタリソースを削除します。
ここでの対象はルートクラスのみであり、ローカルクラスおよび共用クラスのクラスタリソースは削除しないでください。
以降では、以下のクラスが存在している場合の実行例を示します。
ルートクラス :System
ローカルクラス:class0001
共用クラス :class0002
ルートクラスのクラスリソースが存在することを確認します。
# /etc/opt/FJSVsdx/bin/sdxdcrsc -I |
ルートクラスのクラスリソースが表示されない場合は、次の手順 14) に進みます。
ルートクラスのクラスリソースが表示された場合は、ルートクラスのクラスリソースを削除します。
# /etc/opt/FJSVsdx/bin/sdxdcrsc -R -c System |
ルートクラスのクラスリソースが削除されたことを確認します。
以下のコマンドを実行し、対象のクラス名が表示されないことを確認してください。
# /etc/opt/FJSVsdx/bin/sdxdcrsc -I |
14) システムディスクのミラーリングを再設定します。
詳細は、「7.1.1 ZFS ブート環境のシステムディスクミラーリングの設定 (GDS ミラー方式)」または「7.2.1 ZFS ブート環境のシステムディスクミラーリングの設定 (ZFS ミラー方式)」を参照してください。
注意
ミラーリングの再設定時に、以下のようなエラーメッセージが出力される場合があります。
# sdxdisk -M -c System -a type=root -d c0t0d0=Root1:keep |
上記のエラーが出力された場合は、システムを再起動してから、ミラーリングの再設定を実施してください。
(8) システムがブートできない (ufs ロギングのエラー)。
説明
「6.3.1 バックアップ手順」の「a) CD-ROM 装置 (またはネットワーク) からブートしてバックアップを行う場合」の方法でシステムディスク上の ufs ファイルシステムをバックアップする際に、手順 a1) のディスク切断操作を実行しなかった場合、OS 起動時に以下のようなエラーメッセージが出力され、OS が起動できないことがあります。
WARNING: Error processing ufs log data during scan WARNING: ufs log for /var changed state to Error WARNING: Please umount(1M) /var and run fsck(1M) WARNING: Error accessing ufs log for /var; Please run fsck(1M) mount: 入出力エラー mount: /dev/sfdsk/RootClass/dsk/varVolume をマウントできません。 mount: mount-point /var/run does not exist. |
対処
バックアップしたファイルシステムをリストアしてください。
リストア方法については、「6.3.2 リストア手順 (システムがブートできる場合)」または「6.3.3 リストア手順 (システムがブートできない場合)」を参照してください。
[説明] の操作を行っても、異常な現象がすぐには発生しないことがあります。
また、[説明] に示した OS のメッセージに従って fsck(1M) コマンドを実行すると、OS が起動できて一見復旧できたように見えることがあります。しかし、これらの場合も、ファイルシステムの内容やミラーの等価性は保証されません。
[説明] の操作を行った場合は、必ずファイルシステムをリストアしてください。
(9) システムが起動できない (ブートデバイスのエイリアス名の異常)。
説明
システムディスクをミラーリングすると、OpenBoot の nvramrc 変数に、ブートデバイスのエイリアス(別名)が登録されます。nvramrc のバイト数の制約により、エイリアス名が正しく登録されないことがあります。この場合、エイリアス名を指定してシステムを起動すると、以下のエラーメッセージが出力され、システムを起動できません。
{0} ok boot sdx-boot-alt-device-32-2b Boot device: /pci@8600/pci@4/pci@0/pci@9/LSI,sas@ File and args: Boot load failed ERROR: boot-read fail |
対処
他のブートデバイスを指定するか、または、ブートデバイスのパスを指定して起動してください。
例1: 他のブートデバイスを指定して起動する場合
{0} ok printenv nvramrc nvramrc = devalias net /pci@8600/pci@4/pci@0/pci@11/network@0 devalias disk /pci@8600/pci@4/pci@0/pci@9/LSI,sas@0/disk devalias sdx-root-slice-32-1 /devices/scsi_vhci/disk@g600000e00d1100000010003101800000:a,raw devalias sdx-boot-device-32-1 /pci@8600/pci@4/pci@0/pci@9/LSI,sas@0/disk@w500000e0d4003185,1:a ... {0} ok boot sdx-boot-device-32-1 |
例2: ブートデバイスのパスを指定して起動する場合
{0} ok boot /pci@8600/pci@4/pci@0/pci@9/LSI,sas@0/disk@w500000e0d4003195,0:a |
参照
ブートデバイスのパスの確認方法は、以下の手順を参照してください。
SAN ブート環境の場合
その他の場合