raid - 6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)

  

<强>一,故障描述
机房突然断电导致整个存储瘫痪,加电后存储依然无法使用。经过用户方工程师诊断后认为是断电导致存储阵列损坏。
 raid - 6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)
整个存储是由12块日立硬盘(3 t SAS硬盘)组成的raid - 6磁盘阵列,被分成一个卷,分配给几台Vmware的ESXI主机做共享存储。整个卷中存放了大量的Windows虚拟机,虚拟机基本都是模板创建的,因此系统盘都统一为160 g。数据盘大小不确定,并且数据盘都是精简模式。

  

<强>二,备份数据
将故障存储的所有磁盘和备份sss数据的目标磁盘连入到一台Windows Server 2008的服务器上。故障磁盘都设为脱机(只读)状态,在专业工具WinHex下看到连接状态如下图所示:(图中HD1-HD12为目标备份磁盘,HD13-HD24为源故障磁盘,型号为HUS723030ALS640):
图一:
 raid - 6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)

  

使用WinHex对HD13-HD24以底层方式读取扇区,发现了大量损坏扇区。初步判断可能是这种硬盘的读取机制与常见的硬盘不一样。尝试更换操作主机,更换HBA卡,更换扩展柜,更换为Linux操作系统,均呈现相同故障。与用户方工程师联系,对方回应此控制器对磁盘没有特殊要求。
使用专业工具对硬盘损坏扇区的分布规律进行检测,发现如下规则:
1,损坏扇区分布以256个扇区为单位。
2,除损坏扇区片断的起始位置不固定外,后面的损坏扇区都是以2816个扇区为间隔。
所有磁盘的损坏扇区分布如下表(只列出前3个损坏扇区):
ID号硬盘序列号第1个损坏扇区第2个损坏扇区第3个损坏扇区
13 YHJ7L3DD 5376 8192 11008
14 YHJ6YW9D 2304 5120 7936
15 YHJ7M77D 2048 4864 7680
16 YHJ4M5AD 1792 4608 7424
17 YHJ4MERD 1536 4352 7168
18 YHJ4MH9D 1280 6912 9728
19 YHJ7JYYD 1024 6656 9472
20 YHJ4MHMD 768 6400 9216
21 YHJ7M4YD 512 6144 8960
22 YHJ632UD 256 5888 8704
23 YHJ6LEUD 5632 8448 11264 24 YHHLDLRA 256 5888 8704

临时写了个小程序,对每个磁盘的损坏扇区做绕过处理。用此程序镜像完所有盘的数据。

  

<强>三,故障分析
1,分析损坏扇区
仔细分析损坏扇区发现,损坏扇区呈规律性出现。
——每段损坏扇区区域大小总为256。
-损坏扇区分布为固定区域,每跳过11个256扇区遇到一个坏的256扇区。
-损坏扇区的位置一直存在于RAID的p校验或问校验区域。
-所有硬盘中只有10号盘中有一个自然坏道。

  

2,分析分区大小
对HD13, HD23, HD24的0 - 2扇区做分析,可知分区大小为52735352798扇区,此大小按RAID - 6的模式计算,除以9日等于5859483644扇区,与物理硬盘大小1049524,和DS800控制器中保留的RAID信息区域大小吻合;同时根据物理硬盘底层表现,分区表大小为512字节,后面无8字节校验,大量的0扇区也无8字节校验。故可知,原存储并未启用存储中常用的DA技术(520字节扇区)。
分区大小如下图(GPT分区表项底层表现,涂色部分表示分区大小,单位512字节扇区,64位):
图二:
 RAID - 6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)
<强>四、重组突袭
1,分析突袭结构
存储使用的是标准的RAID - 6阵列,接下来只需要分析出突袭成员数量以及突袭的走向就可以重组突袭。
-分析突袭条带大小
整个存储被分成一个大的卷,分配给几台ESXI做共享存储,因此卷的文件系统肯定是VMFS文件系统。而VMFS卷中又有存放了大量的Windows虚拟机.Windows虚拟机中大多使用的是NTFS文件系统,因此可以根据NTFS中的MFT的顺序分析出突袭条带的大小以及突袭的走向。
-分析RAID是否存在掉线盘
镜像完所有磁盘。后发现最后一块硬盘中并没有像其他硬盘一样有大量的坏道。其中有大量未损坏扇区,这些未损坏扇区大多是全0扇区,因此可以判断这块硬盘是热备盘。

  

2,重组突袭
根据分析出来的RAID结构重组RAID,能看到目录结构。但是不确定是否为最新状态,检测几个虚拟机发现有部分虚拟机正常,但也有很多虚拟机数据异常。初步判断突袭中存在掉线的磁盘,依次将突袭中的每一块磁盘踢掉,然后查看刚才数据异常的地方,未果。又仔细分析底层数据发现问题不是出在RAID层面,而是出在VMFS文件系统上.VMFS文件系统如果大于16 tb的话会存在一些其他的记录信息,因此在组建突袭的时候需要跳过这些记录信息。再次重组RAID,查看以前数据异常的地方可以对上了,针对其中的一台虚拟机做验证,将所有磁盘加入利雅得中后,这台虚拟机是可以启动的,但缺盘的情况下启动有问题。因此判断整个RAID处在不缺盘的状态为最佳。

raid - 6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)