DiskSuiteミラーリング構成においてのディスク交換手順を記載します。ディスク交換を必要とする障害パターンはおおよそ以下の通りだと思われます。
障害が発生してもシステムは正常に動作し続けますが、早急にディスク交換をした方がいいです。どの場合もディスク交換手順はほぼ同じです。
用語の詳しい意味ややり方は、マニュアル等をご参照下さい。ここでは、あくまで自分の理解したやり方を記載しておきます。
サブミラーが破損した場合です。もっとも発生頻度が多い障害だと思います。metastatコマンドを使って破損個所を確認すると、保守の必要なサブミラーの箇所に"Needs maintenance"が表示されると思います。
経験上、サーバの高負荷やディスクI/Oの高負荷により一時的にミラーが外れ、"Needs maintenance"となっていたケースがあります。
ディスク交換をする前に、一度、保守の必要なサブミラーに対してミラーディタッチ・アタッチを行って、経過様子見をするのも良いかも知れません。
負荷のない状態で、再度、"Needs maintenance"となったら、ハード的に故障している可能性が非常に高いと判断できます。
尚、ディスク交換については、ディスク交換手順を参照下さい。
ディスク1台目 | ディスク2台目 | ||||
---|---|---|---|---|---|
ミラー メタデバイス |
マウントポイント | サブミラー | パーティション | サブミラー | パーティション |
d0 | / | d10 | c0t0d0s0 | d20 | c0t1d0s0 |
d1 | swap | d11 | c0t0d0s1 | d21 | c0t1d0s1 |
d3 | /var | d13 | c0t0d0s3 | d23 | c0t1d0s3 |
状態DB | - | - | c0t0d0s4 | - | c0t1d0s4 |
d5 | /opt | d15 | c0t0d0s5 | d25 | c0t1d0s5 |
d6 | /usr | d16 | c0t0d0s6 | d26 | c0t1d0s6 |
d7 | /export | d17 | c0t0d0s7 | d27 | c0t1d0s7 |
状態データベースのパーティションが破損した場合です。このままだと予期せぬ再起動が掛かったときに、過半数以上の状態データベースが異常ということで、シングルユーザモードになってしまう可能性があります。
すぐにディスク交換作業が出来ない場合は、破損した状態データベースのレプリカだけでも削除しておきましょう。
このようにしておけば、ひとまず状態データベースは全て正常状態であるため、予期せぬ再起動が掛かったとしても、シングルユーザモードに移行することなくマルチユーザモードで起動してくるでしょう。
尚、破損した状態データベースの削除の仕方は、以下の通りです。
# metadb -d /dev/dsk/c0t0d0s4
その後のディスク交換手順は共通です。
ディスク1台目 | ディスク2台目 | ||||
---|---|---|---|---|---|
ミラー メタデバイス |
マウントポイント | サブミラー | パーティション | サブミラー | パーティション |
d0 | / | d10 | c0t0d0s0 | d20 | c0t1d0s0 |
d1 | swap | d11 | c0t0d0s1 | d21 | c0t1d0s1 |
d3 | /var | d13 | c0t0d0s3 | d23 | c0t1d0s3 |
状態DB | - | - | c0t0d0s4 | - | c0t1d0s4 |
d5 | /opt | d15 | c0t0d0s5 | d25 | c0t1d0s5 |
d6 | /usr | d16 | c0t0d0s6 | d26 | c0t1d0s6 |
d7 | /export | d17 | c0t0d0s7 | d27 | c0t1d0s7 |
ディスクの片方が完全に破損した場合です。metastatコマンドを使って破損個所を確認すると、大量に"Needs maintenance"が表示されると思います。
こちらも経験上、サーバの高負荷やディスクI/Oの高負荷により一時的に幾つものミラーが外れ、"Needs maintenance"となっていたケースがありましたので、 ディスク交換をする前に、一度、保守の必要なサブミラーに対してミラーディタッチ・アタッチを行って、経過様子見をするのも良いかも知れません。
再度、"Needs maintenance"となったら、ハード的に故障している可能性が高いと判断できます。
尚、ディスク交換については、ディスク交換手順を参照下さい。
ディスク1台目 | ディスク2台目 | ||||
---|---|---|---|---|---|
ミラー メタデバイス |
マウントポイント | サブミラー | パーティション | サブミラー | パーティション |
d0 | / | d10 | c0t0d0s0 | d20 | c0t1d0s0 |
d1 | swap | d11 | c0t0d0s1 | d21 | c0t1d0s1 |
d3 | /var | d13 | c0t0d0s3 | d23 | c0t1d0s3 |
状態DB | - | - | c0t0d0s4 | - | c0t1d0s4 |
d5 | /opt | d15 | c0t0d0s5 | d25 | c0t1d0s5 |
d6 | /usr | d16 | c0t0d0s6 | d26 | c0t1d0s6 |
d7 | /export | d17 | c0t0d0s7 | d27 | c0t1d0s7 |
ディスク交換をするためには、破損パーティションのあるディスクへのミラーリング解除とそのディスク上にある状態データベースのレプリカを削除して、ディスク交換前に完全に1面ミラーの状態にしておきます。
その後、システムをシャットダウンし、故障ディスクを交換し、起動します。システム起動後、新ディスクのパーティションを正常系と同じように切り直して、ミラーリングの開始と状態データベースのレプリカを作成して完成です。
以下、c0t0d0ディスクとc0t1d0ディスクでミラーリングを構成しているシステムに於いて、c0t0d0ディスクの6番目のパーティションが破損した際を例に取って説明します。
metastatコマンドを使って破損個所を正確に把握します。破損個所は、"Needs maintenance"と表示されます。-tオプションを付加すれば、破損した日時も出力されます。
# metastat --- d6: Mirror Submirror 0: d16 State: Needs maintenance Submirror 1: d26 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 6145360 blocks
破損パーティションのあるディスクへのミラーリングを全て解除します。破損しているサブミラーを解除するためには、-fオプションで強制的に解除します。
# metadetach d0 d10 d0: submirror d10 is detached # metadetach d1 d11 d1: submirror d11 is detached # metadetach d3 d13 d3: submirror d13 is detached # metadetach d5 d15 d5: submirror d15 is detached # metadetach -f d6 d16 // -fにて強制解除 d6: submirror d16 is detached # metadetach d7 d17 d7: submirror d17 is detached
1面ミラーなっていることを確認する。
# metastat -p --- d0 -m d20 1 d20 1 1 c0t1d0s0 d1 -m d21 1 d21 1 1 c0t1d0s1 d3 -m d23 1 d23 1 1 c0t1d0s3 d5 -m d25 1 d25 1 1 c0t1d0s5 d6 -m d26 1 d26 1 1 c0t1d0s6 d7 -m d27 1 d27 1 1 c0t1d0s7 d10 1 1 c0t0d0s0 d11 1 1 c0t0d0s1 d13 1 1 c0t0d0s3 d15 1 1 c0t0d0s5 d16 1 1 c0t0d0s6 d17 1 1 c0t0d0s7
破損パーティションのあるディスク上の状態データベースのレプリカを削除します。
# metadb -d /dev/dsk/c0t0d0s4
状態データベースを確認します。正常系のディスクの状態データベースのみ出力されます。
# metadb --- a p luo 16 1034 /dev/dsk/c0t1d0s4 a p luo 1050 1034 /dev/dsk/c0t1d0s4 a p luo 2084 1034 /dev/dsk/c0t1d0s4
以上の行程で完全に1面ミラーになったのでシステムをシャットダウンします。
# sync; sync; /etc/telinit 0
ディスク交換後、システムを起動します。-rオプションで新ディスクを認識させます。
ok> boot -r
新ディスクが認識されているかformatコマンドで確認します。
# format
新ディスクのパーティションを設定します。formatコマンド若しくは、prtvtocコマンドとfmthardコマンドを使用します。
以下、prtvtocコマンドとfmthardコマンドを使用した場合を記載します。正常ディスク(/dev/rdsk/c0t1d0s0)のVTOC情報を読み出して、新ディスク(/dev/rdsk/c0t0d0s0)のVTOC情報に書き込みます。
# prtvtoc /dev/rdsk/c0t1d0s0 | fmthard -s - /dev/rdsk/c0t0d0s0
ミラーリングを開始して、2面ミラーにします。
# metattach d0 d10 d0: submirror d10 is attached # metattach d1 d11 d1: submirror d11 is attached # metattach d3 d13 d3: submirror d13 is attached # metattach d5 d15 d5: submirror d15 is attached # metattach d6 d16 d6: submirror d16 is attached # metattach d7 d17 d7: submirror d17 is attached
確認します。同期中(Resyncing)となっているはずです。
# metastat
新ディスク上に状態データベースのレプリカを作成します。-aオプションで追加、-cオプションで複製を3つ、と言う意味です。
# metadb -a -c 3 /dev/dsk/c0t0d0s4
状態データベースが合計6つあることを確認します。
# metadb --- a m p luo 16 1034 /dev/dsk/c0t0d0s4 a p luo 1050 1034 /dev/dsk/c0t0d0s4 a p luo 2084 1034 /dev/dsk/c0t0d0s4 a p luo 16 1034 /dev/dsk/c0t1d0s4 a p luo 1050 1034 /dev/dsk/c0t1d0s4 a p luo 2084 1034 /dev/dsk/c0t1d0s4