服务器数据恢复—磁盘坏扇区导致raid6阵列崩溃的数据恢复案例
服务器存储数据恢复环境:
一台存储中有一组由12块SAS硬盘组建的raid6磁盘阵列,划分了1个卷,由数台Vmware ESXI主机共享存储。卷中存放了大量的Windows系统虚拟机。这些虚拟机系统盘大小一致,数据盘大小不确定,数据盘都是精简模式。
服务器存储故障:
机房异常断电导致存储瘫痪,加电后存储依然不可用。
服务器存储数据恢复过程:
1、将故障存储的所有磁盘编号后取出,将所有磁盘和备份数据的目标磁盘连入到一台安装Windows Server系统的服务器上,将故障存储中的磁盘都设为脱机(只读)状态。
通过软件查看的连接状态(HD1-HD12为目标备份磁盘,HD13-HD24为故障存储中的磁盘):
2、在底层读取HD13-HD24扇区,发现了大量坏扇区。初步判断这种硬盘的读取机制与常规硬盘不一样。更换操作主机、HBA卡、扩展柜甚至将操作系统更换为Linux,均呈现相同问题。与用户方工程师沟通,用户方工程师回应此控制器对磁盘没有特殊要求。
3、对硬盘损坏扇区的分布规律进行检测后发现如下规则:
a、损坏扇区分布以256个扇区为单位。
b、除损坏扇区片断的起始位置不固定外,后面的损坏扇区都是以2816个扇区为间隔。
所有磁盘的损坏扇区分布如下表(只列出前3个损坏扇区):
北亚企安数据恢复工程师编写了一个小程序,绕过每个磁盘的损坏扇区,镜像完所有故障存储中磁盘的数据。后续的数据分析和数据恢复操作都基于镜像文件进行。
4、基于镜像文件仔细分析损坏扇区后发现损坏扇区呈规律性出现,具有以下规律:
a、每段损坏扇区区域大小总是256扇区。
b、损坏扇区分布位置有一定规律性,每跳过11个256扇区遇到一个坏的256扇区。
c、损坏扇区的位置存在于RAID的P校验或Q校验区域。
d、所有硬盘中只有10号盘有一个自然坏道。
5、分析HD13、HD23、HD24的0-2扇区,按RAID6计算,将分区大小除以9,与物理硬盘大小以及控制器中保留的RAID信息区域大小吻合。根据物理硬盘底层表现,分区表大小为512字节,后面无8字节校验,大量的0扇区也无8字节校验。故原存储并未启用DA技术(520字节扇区)。
分区大小如下图(GPT分区表项底层表现,涂色部分表示分区大小,单位512字节扇区,64bit):
6、存储被分成一个大的卷,分配给几台ESXI做共享存储,因此卷的文件系统是VMFS。而VMFS卷中又存放了大量的Windows系统虚拟机。Windows系统虚拟机中使用的是NTFS文件系统,可以根据NTFS中的MFT的顺序分析出RAID条带的大小以及RAID的走向。
在给所有磁盘做镜像过程中,发现最后一块硬盘中并没有像其他硬盘中一样有大量的坏道,其中有大量未损坏扇区,这些未损坏扇区大多是全0扇区,因此可以判断这块硬盘是热备盘。
7、根据分析获取到的RAID结构信息重组RAID,重组后已经能看到目录结构,但是不确定是否为最新状态。随机检测几个虚拟机发现有部分虚拟机数据异常,初步判断RAID中存在掉线的磁盘。依次将RAID中的每一块磁盘踢掉,然后查看刚才数据异常的地方,未果。仔细分析底层数据发现问题不是出在RAID层面,而是出在VMFS层面上。如果VMFS大于16TB会存在一些其他的记录信息,因此在组建RAID的时候需要跳过这些记录信息。跳过这些记录信息后再次重组RAID,查看之前数据异常的地方就可以对上了。针对其中的一台虚拟机做验证:将所有磁盘加入RIAD中后,这台虚拟机是可以启动的,但在缺盘的情况下启动就有问题,因此判断整个RAID处在不缺盘的状态为最佳。
8、验证重要的虚拟机,发现大部分虚拟机都可以开机进入登陆界面。只有部分虚拟机开机蓝屏或开机检测磁盘,但是通过光盘修复之后都可以启动。
9、验证数据库
验证重要虚拟机中的数据库,发现数据库都正常。其中有一个数据库,据用户描述是缺少部分数据,但是经过仔细核对后发现这些数据在数据库中本来就不存在。通过查询master数据库中的系统视图。
查询结果如下图:
10、由于虚拟机的数量很多,如果验证每台虚拟机所需时间很长,因此对整个VMFS卷做检测。在检测VMFS卷的过程中发现有部分虚拟机或虚拟机的文件被破坏。
11、北亚企安数据恢复工程师向客户描述了目前的恢复情况。用户对几台重要的虚拟机进行验证后,认可恢复的数据结果。于是着手恢复所有数据。
使用目标磁盘在一台存储上组建了一组RAID6阵列,将重组的RAID数据镜像到目标阵列上,然后解析整个VMFS文件系统。
12、将恢复好的VMFS卷连接到一台ESXI主机上,尝试将其挂载到的ESXI环境中。但是由于ESXI版本不同或VMFS本身有损坏,挂载不成功。尝试使用ESXI的命令挂载也不成功,于是放弃挂载VMFS卷。
13、安排工程师将那台新组建raid6阵列的存储带到用户方现场,依次导出VMFS卷中的虚拟机。
a、将存储上的数据通过HBA卡连接到用户的VCenter服务器上。
b、在VCenter服务器安装“UFS”工具,然后使用“UFS”工具解释VMFS卷。
c、使用“UFS”工具将VMFS卷中的虚拟机导入到VCenter服务器上。
d、使用VCenter的上传功能将虚拟机上传到ESXI的存储中。
e、将上传完的虚拟机添加到清单,开机验证。
f、如果有虚拟机开机有问题,则尝试使用命令行模式修复,或者重建虚拟机并将恢复的虚拟机磁盘(既VMDK文件)拷贝过去。
g、由于部分虚拟机的数据盘很大而数据很少。针对这种情况可以直接导出数据,然后新建一个虚拟磁盘,将导出的数据拷贝至新建的虚拟磁盘中即可。
通过上述方式将恢复的虚拟机逐台恢复到用户的ESXI环境中。