管乐乐,袁建国,张曦
基于特定扇区定位的磁盘阵列结构分析
管乐乐,袁建国,张曦
随着大数据时代的到来,对海量数据的安全性需求备受瞩目。当磁盘阵列出现瘫痪时,为能够尽快解决数据恢复困难的问题。有针对性地对磁盘阵列中数据的存储特性、FAT和NTFS文件系统结构进行了分析研究,确定磁盘阵列数据块及校验块排列规律,根据特殊扇区创新地提出了基于特定扇区定位的磁盘阵列结构分析方法,总结出物理硬盘与逻辑硬盘的地址映射关系,能够在两块以上磁盘离线时高效分析磁盘阵列相关结构参数,具有较强的实用性与通用性,使磁盘阵列数据恢复工作达到事半功倍的效果。
磁盘阵列;文件系统;数据恢复;地址映射
随着大数据时代的到来,对海量数据的安全性需求备受瞩目。为提高数据的可靠性,大型服务器均采用了磁盘阵列技术,即RAID(Redundant Array of Independent Disk)独立冗余磁盘阵列。根据存储结构的不同,RAID有 RAID0、RAID1、RAID4、RAID5、RAID6、RAID 1E、RAID DP等多种类型[1]。其中 RAID5利用奇偶校验的存储结构,将奇偶校验码分散的存储在各个子硬盘中,凭借其读写速度快、数据可靠性高、实现成本低的优势成为目前应用最为广泛的阵列类型。虽然RAID5磁盘阵列拥有众多优点,但是它的局限性是最多允许有一块硬盘发生故障。当两块硬盘同时离线时,如何快速恢复服务器数据成为至关重要的问题。
目前市场上已有很多RAID数据恢复软件,但很多软件仅能在知道盘序、块大小、校验块循环方式、数据块写入方式等基本参数的前提下进行RAID模拟与重组[2]。某些软件能够在校验块判定的基础上进行结构分析,但这些软件一般需要进行扇区采样。采样量较小的软件很多时候无法正确得到结构参数,采样量较大的软件又往往需要进行全盘分析,耗时且有时也很难得到正确参数。因此为实现数据恢复的目的,必须进行进一步手工分析。
组成RAID5至少需要3块硬盘,数据按照固定的大小分段写入到各个磁盘中,每个数据段组成RAID磁盘阵列的“块”,块大小总是2的整数次幂个扇区。每个磁盘中的块都从0开始编号,各个磁盘中相同编号的数据段称为条带,最终组成的RAID磁盘阵列的块号就是条带号[3]。
RAID5的工作原理就是在同一条带内用一个数据块大小的空间存放同条带内其他数据块相互异或计算的结果,将异或的结果设为奇偶校验块P[4]。假设有4块硬盘组成磁盘阵列,在第1个条带内,校验块的内容校验块存放的位置有两种方式[5],一种是左循环,一种是右循环。两种循环方式的区别是,左循环第一个校验块位置在第一个条带的最后一个块内,然后随着条带数的增加校验块存储位置依次向左递减;右循环对应相反方向,第一个校验块存储在第一个条带的第一个块内,依次向右递增。
非校验块的部分称之为数据块,数据块依据两种顺序写入磁盘阵列中——同步和异步。区别在于当一个条带内数据写完之后,下一条带数据块写入的位置。异步数据在写入时无需考虑校验块的位置,按顺序写满一个条带后,下一条带依旧按第一条带写入的顺序进行。而同步数据在写入下一条带之前,首先,需要确认校验块位置,找到校验块后将数据写入校验块之后那个块中,然后,依次往后一个硬盘写,当写满后再从该条带的起始位置存储。
依据校验块循环方式和数据块写入方式的不同,RAID5磁盘阵列有4种组织形式[6],分别为:
左循环异步如表1所示:
表1 左循环异步
右循环异步如表2所示:
表2 右循环异步
左循环同步如表3所示:
表3 左循环同步
右循环同步如表4所示:
表4 右循环同步
数据恢复的过程实际上就是将各个物理硬盘内的校验块去除,按照同步或者异步顺序将各个数据块重新组合成一个逻辑硬盘。但是逻辑硬盘如何组成、按照什么顺序组成是数据恢复的关键。
在一个RAID5阵列中,逻辑硬盘的数据块是按一定的组织形式分散存储在各个物理硬盘中的,因此在组织形式未知的前提下,并不能简单地由物理数据块得到逻辑数据块。但文件系统各部分结构是按顺序排列,且某些特定扇区的特定部位也描述了有关文件系统的结构信息,因此,搜索到这些特定扇区,可以直接确定该扇区的逻辑地址(LBA)。
下面是FAT与NTFS文件系统常用的特定扇区。
2.1 MBR/EBR
使用MBR分区体系时,硬盘的0号扇区被称为主引导记录(Master Boot Recorder)扇区,由466字节的引导代码、64字节的主分区表及2个字节的结束标志“55 AA”组成。分区表负责描述硬盘内部的分区情况,一共分为四个分区表项,每个分区表项占16字节,最多可以描述4个主分区[7]。
如果硬盘存在扩展分区,则存在扩展引导记录 EBR(Extended Boot Record)扇区。在EBR中最多只允许记录两个分区表项,一个是用于描述一个文件系统分区,另一个用来描述一个扩展分区。EBR为一链表结构,结合MBR扇区,可以确定每个EBR扇区的逻辑LBA。
2.2 DBR
从MBR位置继续向下搜索“55AA”,搜到的特定扇区为第一个分区的DBR,MBR内偏移1BEH~1CDH位置为第一个分区表项,即指示了第一个分区的DBR所在位置,因此,DBR的逻辑LBA可以由第一个分区表项的值读出。
如果逻辑硬盘有多个分区,则存在多个DBR扇区可以定位其逻辑LBA。对于NTFS分区,分区的最后一个扇区是DBR备份扇区,因此,其逻辑LBA也是确定的。
2.3 FAT表项
一个 FAT文件系统可以分为 3个部分:保留区、FAT区和数据区。FAT区由两个大小相等、内容相同的FAT链表组成,分别称其为FAT1和FAT2。文件以簇的形式存储在数据区内[8]。而每个簇文件系统都会为其设置一个簇号,这个簇号就存储在FAT表内。FAT表用以描述文件簇的分配状态及标明文件或目录的下一簇的簇号。FAT1紧跟在保留区域之后,FAT2存储在FAT1之后。FAT32文件系统中FAT表开头固定为“F8FFFF 0F”。
通过文件系统的引导扇区提供的参数信息,可以得出FAT表的起始扇区:
FAT1起始扇区=保留扇区数+DBR扇区数
FAT2起始扇区=保留扇区数+DBR扇区数+FAT表大小
2.4 MFT
一个NTFS文件系统大致可以分为引导区、MFT(Master File Table主文件表)区、MFT备份区、数据区和DBR备份扇区几个部分。每个MFT项为两个扇区大小,且开头固定为“46494C45”(明文为FILE)。第一个MFT项描述MFT自身,第二个MFT项描述MFT Mirror(MFT备份)。
DBR内偏移30H-37H、38H-3FH分别描述了MFT与MFT备份的起始簇号,据此确定这两个MFT项所在扇区的LBA。
在Windows XP及以后操作系统生成的NTFS文件系统中,每个MFT项中2CH-2FH处还记录了MFT记录编号,而MFT记录编号是由0开始连续编号,因此,这些MFT项所在扇区的逻辑地址均可确定。
2.5 FAT特殊目录项
FAT文件系统共有4种目录项:短文件名目录项、长文件名目录项、卷标目录项、“.”目录项和“..”目录项。其中前3种目录项的判定难度比较大,因为在恢复数据之前,根本不知道逻辑硬盘中的文件名称,无法通过文件名去定位实际目录项位置。而“.”目录项和“..”目录项在表示文件名位置有着固定规律,搜索“2E20202020202020”定位表示文件夹的目录项,通过读取该目录项内的参数,直接算出对应的起始LBA位置。
RAID5阵列的结构参数主要有:盘序、块大小、起始位置、组织形式。
3.1 盘序
盘序,即组成磁盘阵列后每块盘的组织顺序,在拆卸前应做好标记。
3.2 块大小
块大小即分割数据块进行存储时的大小单位。判断块大小的原理是相邻硬盘同条带内同位置的FAT表项或MFT项之间所占用的空间是一个块的大小。
在FAT32文件系统中,首先搜索 “F8FF FF0F”定位到 FAT表区,文件分配表内的数据表示表示文件的簇的位置,若文件系统内碎片不是很多,同一个文件的簇号应该是连续存储的,利用这一特点进一步确定数据块大小,遍历整个文件分配表,找到至少有3个连续簇号的位置,取中间的簇号值记录下来(记为 M1),同时在相邻硬盘定位到同条带的相同位置,记录其簇号为M2。
则磁盘阵列对应的块大小扇区:M=(M1-M2)×每个FAT表项的字节数÷512其中对于 FAT32文件系统,每个FAT表项为4个字节,而对于FAT16文件系统每个FAT表项为2个字节。
在 NTFS文件系统中,首先搜索“46494C45”定位到MFT区,然后定位到相邻硬盘的相同位置。分别记下各自的MFT记录编号M1、M2,由于一个MFT项占用2个扇区,故磁盘阵列对应的块大小扇区数M=2×(M1-M2)。在恢复实践中,块大小大多为128个扇区或64个扇区。
3.3 起始位置
通常磁盘阵列均从0扇区开始储存数据,但有的结构起始位置会有一定偏移,实践中可通过搜索MBR扇区确定。
3.4 组织形式
在组织形式确定时,由物理地址到逻辑地址的映射关系是确定的。因此,验证该映射关系的一致性即可辅助分析磁盘阵列的组织形式。RAID5阵列的4种组织形式对应物理扇区到逻辑扇区4种不同的映射关系。通过特定扇区去匹配映射关系是确定组织形式的有效途径。
首先,循环方向确定了校验块的存储顺序。在 N个磁盘组成的阵列中,由于每个条带中只有一个校验块。因此,每隔N个条带,校验块的写入规则将循环一次。设这N个条带的数据为一个分组,每个组内只有数据块内的数据有效。每个组有 N个校验块,故一个组包含的数据块个数恒为N2-N。假定某扇区逻辑LBA为X,物理LBA为Y,则该扇区之前存在的分组个数为
该扇区所在的条带号为L=YdivM。在右循环条件下,该条带中校验块Q所在盘号应为;在左循环条件下,校验块Q所在盘号应为
无论何种方式,在特殊扇区之前所有条带内的数据块均有效,每个条带内包含N-1个有效数据块,1个校验块,因此,前L-1个条带中对应的逻辑扇区总数是固定为
对于同步异步方式,数据块的写入由该特定扇区所在块与校验块 Q的相对位置决定,设该特殊扇区所在物理硬盘的盘号为n。
当nQ时,即该扇区所在数据块在校验块之后,同步方式数据块是从校验块后的一个块开始写入。因此对于数据块在校验块之后这种情况,第L条带的逻辑扇区个数为(Q-1)×M ,对于异步方式还需要加上校验块之前的数据块,对应逻辑扇区个数为(N-Q+1)×M 。综上所述总结出当n>Q时,对应逻辑扇区个数X如下:理论上在盘序确定的条件下,通过验证至少N-1个特定扇区的物理逻辑映射关系即可确定阵列的组织形式。但在恢复实践中,经常出现盘序遗忘或标记错乱的情形。此时则需要更多的特定扇区去验证盘序。
通过文件系统中特定扇区的查找定位,确定其逻辑扇区LBA,验证与四种RAID5结构下物理逻辑地址映射关系的匹配性,可以有效确定磁盘阵列的结构参数。其它磁盘阵列如RAID5E、RAID6、RAID ADG等都可以在正确表达地址映射关系后利用本文所述特定扇区定位来进行结构分析。本文所做探讨具有较强的通用性。
[1]刘永刚,袁建国.深度剖析:硬盘固件及数据恢复[M].北京:电子工业出版社出版社,2013:120-140.
[2]李清.RAID5磁盘阵列数据恢复[J].中国新通信,2013,15(10):4-5.
[3]余勇,熊刚,李希宁,等.利用空闲空间抗两个磁盘失效的RAID5阵列算法[J].电子测试,2013(21):46-52.
[4]鲁恩铭,段益群.RAID5结构剖析及其数据恢复策略研究[J].电脑开发与应用,2012,25(1):6-7,27.
[5]徐伟,朱旭东,刘浏.基于备份的RAID5在线重构框架[J].高技术通讯,2012,22(1):28-34.
[6]蔡向阳.磁盘阵列的数据恢复探析[J],软件导刊,2012,11(10):132-134.
[7]马林.数据重现—文件系统原理精解与数据恢复最佳实践[M].北京:清华大学出版社,2009,503-530.
[8]张东.大话存储 2:存储系统架构与底层原理极限剖析[M].北京:清华大学出版社,2011:216-245.
[9]刘伟.数据恢复技术深度揭秘[M].北京:电子工业出版社,2010,40-139.
[10]KUMAR M.530 chemical shifts and coupling constants for c 7 h 11 p[M]:Springer Berlin Heidelberg,2013:539-539.
Structure Analysis of RAID Based on Particular Sectors Positioning
Guan Lele, Yuan Jianguo, Zhang Xi
(PLA Unit 61660, Beijing 100089, China)
With the advent of the era of big data, security requirements for massive data are concerned. When the Redundant Array of Independent Disk(RAID)is paralyzed, it should be able to deal with this difficult issues of data recovery as soon as possible. Targeted analysis and research of the storage characteristics of the RAID data, FAT and NTFS file system structures are made to confirm the permutation regulation of data block and check block in the disk array. An analytical method of disk array structures based on particular sectors positioning is creatively proposed. The address mapping between logical disks and physical disks is summed up. It can analyze the related structural parameters of RAID with high efficiency when more than two disks are offline. This method has strong practicality and universality. It makes the RAID data recovery more efficient.
RAID; File System; Data Recovery; Address Mapping
TP309
A
2015.02.05)
1007-757X(2015)05-0030-03
管乐乐(1986-),女(汉族),辽宁大连人,中国人民解放军61660部队,助理工程师,本科,研究方向:网络安全防护与数据保护,北京,100089袁建国(1985-),男(汉族),山西朔州人,中国人民解放军61660部队,工程师,硕士,研究方向:网络安全防护与数据保护,北京,100089张 曦(1980-),男(汉族),江苏睢宁,中国人民解放军61660部队,工程师,本科,研究方向:网络安全防护与数据保护,北京,100089