ext2 文件系统结构与目录文件及常规文件存储方法

来源:互联网 发布:url域名 网站 ip的区别 编辑:程序博客网 时间:2024/04/30 08:25

原文: http://www.groad.net/bbs/read.php?tid-2052-ds-1.html

EXT2 文件系统文件管理概念图如下所示:

对于一个磁盘分区来说,在被指定为相应的文件系统后,整个分区被分为 1024,2048 和 4096 字节大小的块。根据块使用的不同,可分为:

  1. 超级块(S): 这是整个文件系统的第一块空间。包括整个文件系统的基本信息,如块大小,指向空间 inode 和数据块的指针等相关信息。
  2. inode块(I) : 文件系统索引。它是文件系统的最基本单元,是文件系统连接任何子目录、任何文件的桥梁。每个子目录和文件只有唯一的一个 inode 块。它包含了文件系统中文件的基本属性、存放数据的位置等相关信息。
  3. 数据块 : 具体存放数据的位置区域。为了提高目录访问效率,Linux 还提供了表达路径与 inode 对应关系的 dentry 结构。它描述了路径信息并连接到节点 inode,它包括各种目录信息,还指向了 inode 和超级块。
就像一本书有封面、目录和正文一样。在文件系统中,超级块就相当于封面,从封面可以得知这本书的基本信息; inode 块相当于目录,从目录可以得知各章节内容的位置;而数据块则相当于书的正文,记录着具体内容。

每个文件有两部分组成: 一部分是 inode 块,另一部分是数据块,数据块用来存储数据。inode 块用来存储数据索引信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。操作系统根据用户指令,通过 inode 值就能很快找到相对应的文件。在 Linux 下可以通过 "ls -li" 命令查看文件的 inode 信息。硬连接和源文件具有相同的 inode 。

目录文件及常规文件的存储方法
下图是目录文件及常规文件存储概念图:

在上图中,inode 值为 3920 的文件是目录文件,其数据区位置是 6829。在目录文件的数据区中,记录着该目录下的各种文件名和 inode 之间的对应关系。如在目录数据区中 3920 记录着当前目录 ".“ ,15 记录着上级目录 ”..“,以及 Xyz 文件对应的 inode 位置,其中 Xyz 文件对应的 inode 为 8102,而在 8102 中,记录着文件真正的数据位置 9023 。