FC-AL のディスクでの復旧方法については,こちらも 参照のこと-> Sun/FC-AL HDD におけるミラーリング復旧手順
参考文献:BigAdmin
Solstice DiskSuite を用いてシステムディスクをミラーしている場合, 片方のディスクが壊れて使えないとシステムが再起動しなくなる. これは,データベースのレプリカ(metadb) が半数以下となってしまうためである.
そうなった場合の対処法について説明する.
また,ディスク交換後の方法を説明する.
ok> プロンプトで,boot コマンドを発行する. すると,データベースのレプリカが壊れているので, シングルユーザモードになる.
ok > boot ... Hostname: yazid metainit: yazid: stale databases Insufficient metadevice database replicas located. Use metadb to delete databases which are broken. Ignore any "Read-only file system" error messages. Reboot the system when finished to reload the metadevice database. After reboot, repair any broken database replicas which were deleted. Type Ctrl-d to proceed with normal startup, (or give root password for system maintenance): Entering System Maintenance Mode.
metadb コマンドを使ってメタデバイスのステータスを見る. 出力された結果に "unknown" や M フラッグがついていることで, 利用できなくなったデータベースのレプリカを見分けることができる.
# metadb -i flags first blk block count a m p lu 16 1034 /dev/dsk/c0t0d0s7 a p l 1050 1034 /dev/dsk/c0t0d0s7 M p unknown unknown /dev/dsk/c0t1d0s7 M p unknown unknown
障害のあるディスクのデータベースレプリカを -d オプションを使って削除する. このとき root(/)パーティションはリードオンリーとなっているので, mddb.cf に関するエラーメッセージは無視してよい.
# metadb -d -f c0t1d0s7 metadb: demo: /etc/opt/SUNWmd/mddb.cf.new: Read-only file system.
で,削除されたことを確認.
# metadb -i flags first blk block count a m p lu 16 1034 /dev/dsk/c0t0d0s7 a p l 1050 1034 /dev/dsk/c0t0d0s7
システムを再起動する.
metadb コマンドを使ってデータベースレプリカを追加しなおし, 正常な状態に戻す.
# metadb -a -c 2 c0t1d0s7 # metadb -i flags first blk block count a m p luo 16 1034 dev/dsk/c0t0d0s7 a p luo 1050 1034 dev/dsk/c0t0d0s7 a u 16 1034 dev/dsk/c0t1d0s7 a u 1050 1034 dev/dsk/c0t1d0s7
障害のあるディスクを交換する
元のディスクと同じ大きさでパーティションを作成する. もし,meta データベースをリカバリするなら,上述の方法で行う.
Solaris OS にログインし,metastat コマンドを発行する. 次のような結果が表示されるだろう.
# 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
この結果から c0t3d0s0 が障害を起こし,交換されたことがわかる. metareplace コマンドを使ってデバイスを利用可能にする.
# metareplace -e d0 c0t3d0s0 Device /dev/dsk/c0t3d0s0 is enabled
もしくは,障害のあったデバイスを新しいディスクの別のデバイスに移したい場合, 次のようにコマンドを打つ.
# metareplace d0 c0t3d0s0 <new device name>