2009年4月6日

Solaris SoftRAID 的meta資訊重建

由於平時監控 /var/adm/messages 的程式發出錯誤 (表示又有事了 @_@)
查看是硬碟的 write error如下, 進主機下 metastat, 發現 meta 資料有錯, 所以需要重新去resync

# metastat

d0: Mirror
Submirror 0: d10
State: Needs maintenance
Submirror 1: d20
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 10491456 blocks

d10: Submirror of d0
State: Needs maintenance
Invoke: metareplace d0 c1t0d0s0
Size: 10491456 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t0d0s0 0 No Maintenance


d20: Submirror of d0
State: Okay
Size: 10491456 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t1d0s0 0 No Okay


d1: Mirror
Submirror 0: d11
State: Okay
Submirror 1: d21
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 8476608 blocks

d11: Submirror of d1
State: Okay
Size: 8476608 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t0d0s1 0 No Okay


d21: Submirror of d1
State: Okay
Size: 8476608 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t1d0s1 0 No Okay


d4: Mirror
Submirror 0: d14
State: Needs maintenance
Submirror 1: d24
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 16780224 blocks

d14: Submirror of d4
State: Needs maintenance
Invoke: metareplace d4 c1t0d0s4
Size: 16780224 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t0d0s4 0 No Maintenance


d24: Submirror of d4
State: Okay
Size: 16780224 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t1d0s4 0 No Okay


d5: Mirror
Submirror 0: d15
State: Needs maintenance
Submirror 1: d25
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 6298944 blocks

d15: Submirror of d5
State: Needs maintenance
Invoke: metareplace d5 c1t0d0s5
Size: 6298944 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t0d0s5 0 No Maintenance


d25: Submirror of d5
State: Okay
Size: 6298944 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t1d0s5 0 No Okay


d6: Mirror
Submirror 0: d16
State: Okay
Submirror 1: d26
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 82842816 blocks

d16: Submirror of d6
State: Okay
Size: 82842816 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t0d0s6 0 No Okay


d26: Submirror of d6
State: Okay
Size: 82842816 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t1d0s6 0 No Okay


d7: Mirror
Submirror 0: d17
State: Needs maintenance
Submirror 1: d27
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 16780224 blocks

d17: Submirror of d7
State: Needs maintenance
Invoke: metareplace d7 c1t0d0s7
Size: 16780224 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t0d0s7 0 No Maintenance


d27: Submirror of d7
State: Okay
Size: 16780224 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c1t1d0s7 0 No Okay

做法很簡單, Solaris 已經幫我們列出來了
以最後一筆 d7 為例,表示為第七個Virtual的分割區, d17是第1顆硬碟, d27是第2顆硬碟
d17: Submirror of d7
State: Needs maintenance <-- Solaris 跟你說需要維護了
Invoke: metareplace d7 c1t0d0s7 <-- 指令就在這裡

所以我們就下
# metareplace -e d7 c1t0d0s7
表示要重新 resync 第1顆的第七個分割區,然後依序把 Needs maintenance 的分割區都下完,可同時執行,然後再下
# metastat | grep sync
去看完成的狀態,即可復原

沒有留言: