linux ext3 目录文件结构,Linux下Ext3文件系统结构研究

苏神保 刘丹

60851f04f6d89b5ffb1f9673276139e9.png

f60b214b5dc420bb355e17348db78faf.png

c215d89cb16494fdf7e63f8409685483.png

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

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

1 Ext3文件系统基本介绍

Ext3文件系统所在区域先是被划分为一个个的块(Block),每个块的大小都是一样的,但是对于不同的Ext3文件系统,块的大小也可能存在差别。典型的块大小有1 024字节、2 048字节或者4 096字节,在Winhex中分别为2扇区、4扇区或者8扇区。该数值将在创建文件系统时被决定,可以由文件系统的创建程序根据硬盘分区的大小来自动选择一个较为合理的值。

块是文件系统中数据的分配单元,每个块均有唯一的编号,第一个块的编号为0,此后依序排列,0号块起始于文件系统的开始扇区。

Ext3文件系统的全部空间被划分为若干个块组,每个块组内的结构都大致相同,Ext3文件系统的整体结构及第一个块组的单元结构如图1所示。

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

(1)Ext3文件系统的前两个扇区用来存放引导程序,称为引导扇区。如果没有引导程序则保留不用,一般为空扇区,没有任何数据。

(2)Ext3文件系统的第3个扇区、也就是2号扇区是超级块,超级块占用2个扇区,用于存储文件系统的配置参数(如块大小、总块数和i-节点数)和动态信息(如当前空闲块数和i-节点数)。

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

为了系统的健壮性,Linux最初在每个块组内部对超级块和块组描述符表做了备份,但是当文件系统很大时,这将耗费很多空间,尤其是块组描述符表占用的块较多时。为此后来采用了一种稀疏的方式来存储这些备份,也就是只有在块组号是3、5、7的幂的块组(如0、1、3、5、7、9、25、27、49等)内才对超级块和块组描述符进行备份。

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

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

一般地,当块大小为8个扇区时,超级块起始于0号块,其位于0号块的2~3号扇区,0~1号扇区是引导程序或者保留扇区,4~7号扇区则是空闲的。另外,在块组号是3、5、7的幂的块组中,超级块也有相应的备份,通过在Winhex中向下搜索超级块标志53EF可以跳转至有超级块备份的相应块组中去。Ext3文件系统的超级块是一个至关重要的扇区,其中记录的参数非常多。这里给出了某一Ext3文件系统的0号块组的超级块如图2所示。而该超级块中主要参数及含义详见表1。

在上述Ext3文件系统中,超级块的参数描述了文件系统的总块数是13 107 200,每块组包含的块数是32 768,块大小、即每块包含的扇区数为22×1 024=4 096B=8S,而每块组包含的扇区数为32 768×8=262 144 S,總块组数为13 107 200/32 768=400,分别编号为0~399。

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

Ext3文件系统的每个块组描述符占用32字节,有超级块备份的块组都包含有块组描述符备份,这是用来描述该块组中的块位图的起始块号、i-节点位图的起始块号以及i-节点表的起始块号等信息,一个Ext3文件系统有多少个块组,都需要在块组描述符中体现出来。而本文中研发得到的某一Ext3文件系统0号块组的块组描述符实例则如图3所示。此处以0号块组描述符为例,其hex数值代表的含义详见表2。

由表2可知,在该块组中,块位图开始于1 025号块,i-节点表位图开始于1 026号块,i-节点表开始于1 027号块,块组中已用块数32 768-31 228=1 540,已用i-节点数为8 176-8 124=52个。块位图描述该块组中块的使用情况,i-节点位图描述该块组中i-节点的使用情况。因篇幅有限,文中不再一一赘述。

4 Ext3文件系统的i-节点分析

Ext3文件系统的i-节点用来存储与文件相关的除文件名以外的所有信息,每个块组中都有一个自己的i-节点表,i-节点表由很多的i-节点组成,每个文件或者目录使用一个i-节点。i-节点表起始于i-节点位图所在块的下一个块,超级块中记录着文件系统的i-节点总数和每块组包含的i-节点数,i-节点的大小在超级块中指定,一般为128字节或者256字节。每个i-节点都有一个编号,第1个i-节点的编号为1,1~10号i-节点被系统保留,所以在超级块中会描述第一个非保留的i-节点,这个值一般为11,前10个保留的i-节点在i-节点位图中被表示为已分配,其中1号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] 刘伟. 数据恢复技术深度揭秘[M]. 北京:电子工业出版社,2010.

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

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

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

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

[6] 夏煜,郎荣玲,戴冠中. Linux操作系统的文件系统建立过程的研究[J]. 计算机工程与应用,2001(15):90-92.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux 文件系统有很多种类型,其中一种是类似 ext3文件系统是 ext4。 ext4 是一种 Linux 下的文件系统,与 ext3 相比具有更高的容量和性能,同时还支持更大的单个文件大小和整个文件系统大小。 ### 回答2: Linux文件管理系统是一种用于存储和管理文件的软件系统,类似于ext3。它是Linux操作系统中最常用的文件系统之一。 Linux文件管理系统的目标是提供高性能、高可靠性和数据安全性。它能够有效地组织和管理大量文件,支持多种文件的操作和管理。 类似于ext3文件系统Linux文件管理系统采用了日志式文件系统(Journaling File System)的设计思想。日志式文件系统在写入文件时,会先将相关的操作记录在日志中,然后再将数据写入磁盘。这样可以保证文件系统的一致性和可靠性,在意外系统崩溃或掉电的情况下,可以通过日志恢复损坏的文件系统Linux文件管理系统还支持文件的权限管理和访问控制。每个文件目录都有相应的拥有者和权限设置,可以限制不同用户对文件的访问和操作权限,保护数据的安全性。 另外,Linux文件管理系统还支持文件的压缩和加密。用户可以对文件进行压缩,减小文件的大小,节省存储空间。同时,用户还可以对文件进行加密,只有具有相应密钥的人才能解密和访问文件内容,增强了文件的安全性和保密性。 总之,Linux文件管理系统是一种高效、可靠、安全的文件管理系统,类似于ext3。它可以帮助用户有效地组织和管理文件,保护数据的完整性和安全性。 ### 回答3: Linux文件管理系统是一种类似于ext3文件系统。它被广泛应用于Linux操作系统中,具有良好的可靠性、稳定性和性能。 类似于ext3文件系统Linux文件管理系统采用了类似的组织结构和存储方式。它使用了inode来存储文件的元数据信息,包括文件类型、权限、所有者等。同时,它使用了数据块来存储文件的实际内容。 与ext3相似,Linux文件管理系统支持文件目录的层次结构,提供了各种命令和工具来进行文件目录的创建、删除、查找等操作。它还支持文件目录的权限管理,可以设置不同用户对文件的读写执行权限。此外,Linux文件管理系统还提供了文件系统日志功能,能够保护文件系统免受意外断电等情况的影响。 尽管类似于ext3,但是Linux文件管理系统在一些方面也有一些不同之处。例如,它可能采用不同的调度算法来提高磁盘访问性能。此外,Linux文件管理系统还支持更高级的特性,如文件系统快照、RAID等。这些特性进一步增强了文件系统的可靠性和可用性。 总之,Linux文件管理系统是一种类似于ext3文件系统,它在Linux操作系统上运行,并具有类似的组织结构和存储方式。它是Linux操作系统的重要组成部分,为用户提供了可靠、稳定和高性能的文件管理功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值