服务器数据恢复环境:
一台存储上有一组由12块SCSI硬盘(11块数据盘+1块热备盘)组建的RAID5磁盘阵列,FreeBSD操作系统+zfs文件系统。
服务器故障:
其中一块盘出现故障,需要重组该raid5磁盘阵列。
服务器数据恢复过程:
1、将存储关机,将存储中所有磁盘标记后从槽位上取出。以只读方式将所有磁盘进行扇区级全盘镜像,镜像完成后将所有磁盘按照原样还原到存储中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有磁盘底层数据,获取重组raid5所需要的信息,包括:RAID5起始扇区、块大小(条带大小)分析、RAID5成员盘盘序、校验方向、数据走向。
2.1、RAID5起始扇区。
RAID起始扇区是指RAID内的数据在每块物理盘上的起始位置。起始扇区只存在于一块物理盘,大多数情况是0扇区。
使用数据恢复软件的同步功能将11块数据盘定位在0扇区,可以看到11块盘中只有3块盘(1号盘、2号盘和出现故障的那块盘)的0扇区有“55 AA”标志,这个标志说明是MBR磁盘结构。
分析raid5起始扇区位于哪块硬盘。先看出现故障的那块硬盘,这块故障硬盘的结尾显示这是一个GPT头备份且只有128MB大小。
剩下的0扇区有“55 AA”标志的另外2块磁盘(1号盘和2号盘)中的0扇区有起始扇区或校验。
2.2、块大小(条带大小)。
块也称条带,是RAID处理数据的基本单元,不同的RAID条带大小有所不同。由于一个校验区的大小是一个条带的大小,根据这个规则分析该RAID5实例。此实例使用的是zfs文件系统,同步显示11块物理盘的某个扇区,发现有一块盘的此扇区和其他盘的的此扇区明显不一样,这是位于该盘的校验区。顺着该盘的该扇区上下寻找,找到连续的128个扇区。这128个扇区就是这个RAID5的条带大小。
2.3、RAID5盘序。
同步定位11块硬盘的53654656扇区。发现1号盘的该扇区与其他盘的该扇区不同,这个是1号盘的校验区。接着分析1号盘的下一个条带,即53654656+128=53654784扇区,发现2号盘的这个扇区和其他盘的不同,所以2号盘从53654784扇区开始的条带是校验区。以此方式继续分析,找到3号盘的校验区,4号盘的校验区……,“P”字母即表示校验区。按照校验区的位置可得到盘序。这个实例的盘序正好是从1号盘开始依次递增的。
对于左结构来说,0扇区是起始扇区的物理盘一定是RAID5的1号盘;对于右结构来说,0扇区是起始扇区的物理盘一定是RAID5的2号盘。
2.4、校验方向。
RAID5的基本结构有左同步、左异步、右同步、右异步。左和右是对校验方向来说的,区别如表1和表2所示。该RAID5实例很明显是右走向的。
左同步、左异步结构中的校验块都是从最后一块物理盘开始,右同步、右异步结构中的校验快都是从第一块物理盘开始。
判断校验方向的方法有两种:
方法一、先分析起始扇区,再分析条带大小,然后是盘序,盘序分析出来后校验方向很容易就能看出来。
方法二、如果盘序没有确定下来,只确定了起始扇区和条带大小,可以采用反推法(想了解反推法可以咨询北亚企安数据恢复工程师)。
2.5、数据走向。
数据的走向指同步或者异步。异步结构中,各条带组内的数据块均由低号盘向高号盘依次写入。同步结构中,每个条带组内第一个数据块写在校验块所在物理盘的下一个物理盘,若后面还有物理盘,则顺序往后写;若校验块所在物理盘后没有物理盘,则从校验块所在物理盘前面的物理盘开始从低号盘向高号盘顺序写入。
3、RAID5实例分析过程(已确定此RAID5是右结构):
a、从“数据块A”入手。
查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。
b、从“数据块A”入手。
查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。
c、从“数据块A”入手。
查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于同步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于异步结构。
d、从“数据块A”入手。
查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。
4、重组RAID5阵列。
上面步骤分析出重组RAID5阵列所需要的信息,根据这些信息,我们就可以开始重组RAID5阵列了。
用工具打开并添加这11块硬盘。
将1.dsk添加到了左侧Connected storages里。
点击Build RAID选项,依照RAID5的盘序把10块盘都添加进去,开始组建RAID5阵列。
剔除出现故障的那块盘,在其位置添加时补一个空缺,并继续按照顺序添加完其它硬盘。点击标红框位置处的按钮,添加空缺硬盘。
选择校验方向和数据走向。本实例条带大小为28个扇区,即65KB,右异步结构。
点击Build按钮,在弹出窗口中点击find查找,选择zfs文件系统。
出现正在组建的RAID5阵列。