见<infortrend ESDS RAID6故障后的数据恢复计划>文章中的描述,infortrend ESDS-S12F-G1440存储,内接12块2TB硬盘组成RAID6,一个GPT文件系统为分区NTFS,大小为18.2TB。3块硬盘离线后强制激活,并做了几分钟REBUILD,发现数据错误。
1、使用DELL R720安装恢复服务器平台WINDOWS 2008R2系统。在DELL R720服务器内加DELL H200 6G扩展卡,在H200上接2组DELL MD1200磁盘阵列。A组MD1200连接所有12块2T源盘,B组接12块2T目标硬盘。
2.保持A组所有磁盘WINDOWS2008 R2.脱机,激活所有B组硬盘。使用北亚磁盘镜像工具将12块硬盘一对一镜像到12块硬盘。
3.镜像完成后,关机,取下所有源盘,密封,停止操作源盘。
4.使用磁盘编辑器分析12个镜像盘的结构,发现每个硬盘的前部都很明显RAID根据搜索确定信息的痕迹RAID中LUN起始分配位置。
5、进行RAID6.基于标准P和另一个未知算法规则Q的右异步,发现算法猜测推断。但套用 里德-所罗门(Reed-solomon)根据互联网上的所有数据分析算法不一致PQ螺旋分布均匀RAID只有里德-所罗门(Reed-solomon)算法 ,怀疑是变种,但同一条带全0位计算后存在非全0的情况,因此推翻了此判断。
6、结合对控制器的测试,发现其Q校验基于一种随机的xor,如同Park编码算法完全随机,但验证分布与Park,所以即使想法相似,算法也完全不同。
7.需要在12块盘中提前获得所有缺少2块的完整算法,共享C(12,2)=66种缺陷,每种缺陷至少需要16种操作规则。程序运行后(由于操作复杂,人工无法证明),发现为了获得一个单元,需要操作30-50次左右。xor。
8.程序生成的计算公式大小超过140K,即总共约14万字符。这种复杂的计算会影响数据恢复周期,需要优化算法。
9.优化算法模块,引入可以简化算法的中间变量层,将算法压缩到约50%(明文)。
10.为一个明显不同步的数据块编写一个程序C(12、2)计算,然后将计算结果与预期结果进行比较。经过这样几个过程,很明显线盘0和3。
11.优化算法的二进制,放弃所有操作STL,改用数组,并使用bitmap概念表示表达式中的所有成员,以实现算法的最大性能。
根据算法和分析结构对数据进行初步分析,未发现明显数据异常。
13.将数据生成到另一个20T目标存储。
磁盘镜像:7小时
分析算法:断断续续大约需要60天。这个项目是我工作以来最长的工作周期,鉴于一个完全破天荒的算法,极大的算法研究热情支撑我编写了近万行代码进行判断、分析、优化、测试、恢复。感谢用户信赖北亚数据恢复中心,给予我们足够的时间。(结构及部分算法过程我会发布另一博文对其表述)
导出数据:约100小时
100%数据恢复成功(不排除有部分数据有少许损坏,但截止发稿,抽查验证的数据全部无异常)