瀏覽單個文章
thx
Major Member
 

加入日期: Jun 2000
您的住址: Taipei
文章: 288
這篇講解Raid Reocvery 人工分析 .

http://www.osslab.org.tw/Storage/Da...y/Raid_Recovery

看本篇進階前請先把上面link看完跟想完

假設傻瓜Raid recovery 分析程式出了問題 該怎辦?

最近手癢寫了一點小program .
市面上書上其實也沒講某些概念
我們Lab做法目前也沒人公開.

準備東西Winhex
假設四顆硬碟 都在.只是Raid message掉失.
1.定位第一棵硬碟
MBR 為不錯定位方法 搜索55AA

2.P = A Xor B Xor C 反導 C = A Xor B Xor P (所以不能用這個去推那個為校驗塊)

基本上先以第一扇區. 隨便各找一個 同位置 Hex 玩玩

假設 為 BA,7E,00,C4

嗯 各位可能已忘了大學電概課 Xor算法.
沒關係 請拿出小算盤 切到程式設計師模式 再切到16進位

BA Xor 7E Xor 00= 換算出來為C4 C4 跟第四棵C4 一樣
表示此位置 校驗資料正確
如果原硬碟都在 但Raid 有問題
通常是是前端Sector 有毀,ECC校驗 有問題
各位可以用這方法去算算

Raid 是一種交錯格式 所以前面壞了
後面不一定壞 各位可以先手算幾下. 確定好扇區比較沒問題後 再從此扇區做運算


3.簡單推斷Strip Size
分別以 64,128,256 Sectors 去觀察 1 Sectors =512 bytes , 1Kbytes=1024 bytes

如果 1~ 128 扇區看起來還像校驗塊 129扇區卻不是了 感覺是資料

(一般來講是比對其他硬碟同樣位置資料區 看資料連續性)

那此Raid Strip Size 就是64 *512 byte/1024= 32K

如果是少顆 4 pcs ..我確實就這樣Winhex瞄瞄就ok

但是如果是 6 pcs 以上. 我大腦吃不下hex 跟ascii code.
確實要有點補助工具

小弟寫的程式 只做啥?

如果硬碟順序已不在 以文件 分區表 分析法
分算出順序.整出校驗碟 左循環 右循環 校驗塊大小

基本上不是程式笨的問題 (好吧 人笨.我拿VC 花幾小時亂寫好)
有時確實會算反左循環或右循環
不過關鍵排列"校驗塊" 跟"大小"幾乎都正確 傻瓜軟體就是少了 校驗塊排列法...
所以沒有邏輯思考. 是無法正確還原Raid.

人為判定
定義校驗碟必為 第一或最後

比對第一顆資料硬碟 .後續其他顆校驗塊.

當看到正確校驗排列
此時正確的Raid 架構就出來了....

硬碟順序

架構
左循環同步 backward parity
左循環異步 backward dynamic
右循環同步 forward partity
右循環異步 forward dynamic

組錯Raid .小於Strip strip Size 內檔案會被掃出來
基本上就像你拿RStudio掃單顆Raid成員硬碟一樣..

其實我覺得電概課應該教Raid Recovery

如果我是教授, 小大一上完這種課 還排列不了 外面 10萬 case
那我會當死他... ><
__________________
~有任何問題 歡迎詢問!!~


自取地址:台北市長春路15號11樓之2
聯絡電話: (02)25214840
手機: 0915153332
Line:@osslab
營業時間為週一至週五 早上10:00 ~18:30


夢理都是DATA
http://www.osslab.com.tw/
舊 2010-07-13, 05:56 AM #38
回應時引用此文章
thx離線中