首页 > 编程知识 正文

数据结构参考书,简要说明linux文件系统类型

时间:2023-05-04 17:21:18 阅读:112694 作者:308

可靠的招牌时尚溪流

摘要:在LinuxOS操作系统中,磁盘的分区结构与Windows系统一样采用MBR或GPT磁盘分区,但文件系统的结构有很大差异。 Windows系统中常见的文件系统有FAT32、NTFS、exFAT等,而Linux系统则为Ext2/3/4。 本文以Linux操作系统常见的文件系统Ext3为例,详细介绍了该文件系统的结构,并举例说明了如何手动提取文件。

关键词: Winhex; Ext3; 块; i-节点

1 Ext3文件系统的基本介绍

Ext3文件系统的某个区域首先划分为块,每个块的大小相同,但根据Ext3文件系统的不同,块的大小可能不同。 典型的块大小为1,024字节、2,048字节或4,096字节,在Winhex上分别为2个扇区、4个扇区或8个扇区。 此值是在创建文件系统时确定的,文件系统创建程序可以根据硬盘分区的大小自动选择适当的值。

块是文件系统中数据的分配单位,每个块都有唯一的编号。 第一块的编号为0,然后依次排列,第0个块从文件系统的开始扇区开始。

Ext3文件系统的整个空间被分成几个块组,每个块组中的结构基本相同。 Ext3文件系统的整体结构和第一块组的单元结构如图1所示。

从图1可以看出,Ext3文件系统的第一块组的结构功能分析可以解释如下。

)1) Ext3文件系统的前两个扇区用于存储称为引导扇区的引导程序。 如果没有引导程序,请不要使用。 通常是空扇区,没有数据。

)2) Ext3文件系统的第三个扇区,即扇区号2是超块,超块占用两个扇区,包括块大小、总块数、inode数等文件系统的配置参数,以及当前的空闲块

)3)块组描述符表用于存储块组描述符,占用一个或多个块,并被设计为取决于文件系统的大小。 每个块组描述符主要描述诸如块位图、i-节点位图和i-节点表地址的信息。

为了系统的稳健性,Linux最初在每个块组中备份了超级块和块组描述符表,但如果文件系统较大,这将占用大量空间,特别是块组描述符表占用大量块后来,采用了稀疏的方法来存储这些备份。 也就是说,超级块和块组描述符仅在块组(例如0、1、3、5、7、9、25、27和49 )中进行备份,其中块组编号为3、5和7的幂。

) i-节点用于描述文件的元数据,每个i-节点对应于文件系统中唯一的节点号。

2 Ext3文件系统的超级块分析

通常,如果块大小为8个扇区,则超级块从0号块开始,位于0号块的2至3号扇区中,0至1号扇区是引导程序或保留扇区,4至7号扇区为空。 此外,在块组号为3、5和7的幂的块组中,超级块也有相应的备份。 通过在Winhex上向下搜索超级块标志53EF,可以跳转到包含超级块备份的相应块组。 Ext3文件系统超级块是非常重要的扇区,其中记录了非常多的参数。 这里,图2示出了某个Ext3文件系统的0号块组的超块。 该超级块的主要参数和含义见表1。

在上述Ext3文件系统中,关于超块的参数,文件系统的总块数为13 107 200,每个块组的块数为32 768,块大小,即每个块的扇区数为221 024

3 Ext3文件系统的块组描述符分析

Ext3文件系统中的每个块组描述符占用32字节,而具有超级块备份的块组包含块组描述符备份。 其用于描述块组中的块位图的开始块号、I-node位图的开始块号和I-node表的开始块号等信息,在一个Ext3文件系统中设置了几个块组本论文开发的某个Ext3文件系统0号块组的块组描述符的例子如图3所示。 在此,以0号块组描述符为例,其hex的数值所表示的含义如表2所示。

从表2中可以看到,在该块组中,块位图以1,025号块开始,I-nodetable位图以1,026号块开始,I-nodetable以1,027号块开始块位图描述块组中的块的使用情况,而I节点位图描述块组中的I节点的使用情况。 篇幅有限,文章不一一说明。

4 Ext3文件系统的I节点分析

Ext3文件系统中的I节点用于存储除与文件相关的文件名以外的所有信息,每个块组都有自己的I节点表。 I节点表由许多I节点组成,每个文件或目录都使用一个I节点。 I-node表以I-node位图所在块的下一个块开始,超级块记录文件系统的I-node总数和每个块组中包含的I-node数。 I-node的大小由超级块指定,通常为128字节或256字节。 每个i-节点都有一个编号,第一个i-节点的编号为1,第一到第十个i-节点是由系统保留的,因此超级块中会写入第一个非保留i-节点。 该值通常为11,第一个第十个保留i-节点在i-节点位图中分配,其中第一个i-节点通常用于描述故障

