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