RAID5数据恢复—zfs文件系统下重组RAID5阵列的方法详解

简介: RAID5数据恢复环境:一台存储上有一组由12块SCSI硬盘(11块数据盘+1块热备盘)组建的RAID5磁盘阵列,FreeBSD操作系统+zfs文件系统。RAID5故障:

RAID5数据恢复环境:
一台存储上有一组由12块SCSI硬盘(11块数据盘+1块热备盘)组建的RAID5磁盘阵列,FreeBSD操作系统+zfs文件系统。

RAID5故障:
其中一块盘出现故障,需要重组该raid5磁盘阵列。

RAID5数据恢复过程:
1、将存储关机,将存储中所有磁盘标记后从槽位上取出。以只读方式将所有磁盘进行扇区级全盘镜像,镜像完成后将所有磁盘按照原样还原到存储中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有磁盘底层数据,获取重组raid5所需要的信息,包括:RAID5起始扇区、块大小(条带大小)分析、RAID5成员盘盘序、校验方向、数据走向。
2.1、RAID5起始扇区。
RAID起始扇区是指RAID内的数据在每块物理盘上的起始位置。起始扇区只存在于一块物理盘,大多数情况是0扇区。
1副本.png
使用数据恢复软件的同步功能将11块数据盘定位在0扇区,可以看到11块盘中只有3块盘(1号盘、2号盘和出现故障的那块盘)的0扇区有“55 AA”标志,这个标志说明是MBR磁盘结构。
2副本.png

分析raid5起始扇区位于哪块硬盘。先看出现故障的那块硬盘,这块故障硬盘的结尾显示这是一个GPT头备份且只有128MB大小。
3副本.png

剩下的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号盘。
4副本.png

2.4、校验方向。
RAID5的基本结构有左同步、左异步、右同步、右异步。左和右是对校验方向来说的,区别如表1和表2所示。该RAID5实例很明显是右走向的。
1表副本.png

左同步、左异步结构中的校验块都是从最后一块物理盘开始,右同步、右异步结构中的校验块都是从第一块物理盘开始。
判断校验方向的方法有两种:
方法一、先分析起始扇区,再分析条带大小,然后是盘序,盘序分析出来后校验方向很容易就能看出来。
方法二、如果盘序没有确定下来,只确定了起始扇区和条带大小,可以采用反推法(想了解反推法可以咨询北亚企安数据恢复工程师)。
2.5、数据走向。
数据的走向指同步或者异步。异步结构中,各条带组内的数据块均由低号盘向高号盘依次写入。同步结构中,每个条带组内第一个数据块写在校验块所在物理盘的下一个物理盘,若后面还有物理盘,则顺序往后写;若校验块所在物理盘后没有物理盘,则从校验块所在物理盘前面的物理盘开始从低号盘向高号盘顺序写入。
2表副本.png

3、RAID5实例分析过程(已确定此RAID5是右结构):
a、从“数据块A”入手。
5副本.png

查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。
b、从“数据块A”入手。
6副本.png

查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。
c、从“数据块A”入手。
7副本.png
查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于同步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于异步结构。
d、从“数据块A”入手。
8副本.png

查看“数据块A”末尾扇区的数据,然后再查看“数据块B”和“数据块C”开始扇区的数据。如果“数据块A” 末尾扇区的数据能够与“数据块B” 开始扇区的数据衔接,则该RAID5属于异步结构。如果“数据块A” 末尾扇区的数据能够与“数据块C” 开始扇区的数据衔接,则该RAID5属于同步结构。
4、重组RAID5阵列。
上面步骤分析出重组RAID5阵列所需要的信息,根据这些信息,我们就可以开始重组RAID5阵列了。
用工具打开并添加这11块硬盘。
9副本.png
9副本.png

将1.dsk添加到了左侧Connected storages里。
6副本.png

点击Build RAID选项,依照RAID5的盘序把10块盘都添加进去,开始组建RAID5阵列。
11副本.png

剔除出现故障的那块盘,在其位置添加时补一个空缺,并继续按照顺序添加完其它硬盘。点击标红框位置处的按钮,添加空缺硬盘。
12副本.png

选择校验方向和数据走向。本实例条带大小为28个扇区,即65KB,右异步结构。
13副本.png

点击Build按钮,在弹出窗口中点击find查找,选择zfs文件系统。
14副本.png

出现正在组建的RAID5阵列。
15副本.png
图15

相关文章
|
6天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
8天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1562 10
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
11天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
738 27
|
8天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
225 3
|
14天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
780 5
|
2天前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
108 60
|
1天前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
115 1
|
3天前
|
Java 开发者
【编程进阶知识】《Java 文件复制魔法:FileReader/FileWriter 的奇妙之旅》
本文深入探讨了如何使用 Java 中的 FileReader 和 FileWriter 进行文件复制操作,包括按字符和字符数组复制。通过详细讲解、代码示例和流程图,帮助读者掌握这一重要技能,提升 Java 编程能力。适合初学者和进阶开发者阅读。
104 61
|
14天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】