1. 首页 >> 恢复类型 >> 服务器

简化复杂问题:从丢失配置的RAID中提取数据的独特方法

大家好!

今天,我们将讨论配置丢失的RAID阵列,以及如何从中提取数据。这篇文章对数字取证专家和数据恢复工程师都有用。让我们首先了解一下什么是RAID。

突袭。这是什么?

RAID是独立驱动器的冗余阵列。系统将其显示为具有块访问权限的虚拟存储设备。本质上,RAID是一个虚拟驱动器。

组装RAID的目的是创建具有更高访问速度、更大容量和更高可靠性的存储。

人们为什么使用RAID?家庭用户可以组装阵列来创建备份或存储他们个人的照片和文档档案,以及家庭多媒体库(电影、音乐等)。公司使用RAID作为服务器上的数据存储。这可以是公共(共享)文档存储、用于备份、数据库、会计数据等的存储。

简而言之,RAID是最有价值数据的高容量存储。

那么如何应对呢?

RAID映像

有两种方法可以制作突袭的图像。

第一个是获得被检查机器的图像。

          

这种方法的主要优点是——不需要了解阵列的排列方式。然而,这种方法有许多缺点缺点而最主要的一点就是在运行的被检机器上做一些事情是不好的。那么,有什么选择呢?

  1. 我们可以运行服务器,并从USB闪存驱动器或Live CD启动一些复制软件;虽然操作系统可能会在工作中改变一些东西,这显然是不好的。

  2. 从光盘或闪存驱动器启动操作系统并启动软件是可能的,但不能保证它一定能工作,因为,例如,许多阵列都是软件阵列(包括广泛使用的NAS),因此,要查看RAID,您需要运行适当的软件。此外,如果我们使用这种方法,我们将无法访问RAID中未使用的磁盘区域。

所以,总的来说,我们不能确定数据会保持不变。

第二种方法是分别制作每个驱动器的映像。然后以只读模式组装阵列

这是确保数据完整性的唯一方法,也让我们有机会研究硬盘的所有区域(RAID很可能不会从头到尾使用整个磁盘,而只是使用它的一些内部段。因此,可能存在可存储隐藏数据的未使用区域)。

这种方法的主要缺点是需要组装阵列,即需要确定其配置。因此,为了正确地做每件事,我们需要定义配置。

RAID组装

要组装RAID,您必须确定:

  • 使用了哪些驱动器:有时没有使用所有磁盘(可能有备用或多余的磁盘用于“系统”),有时没有足够的磁盘(1个驱动器可能损坏或被丢弃,但由于冗余,阵列仍然可以工作)等等。

  • 阵列中驱动器的顺序。有时它反映了磁盘在计算机中的放置顺序,但不要对此打赌。

  • RAID级别和算法(如果有的话)

  • 用于条带化的块大小

  • RAID中使用的开始和结束LBA(从0到MaxLBA不一定使用驱动器)

  • 延误了。重复是康柏和惠普阵列的一个共同特征(惠普收购了康柏)。

为什么参数的定义会是一个问题?答案很简单——所有可能的配置数量巨大!仅订购驱动器,我们就可以获得20多种4驱动器的变体,100多种5驱动器的变体,以及数千种7驱动器的变体。我们还有很多其他的参数,可以增加可能的构型。

当然,也有简单的情况,例如:

  • 具有众所周知的RAID元数据格式的软件阵列

  • 少量成员和简单级别(如条带或镜像)

对于一个没有经验的用户来说,所有其他情况都很难。此外,在现实生活中,你必须处理一些使事情变得格外复杂的因素:

  • RAID元数据缺失、损坏或不正确(是“以前”磁盘寿命遗留下来的,或者是阵列重新初始化的结果)

  • RAID上的文件系统已损坏,很难使用其元数据来定义配置(病毒或恶意因素可能会损坏文件系统)

  • 有些成员可能是未使用的,即热备盘或系统盘。

  • 成员的另一个常见问题是,您可能会从许多不同的阵列中获得一堆驱动器。因此,您首先需要了解哪个磁盘来自哪个阵列

  • 下一个问题是,可能会使用具有特殊配置的阵列,例如,从磁盘开始处的异常偏移或延迟,或其他任何情况。

  • 此外,通常需要在破坏性重建后恢复数据,即使用不正确的参数重建阵列的操作会导致数据损坏(重建本身可能是调查的原因)

考试时集合RAID是必要的动作。尽管这项任务可能非常非常困难。

成功的关键

什么能帮助我们应付所有的困难?它是几种想法和方法的结合:

  • 第一个是文件雕刻(数据提取器中的“原始恢复”模式),能够确定文件整数部分的大小

  • 第二个是对文档制作者发现的结果进行统计处理。单个文件可能会给出错误的图片,但它们的集合显示了非常好的结果

  • 第三个是快速检查假设的能力,为此我们需要一个工具来执行与RAID转换相关的所有转换,换句话说,我们需要实时RAID重建。为每个假设检查构建图像需要花费大量时间