块,2号i-节点被分配给根目录使用,8号i-节点通常用于描述日志,如果已知一个i-节点号,就可以计算出该i-节点所在的块组,计算方法为:(i-节点号-1)DIV每块组i-节点数

在此基础上,还将计算得出在该块组中的i-节点号,计算公式为:(i-节点号-1)MOD每块组i-节点数+1

至此,可得一文件的i-节点表如图4所示。

由图4中的偏移地址0X28可知,在i-节点中用块指针描述文件内容的存放地址。每个i-节点中有15个块指针,包含12个直接块指针,1个间接块指针,1个二级间接块指针和1个三级间接块指针。12个直接块指针指向文件内容的前12个数据块地址,如果文件大于12个块,则第13个块指针是一个间接块指针,由其指向的块存放的是直接块指针而不是文件内容,以此类推。当文件较小时一般只需用到直接块指针,当文件较大时才会用到间接块指针。由上述实例可知,该文件从0X28至0X57已经使用了12个直接指针块,0X58为间接块指针。如需手工提取文件,需要从i-节点0X04位置读取文件大小后换算提取。

5 Ext3文件系统目录项分析

目录项用来存放文件及目录的i-节点号、目录项的长度、文件名等信息,并实际存储在分配给目录的块中。研究得到的一Ext3文件系统的根目录如图5所示。

在图5中标注出了文件1.docx的目录项,由表3可知,该文件的i-节点号为0C000000即为12,目录项的长度为1 000、即为16,文件名的长度占用6个字节,文件类型为文件,文件名为1.docx。同理可知,2.docx的i-节点号为0D000000、即为13,目录项的长度也是1 000、即为16,文件名的长度占用6个字节,文件类型为文件,文件名为2.docx。

6 Ext3文件系统的手工提取文件实例分析

某Ext3文件系统因计算机突然断电导致无法读取文件,现需恢复该文件系统的18.docx号文件,这一过程中将会涉及的操作步骤可做完整表述如下。

由2号扇区超级块信息可知,块大小为4 096字节、即8个扇区,i-节点大小为256字节,每块组包含的块数为32 768。跳转至8号扇区、即块组描述符,找到0号块组描述符的i-节点表的起始块号,跳转过去就可到达0号块组的i-节点表位置。因1号i-节点一般用于描述坏块,2号i-节点用于描述根目录的起始块号,读取2号i-节点的直接块指针为1538号块、即12304号扇区就可跳转至根目录,依据根目录结构可知18.docx文件的i-节点号为1D000000、即为29,因每块组包含的i-节点数为8 176,故29号i-节点位于0号块组,由块组描述符再次跳转至0号块组的i-节点表,从上至下数至29号i-节点、即为18.docx文件的i-节点。具体如图6所示。

由i-节点定义可知,该文件的i-节点包含有3个直接块指针(在图6中用方框标出),分别为6 587 479、6 587 480、6 587 481号块,文件大小为12 077字节,跳转至6 587 479号块,手工提取文件即可。

7 结束语

全文借助Winhex底层十六进制数据编辑恢复软件,以Linux下Ext3文件系统为例,详细分析了该文件系统的数据存储结构原理,探讨了超级块、块组描述符、i-节点表、目录项等要素的含义,可以为专业数据恢复技术人员提供参考。

参考文献

[1] lhdbz. 数据恢复技术深度揭秘[M]. 北京:电子工业出版社,2010.

[2] mmydsp. 基于EXT3文件系统的数据库文件恢复与检验软件的开发[J]. 信息网络安全,2011(10):44-46,70.

[3] jzdfh. Ext-扩展文件系统的研究[J]. 信息系统工程,2010(8):134-135.

[4] ymdxwz,冷静的帆布鞋. Linux2.6内核下Ext3文件系统的数据结构及性能分析[J]. 南昌水专学报,2004,23(2):8-10,33.

[5] 黃步根. 数据恢复与计算机取证[J]. 计算机安全,2006(6):79-80.

[6] 狂野的小蝴蝶,干净的烧鹅,戴冠中. Linux操作系统的文件系统建立过程的研究[J]. 计算机工程与应用,2001(15):90-92.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。