作者:OSSLab thx
在Raid 損壞,並且人為或其他因素損毀故障後.由於Raid 特性多顆併起.因此資料上有一定程度可以救出
Raid 軟恢復(Raw recovery)
要做救援前不要對硬碟做任何寫入動作 包含Rebuild等
如果擔心 請動手disk dump成 image (注意散熱跟電源), dump to file 是無損的.之後自己搞不定的話 再找專業公司
在windows 2003下用Winhex or Diskgenius做image file 方法
http://zhangyu.blog.51cto.com/197148/36358
有了單顆 raid image, 最重要的是 如何合併成原來 Raid disk image file
再來慢慢恢復 分區表,文件系統,特定文件 檔案
先來瞭解 Raid 5 架構
這是演算法
P0=D0 Xor D1 Xor D2
反推 D0=P0 Xor D1 Xor D2
以下以四顆HDD ,Raid 5會有穿插一顆為P碟(校驗硬碟)
| 硬碟0 | 硬碟1 | 硬碟2 | 硬碟3 |
條帶0 | D0 | D1 | D2 | P0 |
條帶1 | D3 | D4 | P1 | D5 |
條帶2 | D6 | P2 | D7 | D8 |
條帶3 | P3 | D9 | D10 | D11 |
條帶4 | D12 | D13 | D14 | P4 |
| | | | |
| | | | |
第一要先抓出是左循環或是右循環
假設disk 0,1,2,3 把raid disk 的分區可叫條帶 (Strip)
左循環就是 0條帶 校驗碼P區從disk 3開始 然後往左
1條帶 校驗碼P區就會在disk 2
P區(校驗區) 是往左趨勢
請參考圖 為左循環 backward
| 硬碟0 | 硬碟1 | 硬碟2 | 硬碟3 |
條帶0 | D0 | D1 | D2 | P0 |
條帶1 | D3 | D4 | P1 | D5 |
條帶2 | D6 | P2 | D7 | D8 |
條帶3 | P3 | D9 | D10 | D11 |
條帶4 | D12 | D13 | D14 | P4 |
| | | | |
| | | | |
右則反之 forward
| 硬碟0 | 硬碟1 | 硬碟2 | 硬碟3 |
條帶0 | P0 |
|
|
|
條帶1 |
| P1 |
|
|
條帶2 |
|
| P2 |
|
條帶3 |
|
|
| P3 |
條帶4 | P4 |
|
|
|
條帶 |
| P5 |
|
|
.
| .
| .
| .
| .
|
.
| .
| .
| .
| . |
另外一個是要判斷同步 異步
同步 parity :是資料寫入時一定會放在校驗碼disk後
異步 dynamic :則不管校驗碼換條帶時就直接照序寫入disk
<o> </o> | 硬碟0 | 硬碟1 | 硬碟2 | 硬碟3 |
條帶0 | D0 | D1 | D2 | P0 |
條帶1 | D4 | D5 | P1 | D3 |
條帶2 | D8 | P2 | D6 | D7 |
條帶3 | P3 | D9 | D10 | D11 |
條帶4 | D12 | D13 | D14 | P4 |
.<o/> | .<o/> | .<o/> | .<o/> | .<o/> |
.<o/> | .<o/> | .<o/> | .<o/> | .<o/> |
<o> </o> | 硬碟0 | 硬碟1 | 硬碟2 | 硬碟3 |
條帶0 | P0 | D0 | D1 | D2 |
條帶1 | D3 | P1 | D4 | D5 |
條帶2 | D6 | D7 | P2 | D8 |
條帶3 | D9 | D10 | D11 | P3 |
條帶4 | P4 | D12 | D13 | D14 |
.<o/> | .<o/> | .<o/> | .<o/> | .<o/> |
.<o/> | .<o/> | .<o/> | .<o/> | .<o/> |
<o> </o> | 硬碟0 | 硬碟1 | 硬碟2 | 硬碟3 |
條帶0 | P0 | D0 | D1 | D2 |
條帶1 | D5 | P1 | D3 | D4 |
條帶2 | D7 | D8 | P2 | D6 |
條帶3 | D9 | D10 | D11 | P3 |
條帶4 | P4 | D12 | D13 | D14 |
.<o/> | .<o/> | .<o/> | .<o/> | .<o/> |
.<o/> | .<o/> | .<o/> | .<o/> | . |
要能瞭解 上面P區走法,磁碟條帶分區狀況
所以分別會有 (以下用Win image 說法,目前來講每家說法略有點不同 )
左循環同步 backward parity
左循環異步 backward dynamic
右循環同步 forward partity
右循環異步 forward dynamic
判斷方法
1.瞭解那顆硬碟為 資料起始區.可以分析MBR
2.瞭解那顆為第一校驗區
3.以文件系統或是其它手段判定硬碟順序.(或是有記起來)
這邊說個白癡傻瓜方法. 一般廠商 backward parity 64Kbytes Stripe Size 最多.
如果能確認disk 0,1,2,3 順序的話
把image file 用win hex 跟Rstudio 直接做raid 5 recovery
四樣都做看看....(會有上面四個選項)
還原方法原理
1.真正資料 0,1,3正常時 就恢復該段條帶 不管校驗碼區塊
2.當真正 其中 data 資料區塊 丟失時 以校驗塊還原
3.因為校驗碼和資料同時寫入錯誤丟失資料 或某段有2個以上壞軌 可能會有無法還原的條帶 不過不會每個條帶都會丟失
自己再慢慢研究看那個disk image file是正確的吧.做imgage file慢 請用強一點的電腦
然後再針對各種分區做file system recovery
另外還有其他自動軟體
http://www.z-a-recovery.com/raid-recovery-tutorial.htm
http://www.runtime.org/raid.htm
http://www.diskinternals.com/raid-recovery/
http://www.getwayrecovery.com/purchase.html (support raid 6)
http://www.unformat-unerase.com/Articles/RAID_Recovery_Presentation/index.shtml (raird 5,raid6)
看損壞程度與原本的filesystem ,Raid 卡演算不同,80%還是需要人工處理 ..
最大忌諱是.當raid 5 同時掛一顆 以上 raid 6 掛二顆以上
整組請立刻停掉 否則又寫入一堆與舊資料不同步校驗碼.會把整個raid disk 架構毀掉. 增加recovery難度