大家好!
今天,我们想谈谈配置丢失的RAID阵列以及如何从中提取数据。本文对数字取证专家和数据恢复工程师都将很有用。让我们首先了解什么是RAID。
RAID。它是什么?
RAID是独立驱动器的冗余阵列。系统将其显示为具有块访问权限的虚拟存储设备。本质上,RAID是虚拟驱动器。
组装RAID的目的是创建具有更高访问速度,更大容量和更高可靠性的存储。
人们为什么使用RAID?家庭用户可以组装阵列来创建备份或存储他们的照片和文档的个人档案,以及家庭多媒体库(电影,音乐等)。公司将RAID用作服务器上的数据存储。这可以是普通(共享)文档存储,备份存储,数据库,会计数据等。
简而言之,RAID是用于存储较有价值数据的大容量存储。
那么如何处理呢?
RAID映像
有两种方法可以制作RAID映像。
第一个是在被检查的机器上获取图像。
此方法的主要优点–无需了解数组的排列方式。但是,这种方法有很多 缺点,主要缺点 是在运行中的检查机器上做某事是不好的。那么,有哪些可用选项?
- 我们可能会运行服务器并从USB闪存驱动器或Live CD启动一些复制软件;尽管操作系统可能会在工作期间发生某些变化,但这显然是不好的。
- 可以从CD或闪存驱动器启动OS并启动软件–无法保证它能正常工作,因为例如,许多阵列是软件阵列(包括广泛使用的NAS),因此RAID,则需要运行适当的软件。另外,如果使用此方法,将无法访问RAID中未使用的磁盘区域。
因此,总的来说,我们不能确定数据将保持不变。
第二种方法是分别制作每个驱动器的映像。然后以只读模式组装数组。
这是确保数据完整性的唯一方法,也使我们有机会研究HDD的所有区域(RAID可能不会从头到尾使用整个磁盘,而只会使用其内部部分磁盘。) ,可能有未使用的区域可以存储隐藏数据)。
该方法的主要缺点是需要组装阵列,即需要确定其配置。因此,为了正确执行所有操作,我们需要定义配置。
RAID组装
要组装RAID,必须确定:
- 使用了哪些驱动器:有时并非所有磁盘都已使用(可能有多余或多余的磁盘用于“系统”),有时磁盘数量不足(1个驱动器可能已损坏或被丢弃,但阵列仍可运行由于冗余)等等。
- 阵列中驱动器的顺序。有时,它反映了磁盘在计算机内部的放置顺序,但不要以此为前提。
- RAID级别和算法(如果有)
- 用于条带化的块大小
- RAID中使用的开始和结束LBA(不一定使用从0到MaxLBA的驱动器)
- 延时。重复是Compaq和HP阵列(HP购买的Compaq)的共同特征。
为什么定义参数会出现问题?答案很简单–所有可能的配置数量巨大!仅按驱动器的顺序就可以为我们提供4种驱动器的2种变体,5种驱动器的100种变体和7种驱动器的数千种变体。而且,我们还有许多其他参数可乘以可能的配置数量。
当然,有一些简单的情况,例如:
- 具有众所周知的RAID元数据格式的软件阵列
- 少量成员和简单级别(例如,条纹或镜像)
对于没有经验的用户,所有其他情况可能真的很难。此外,在现实生活中,您必须处理使其变得异常复杂的因素:
- RAID元数据丢失,损坏或不正确(“先前”磁盘寿命中遗留了,或者是阵列重新初始化的结果)
- RAID上的文件系统已损坏,并且很难使用其元数据来定义配置(病毒或恶意因素可能会损坏FS)
- 有些成员可以不使用-是热备用磁盘或系统磁盘。
- 成员的另一个常见问题–您可能从许多不同的阵列中获得了一堆驱动器。因此,您需要先了解哪个磁盘来自哪个阵列
- 下一个问题–具有奇异配置的阵列,例如,可能使用了从磁盘开始的异常移位或延迟,或者其他任何原因。
- 同样,在破坏性重建之后通常还需要恢复数据–使用错误参数重建阵列的操作会导致数据损坏(重建本身可能是调查的原因)
检查期间组装RAID是必需的操作。即使此任务可能非常非常困难。
成功秘诀
有什么可以帮助我们应对所有困难?它是几种思想和方法的联合组合:
- 第一个是文件雕刻(Data Extractor中的“ RAW Recovery”模式),它能够确定文件整数部分的大小
- 第二个是对Carver文件找到的结果进行统计处理。单个文件可能会给出错误的图片,但是它们的设置显示出非常好的结果
- 第三个是能够快速检查假设的能力,为此,我们需要一个工具来执行与RAID转换相关的所有转换,换句话说,我们需要即时RAID重建。为每个假设检查构建图像需要很多时间
接下来,我们将更详细地研究所有这些内容。
文件雕刻基础
文件雕刻(在PC-3000中为“ RAW恢复”模式)是一种使用文件格式的知识而无需文件系统信息的情况下查找文件头的方法。较简单,较常用的方法是搜索文件开头的签名。例如,PNG图像在文件的开头具有签名“%PNG”。对于其他文件类型,签名当然是不同的。
文件格式的知识使我们不仅可以找到标头,还可以从下面估算文件的整数部分。
例如,PNG文件由一系列块组成,每个块都具有签名,大小和校验和。即 我们可以足够可靠地验证它。这意味着,如果文件没有损坏或碎片化,我们可以从头到尾对其进行检查,并说它是“完整”文件,并且文件大小为N个字节。
如果文件不完整或部分文件被重写或其他内容,那么我们可以说这里是标题,前几部分是完整的。它们占用K个字节。损坏后的某个地方。它可以是K + 1字节或K + 100字节-未知。但是前K个字节完全是完整的。
对于不同类型的文件,检查整数部分的能力和此检查的准确性非常不同。如本例中那样,可以从png检查整个文件。在某个地方,我们只能从头开始检查几百个字节,例如,对于BMP文件,它是否完整或损坏都无关紧要。
能够找到标头并检查许多不同文件类型的整数部分是PC-3000 RAID系统的独特功能,而其他工具则没有。
RAID成员上的文件雕刻
让我们看一个简单的RAID 5左同步(LS),它由3个成员组成。如果您曾经尝试过从RAID恢复数据,则您应该熟悉此配置:
现在让我们看一下其成员之一,例如,成员A:
该RAID表描述了转换的重复规则。图片仅显示2次完整重复,第3次开始。由于它是RAID成员,因此它存储数据块和冗余块– XOR。数据块不会像0、1、2、3,…等一个接一个地走,它们之间有间隙– 0、3、6等,因为其他块存储在其他成员上。
现在让我们谈谈在RAID成员上文件雕刻的工作方式。
该成员存储数组的各个块,因此文件的整数部分受块大小的限制。
- 文件可能在数据块内的某处开始和结束
- 如果文件很大,由于文件的另一部分存储在另一个成员上,因此它将在块末尾中断
在这里,我们看到了概率极小的情况:
RAID成员上文件的整数部分:
- 不能从一个块移动到另一个块
- 不能在XOR块内
当然存在这种情况,但是它们的数量比“正常”情况小得多(如上一张幻灯片所示)
结论是我们只能在单个数据块中找到文件的整数部分。
雕刻数据的统计处理
RAID中的数据转换规则是定期的。在我们的例子中,每3个块中就有2个实际上是数据块,较后一个是XOR:
如果我们仅求和每个块的每个扇区中有多少个整数部分,我们将看到以下内容:
- 数据块中有很多文件的整数部分
- XOR内部没有任何内容
- 您可以看到块之间的边界,因为文件没有越过块边界
让我们检查一下实践理论。只有PC-3000 RAID系统才能统计处理雕刻数据并以图形方式显示结果。在此屏幕截图中,您可以查看在解决实际情况期间获得的软件直方图:
该图片与上一张非常相似。数据块和“空” XOR块清晰可见。红线显示零值和非零值彼此相邻的位置。他们有助于查看潜在的街区边界。
一次有3个驱动器:
我们可以看到XOR块(“空”块)位于RAID上不同的成员上的不同位置。块大小等于128个扇区,并显示在直方图上(请不要忘记LBA从左到右,而不是从上到下增加。这是在宽屏显示器上查看信息的一种更方便的方法。
不同时期的直方图
周期大小是磁盘数乘以块大小和延迟。那如果我们弄错了怎么办?我们会得到什么?这是有关同一磁盘的直方图在不同期间的外观的真实示例:
- 在第一种情况下,我们在块大小上犯了一个错误–我们将块大小设置为所需大小的2倍,并且收到的周期减少了2倍,目前尚不清楚这是RAID 5
- 第二张图片–所有参数均正确,很明显,这是RAID 5
- 较后一张图片–我们选择了错误的参与者人数– 4而不是3,然后我们再次看到直方图被“打破”了
因此,如果我们以错误的周期构建统计信息,我们将看到错误的直方图。
可以将其用作快速直方图测试:计算周期并查看直方图。如果可见空白区域(如在XOR块中)–参数设置正确,否则-这可能是错误的,或者组态中没有任何XOR,RS或HS块。在现实生活中,直方图可以立即生成,也可以在几秒钟内生成。因此,这确实是一个快速测试。
不同配置的示例
现在,让我们研究一下不同配置的一些模式。图片上的所有直方图均基于实际情况。
RAID 5、8个驱动器,块大小为128个扇区
在这里,您可能会看到RAID 8配置建立在8个驱动器上,具有128个扇区的块大小:
- 为什么选择RAID 5?因为它只有一个“空”块-XOR
- 为什么要8个成员?因为期间由8个区块组成
- 此外,红色辅助线之间的距离清楚地显示了128个扇区的块大小
另外,您可以在XOR块中看到“噪声”。在这里找到了一些文件,这不是不可能的。但是,它们的数量明显少于数据块中的数量。
RAID 6(或5EE),6个驱动器,块大小256个扇区,起始LBA已转移
这是由6个驱动器组成的RAID 6或5EE:
- 为什么选择RAID 6?–因为有2个“空”块。一个是XOR,另一个是Reed-Solomon(或热备用块,如果是5EE)
- 6个驱动器,因为此期间有6个块
- 一个“峰值”的长度是256个扇区,这是块大小
在这张图片中,您可以看到块的开头和结尾有两个部分:
发生这种情况是因为RAID并非像以前的情况那样从0开始,而是有些偏移。开头的蓝色部分的大小为64个扇区(红线上方有一个提示)。这意味着RAID以某些LBA开头,应如下所示:N * BlockSize + 64,N = 0、1、2,...。在我们的例子中,它是1088(= 4 * 256 + 64)–一些HP和Compaq阵列的典型起始LBA。
RAID 5、4个驱动器,延迟16,块大小128个扇区
在这里,您可能会看到延迟值等于16的RAID 5:
我们如何确定呢?在这里,您可以看到较右边的¼是包含服务数据的区域。红线有很多–这是“杂讯”,会在XOR中创建小的文件。总共有4个驱动器,因此我们建议这是一个RAID 4,由4个驱动器组成。(对于由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阵列的驱动器。它可以是备用驱动器,也可以是用于存储OS数据的驱动器。
在图片上,您可以看到有4个属于RAID 5的驱动器,它们是由5个具有512个扇区块大小的驱动器组成的。较后一个是一个陌生人。该驱动器的直方图不同于所有其他驱动器。结论:较后一个驱动器未使用。
我们只有5个成员中的4个,因此失去了一个成员。
同样的想法适用于来自不同阵列的驱动器-它们的直方图会有所不同。
这样,我们看到每个RAID级别都有一个独特的直方图,可以说明很多配置,甚至可以称为其“指纹”。
我们可以从直方图中得到什么?
因此,仅直方图就为我们提供了有关数组的许多信息:
- 块大小
- RAID级别
- 会员数
- 延迟
- 一组可能的启动LBA
- 丢失和未使用的驱动器
但是驱动顺序呢?
这是RAID 5的示例,其中包含5个成员以及所有成员的直方图。您认为可能有多少个驱动器订单?
所有驱动器的直方图允许我们设置XOR对角线。总共,RAID 5中使用了4种算法。对于每种算法,我们可以使用对角线指定确切的顺序。Data Extractor RAID Edition 对于如何找到正确的选项以及如何对其进行检查有很多方法。我们不会详细介绍,因为这是另一篇文章的主题。但是,总之,较简单的方法是尝试所有4个选项。
为此,您需要能够动态构建RAID并查看各种配置,而不是为每个配置创建映像。PC-3000 RAID系统具有快速更改RAID参数并立即观察结果的能力。因此,只需不到一分钟即可完成4种配置。
对于RAID 6和5EE,情况相同,但是还有很少的选择-对于每种算法,您需要选择首先使用哪个块(XOR或RS)。
综上所述,使用文件雕刻结果的统计处理(即直方图)所建议的方法将数百万的选择减少为几个可能的选择。换句话说,它使复杂的RAID数据恢复问题变得简单!