当前位置:首页 > 技术知识 > 正文内容

「服务器数据恢复」Unix环境zfs文件系统下重组RAID5案例分享

服务器RAID5数据恢复环境:

存储中12块SCSI硬盘组建RAID5,其中1块热备盘;

FreeBSD操作系统,zfs文件系统。

服务器RAID5故障:

第6块数据硬盘出现故障。

服务器RAID5数据恢复过程:

一、分析服务器RAID5。

1、初步判断RAID5起始扇区。

RAID起始扇区是指RAID内的数据在每块物理盘(创建RAID所用的每块独立的物理硬盘)上的起始位置。起始扇区只存在于一块物理盘,大多数情况是0扇区。找到起始扇区恢复raid5的第一步。

用WinHex将11块没有问题的硬盘去RAID化。



用WinHex的同步功能将11块盘定位在0扇区,11块盘中只有3块盘(1、2、6号硬盘)的0扇区有“55 AA”标志,这个标志意味着MBR磁盘结构。



分析哪个硬盘是起始扇区。先看第6块硬盘发现第6块硬盘的结尾显示这是一个GPT头备份并且只有128MB大小。




剩下的1号磁盘和2号磁盘中0扇区有起始扇区或校验。


2、分析块大小(条带大小)。

本案例使用的zfs文件系统,用WinHex同步显示11块物理盘的某个扇区,比如53654656扇区,发现只有1号盘的此扇区跟其他盘显示的不一样,这是位于1号盘的校验区。顺着1号盘53654656扇区上下寻找,找到连续的128个扇区。这128个扇区就是这个RAID5的条带大小。

3、RAID5成员盘的盘序。

本案例说的1号盘不一定就是RAID5的第一个盘,也就是说物理盘顺序并不一定就是是RAID的顺序,需要进行人工校验才能确定。

用WinHex同步定位11块硬盘的53654656扇区,发现1号盘的此扇区与其他盘显示的不同,这个扇区是1号盘的校验区。接着分析1号盘的下一个条带,即53654656+128=53654784扇区,得出2号盘的这个扇区和其他盘显示的不同,所以2号盘从53654784扇区开始的条带是校验区。以此方式继续下去,接着是3号盘的校验区,4号盘的校验区……得出的校验区如下图所示,“P”字母表示校验区。我们按照校验区的位置即可得到盘序,而本案例的盘序正好是从1号盘开始依次递增的。

既然知道了盘序,从第一步分析知道了1号盘和2号盘的0扇区为起始扇区或为校验区。对于左结构来说,0扇区是起始扇区的物理盘一定是RAID5的1号盘;对于右结构来说,0扇区是起始扇区的物理盘一定是RAID5的2号盘。



4、校验方向。

RAID5的基本结构有左同步、左异步、右同步、右异步。左和右是对校验方向来说的,区别如下图所示。本案例中的RAID5很明显是右走向的。



从校验区的走向可以确定整个RAID5的校验方向是右方向。

左同步、左异步结构中的校验块都是从最后一块物理盘开始;右同步、右异步结构中的校验块都是从第一块物理盘开始。

判断校验方向的方法有两种:一种是先分析起始扇区,再分析条带大小,然后是盘序,盘序分析后校验方向很容易就看出来了。另一种是如果盘序没有确定下来,只确定了起始扇区和条带大小,可以采用反推法。

使用反推法分析,在盘序还没有确定下来的情况下,由这个校验区可以算出某个盘中第一个校验区是第几个条带。具体方法如下:找到某个校验区,比如3号盘的53654912扇区,用这个扇区对条带大小与盘数的乘积取余。即

53654912MOD(128*12)=256

计算的结果等于256,表示256号扇区是校验。而位于此扇区的3号盘处于第3个条带,并且是第3个条带的开始扇区,包括256号扇区在内的以后的128个扇区是3号盘的第一个校验区。

接着判断1号盘下一个条带,1号盘下一个条带显示3号盘是校验区。接着判断3号盘下一个条带,3号盘下一个条带显示3号盘是校验区。由此可以确定校验方向。

5、数据走向。

同步异步说的是数据的走向。异步结构中,各条带组内的数据块均由低号盘向高号盘依次写入。同步结构中,每个条带组内第一个数据块写在校验块所在物理盘的下一个物理盘,若后面还有物理盘,则顺序往后写,若校验块所在物理盘后没有物理盘,则从校验块所在物理盘前面的物理盘开始从低号盘向高号盘顺序写入。



以下是本案例RAID5的分析过程(已确定此RAID5是右结构)。

1.从“数据块A”入手。



首先查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。

2.从“数据块A”入手。



首先查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。

3.从“数据块A”入手。




首先查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于同步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于异步结构。

4.从“数据块A”入手。



首先查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。

二、重组RAID5。

从上面的步骤中我们已经解析出RAID5的一些重要信息,根据这些信息,我们就可以重组RAID5了。

下面我们用UFS Explorer工具打开并添加这11块硬盘。



将1.dsk添加到了左侧Connected storages里。



把RAID5的10块盘都添加进去。点击Build RAID选项,依照RAID5的盘序把10块盘都添加进去,开始组建RAID5。



第6块盘因为出现故障,所以要剔除,并在其位置添加时补一个空缺,并继续顺序添加完其它硬盘。点击标红框位置处的按钮,添加空缺硬盘。



接着选择校验方向和数据走向,本实例条带大小为28个扇区,即65KB,右异步结构。因此设置如下所示。



接着点击Build按钮,出现如下所示。点击find查找,选择zfs文件系统。



出现了如下图所示的正在组建的RAID5。


相关文章

登录注册产品需求自检清单,你都写全了没?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。自己挖的坑一定要让别人给填好!一、登录(从PC端到移动端)移动端的登录沿袭了很多PC端的经验,但也有其独特的演变,我收...

单打独斗的产品设计师工作流程总结

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。我从入行开始就在一个做自己产品的小公司工作,到现在已经三年了。刚开始工作的时候什么也不懂,老板说让出效果图,就开始直接...

Objective-c单例模式的正确写法「藏」

单例模式在iOS开发中可能算是最常用的模式之一了,但是由于oc本身的语言特性,想要写一个正确的单例模式相对来说比较麻烦,这里我就抛砖引玉来聊一聊iOS中单例模式的设计思路。关于单例模式更多的介绍请参考...

IT博物馆之Objective-C诞生(micro博物馆)

1984年,Objective-C诞生。设计者:布莱德·考克斯(Brad Cox)、汤姆·洛夫(Tom Love)Objective-C是面向对象的通用、高级编程语言。它扩展了标准的 ANSI C,将...

Android监听滚动视图(监听页面滚动)

Android UI Libs之Android-ObservableScrollView1. 说明Android-ObservableScrollView,顾名思义,Android上观察滚动的视图,可...

Android TabLayout + ViewPager2使用

1、xml文件<!--明细列表--> <com.google.android.material.tabs.TabLayout android:id="@+id/ty_...