接下来,我们将更详细地了解所有这些内容。

锉刀雕刻基础

文件雕刻(PC-3000中的“RAW Recovery”模式)是一种在没有文件系统信息的情况下,利用文件格式知识查找文件头的方法。最简单和最常用的方法是搜索文件开头的签名。例如,PNG图像在文件的最开头有签名“%PNG”。对于其他文件类型,签名当然是不同的。

文件格式的知识使我们不仅可以找到文件头,还可以从下面估计文件的整数部分。

例如,PNG文件由一系列块组成,每个块都有签名、大小和校验和。即我们可以足够可靠地验证它。这意味着,如果文件没有损坏或碎片,我们可以从头到尾检查它,并说它是“完整的”,它的大小是N个字节。

如果文件是碎片或者一部分被重写了什么的,那么我们可以说这里是标题,前几块是完整的。它们占用K字节。在受到伤害后的某处。它可以是K+1字节或K+100字节-未知。但是前K个字节是完整的。

对于不同类型的文件,检查整数部分的能力和这种检查的准确性是非常不同的。在这里可以检查整个文件,就像这个例子中的png。在某些地方,我们可以从头开始只检查几百个字节,例如BMP文件,不管它是完整的还是损坏的。

能够找到头文件并检查许多不同文件类型的整数部分是PC-3000 RAID系统的一个独特功能,其他工具都没有。

RAID成员上的文件雕刻

让我们看一个简单的RAID 5左同步(LS ),它由3个成员组成。如果您曾经尝试过从RAID恢复数据,您应该对这种配置很熟悉:

现在让我们来看看它的一个成员,例如,成员A:

该RAID表描述了翻译的重复规则。图中只显示了两次完整的重复和第三次的开始。因为它是RAID成员,所以它存储数据块和冗余块——XOR。数据块不像0、1、2、3…那样一个接一个,它们有间隙—0、3、6等等。因为其他块存储在其他成员上。

现在我们来谈谈文件雕刻是如何作用于RAID成员的。

成员存储数组的单个块,因此文件的整数部分受到块大小的限制。

  • 文件可以在数据块内的某处开始和结束

  • 如果文件很大,它将在块的末尾被中断,因为文件的另一部分存储在另一个成员上

这里我们看到了概率极小的情况:

RAID成员上文件的整数部分:

  • 无法在块之间移动

  • 不能在XOR块内

这种情况当然存在,但其数量比“正常”情况(如上一张幻灯片所示)要少得多

结论是我们只能在单独的数据块中找到文件的整数部分。

雕刻数据的统计处理

RAID中的数据转换规则是周期性的。在我们的例子中,每3个块中有2个实际上是数据块,最后一个是XOR:

如果我们只是合计每个块的每个扇区中有多少个整数部分,我们会看到类似这样的内容:

  • 数据块中有许多文件的整数部分

  • XOR里面什么都没有

  • 您可以看到块之间的边界,因为文件没有越过块边界

 

让我们在实践中检验一下理论。只有PC-3000 RAID系统有能力以统计方式处理雕刻数据,并以图形方式展示结果。在这张截图中,您可以看到在解决真实案例时从软件中获得的直方图:

图片和上一张很像。数据块和“空”XOR块清晰可见。红线表示零值和非零值相邻的位置。它们有助于发现潜在的块边界。

这里同时有三个驱动器:

