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

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

maynowei8个月前 (08-11)技术知识117

服务器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。


相关文章

android培训学习的大纲(安卓app培训)

第一阶段android基础:1.基础javaJava概述,进制,数据类型,常量变量,运算符,表达式关系运算符,逻辑运算符,if语句,switch语句while循环,do...while循环,for循环...

一文弄懂 GO 的 互斥锁 Mutex !(互斥锁的使用方法)

在 Go 语言并发编程中,互斥锁(Mutex)是一个非常重要的同步原语。本文将深入介绍 Mutex 的使用方法、实现原理以及最佳实践。1. 什么是 Mutex?Mutex(互斥锁)是一种用于多线程编程...

如何正确理解Java领域中的并发锁,我们应该具体掌握到什么程度?

苍穹之边,浩瀚之挚,眰恦之美; 悟心悟性,善始善终,惟善惟道! —— 朝槿《朝槿兮年说》写在开头对于Java领域中的锁,其实从接触Java至今,我相信每一位Java Developer都会有这样的一个...

不需安装oracleclient连接oracle数据库方案

在Oracle官方发布ODP.net之前,我们通常使用微软的System.data.OracleClient进行Oracle数据库操作,它的缺点是必须要装Oracle客户端OracleClient,如...

Oracle高级数据库特性揭秘:存储过程、触发器与权限管理

当谈论Oracle高级数据库特性时,存储过程和函数、触发器、权限管理和安全性以及数据库连接和远程访问是关键概念。下面我将为每个主题提供详细的解释,并附上高质量示例。存储过程和函数: 存储过程和函数是预...

Oracle 11g安装教程完整版(oracle 11g 安装教程)

由于工作需要,将安装的经验分享给大家。第一步:首先准备安装文件包:Oralce 11.2.0.4 64bit和plsqldev1405x64如图所示:第二步:将2个文件解压到同一个目录,如图所示:第三...