RIGHT:[[Sun 関係覚え書き]]
FC-AL のディスクでの復旧方法については,こちらも
参照のこと-> [[Sun/FC-AL HDD におけるミラーリング復旧手順]]
参考文献:[[BigAdmin>http://www.sun.com/bigadmin/content/submitted/troubleshoot_raid.html]]
*概要 [#q48a00f8]
Solstice DiskSuite を用いてシステムディスクをミラーしている場合,
片方のディスクが壊れて使えないとシステムが再起動しなくなる.
これは,データベースのレプリカ(metadb) が半数以下となってしまうためである.
そうなった場合の対処法について説明する.
また,ディスク交換後の方法を説明する.
*データベースレプリカのエラー [#hd847503]
-問題: データベース(=metadb)が壊れたり,利用できなくなる.
-結果: ディスクが Fail し,I/O エラーが発生する.
-現象: 起動時にデータベースが半数以下となるとエラーメッセージが出る.
そして,システムはシングルユーザモードとして起動する.
*推奨する手順 [#v7a25c59]
**1. [#lea766a5]
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.
**2. [#vd11110e]
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
**3. [#u394b900]
障害のあるディスクのデータベースレプリカを -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
**4. [#u4c5565e]
システムを再起動する.
**5. [#w2170876]
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
----
*メタデバイスのエラー [#zfade4df]
-問題: サブミラーが "Needs maintenance" の状態となり,ミラーから外れる.
-結果: ディスクが Fail し,不意のシャットダウンが起こる.
そして,ミラーしているディスク同士の同期の不具合が起こる.
-現象: "Needs maintenance" エラーが metastat の出力に表示される.
*推奨する手順 [#q873c25d]
**1. [#wf58b068]
障害のあるディスクを交換する
**2. [#ma3ea1fa]
元のディスクと同じ大きさでパーティションを作成する.
もし,meta データベースをリカバリするなら,上述の方法で行う.
**3. [#ef5b26fd]
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
**4. [#za5c1fa2]
この結果から c0t3d0s0 が障害を起こし,交換されたことがわかる.
metareplace コマンドを使ってデバイスを利用可能にする.
# metareplace -e d0 c0t3d0s0
Device /dev/dsk/c0t3d0s0 is enabled
もしくは,障害のあったデバイスを新しいディスクの別のデバイスに移したい場合,
次のようにコマンドを打つ.
# metareplace d0 c0t3d0s0 <new device name>