我们可以看到XOR块(“空”块)位于不同成员的不同位置,RAID 5也应该如此。块大小等于128个扇区,显示在直方图上(只是不要忘记LBA是从左到右增加的,而不是从上到下增加的。问题是这是在宽屏显示器上查看信息的一种更方便的方式。

不同时期的直方图

周期大小是磁盘数量乘以块大小和延迟。如果我们犯了一个错误呢?我们会得到什么?以下是相同磁盘在不同时期的直方图的真实示例:

  • 在第一个案例中,我们在数据块大小上犯了一个错误—我们将大小设置为所需大小的1/2,并且收到的周期少了1/2,并且不清楚这是否是RAID 5

  • 第二张图片—所有参数都是正确的,很明显这是RAID 5

  • 最后一张图片——我们选择了错误的参与者数量——4个而不是3个,我们再次看到直方图被“破坏”

因此,如果我们用错误的周期构建统计数据,我们将会看到错误的直方图。

这可以用作快速直方图测试:计算周期并查看直方图。如果空白区域可见(如在XOR模块中),则参数设置正确,否则,这可能是一个错误,或者配置中没有任何XOR、rs或HS模块。在现实生活中,直方图是即时或在几秒钟内建立的。所以,这真的是一个快速测试。

不同配置的示例

现在我们来看看不同配置的一些模式。图片上所有直方图均基于真实案例。

RAID 5,8个驱动器,块大小为128个扇区

在这里,您可以看到构建在8个驱动器上的RAID 5配置,具有128个扇区块大小:

  • 为什么选择RAID 5?因为它只有一个“空”块——XOR

  • 为什么是8个成员?因为该周期由8个块组成

  • 此外,从红色辅助线之间的距离可以清楚地看到128个扇区的块大小

此外,您可以在XOR模块中看到“噪声”。在那里发现了一些文件,这不是不可能的。但是,它们的数量明显少于数据块中的数量。

RAID 6(或5EE),6个驱动器,数据块大小256个扇区,开始LBA移位

这是RAID 6或5EE,由6个驱动器组成:

  • 为什么选择RAID 6?–因为有两个“空”块。一个是XOR,另一个是Reed-Solomon(或者一个热备用块,如果它是5EE的话)

  • 6个驱动器,因为在此期间有6个数据块

  • 一个“峰值”的长度是256个扇区,这是块的大小

 

在这张图片中,您可以看到该块在开头和结尾有两个部分:

发生这种情况是因为RAID不像以前那样从0开始,它有一些变化。开头蓝色部分的大小是64个扇区(红线上方有提示)。这意味着RAID从一些LBA开始,应该是这样的:N * BlockSize + 64,N = 0,1,2,…。在我们的例子中,它是1088 (= 4*256 + 64),这是一些惠普和康柏阵列的典型起始LBA。

RAID 5,4个驱动器,延迟16,块大小128个扇区

这里您可以看到延迟值等于16的RAID 5:

我们如何确定这一点?这里你可以看到最右边是一个有服务数据的区域。有许多红线——这是在XOR中创建小文件的“噪音”。我们总共有4个驱动器,因此我们认为这是一个由4个驱动器组成的RAID 5。(对于包含8个驱动器的RAID 6,可以看到类似的直方图)。其余区域填充有数据,但可以清楚地看到,一个区域内有许多块。让我们放大其中一个区域。

现在你可以看到一个区域内有16个区块:

这意味着延迟为16,块大小为128个扇区。

RAID 0(或10或1E),块大小128个扇区

这里是RAID 0的一个示例:

但是,RAID 10或1E或其他级别(如果我们没有确定正确的时间段)看起来完全一样。如果使用这种配置,应该首先查找RAID-5或6的直方图。那么我们就可以说它是0,10或者1E。这些级别没有XOR、Reed-Solomon或HS模块,因此我们看不到“空”模块。此外,我们不能说RAID中有多少个磁盘,因为我们看到不同数量的驱动器有相似的模式。

JBOD或非RAID驱动器

现在看看JBOD或非RAID驱动器的直方图。您可以看到根本没有任何障碍:

一个驱动器未使用,一个驱动器丢失

未使用的驱动器是不属于特定RAID阵列的驱动器。它可以是备用驱动器,也可以是用于存储操作系统数据的驱动器。

 

在图片上,您可以看到有4个属于RAID 5的驱动器,由5个具有512扇区块大小的驱动器组成。最后一个是陌生人。此驱动器的直方图不同于所有其他驱动器。结论:最后一个驱动器未使用。

我们只有5个成员中的4个,所以一个成员丢失了。

同样的想法适用于来自不同阵列的驱动器,它们的直方图会有所不同。

 

因此,我们看到每个RAID级别都有一个独特的直方图,它可以说明很多关于配置的信息,甚至可以称为它的“指纹”。

从直方图中我们能得到什么?

因此,直方图本身就为我们提供了大量关于阵列的信息:

  • 块大小

  • RAID级别

  • 成员计数

  • 耽搁

  • 一组可能的起始LBA

  • 丢失和未使用的驱动器

但是驱动顺序呢?

这里是一个RAID 5的示例,它包含5个成员以及所有成员的直方图。在您看来,有多少种驱动顺序是可能的?

所有驱动器的直方图允许我们设置XOR对角线。RAID 5中总共使用了4种算法。对于每种算法,我们可以用这条对角线来指定确切的顺序。数据提取器RAID版有很多方法可以找到正确的选项并检查它。我们不会详细讨论,因为这是另一篇文章的主题。但是,简而言之,最简单的方法是尝试所有4个选项。

为此,您需要能够动态构建RAID并查看各种配置,而不是为每个配置制作映像。PC-3000 RAID系统能够快速更改RAID参数并立即观察结果。所以花不到一分钟就能完成4个配置。

RAID 6和5EE也是同样的情况,但是没有太多的选项,对于每种算法,您需要选择先使用哪个块——XOR还是RS。

总之,使用文件雕刻结果的统计处理的建议方法-也称为直方图-将数百万个选择减少到几个可能的选择。换句话说,它使复杂的RAID数据恢复问题变得简单!

 


一站式数据恢复站点


版权声明:转载请注明出处:https://it0519.com/news_26/87.html

发表评论

点击我更换图片

评论列表

 
QQ在线咨询
服务咨询热线
15295188298
微信号
weixin