作者laptop (空中飞熊)
看板Storage_Zone
标题[心得] 进阶Raid 还原与运算方法
时间Mon Jul 12 18:34:10 2010
之前在版上写过篇Raid 恢复文章
有人说 中文不好
确实不好. 所以後来有改写图文版
http://www.osslab.org.tw/Storage/Data_Recovery/Theory/Raid_Recovery
看本篇进阶前请先把上面link看完跟想完
假设傻瓜Raid 分析程式出了问题
最近手痒写了一点小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 表示此位置 资料正确
如果原硬碟都在 那是前端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
那我会当死他... ><
1F:推 kimgtob :推! 一目了然!! 07/12 18:45
※ 编辑: laptop 来自: 210.17.22.180 (07/12 18:51)
2F:推 chang0206 :...专业推! (我承认我END了... 07/12 23:18
3F:推 BABU1990 :...专业推! (我承认我END了...睡觉先 07/13 00:34
4F:推 kkkk123123 :大大!!!!! 05/28 04:22