原文: http://www.groad.net/bbs/read.php?tid-2052-ds-1.html
EXT2 文件系统文件管理概念图如下所示:
对于一个磁盘分区来说,在被指定为相应的文件系统后,整个分区被分为 1024,2048 和 4096 字节大小的块。根据块使用的不同,可分为:
- 超级块(S): 这是整个文件系统的第一块空间。包括整个文件系统的基本信息,如块大小,指向空间 inode 和数据块的指针等相关信息。
- inode块(I) : 文件系统索引。它是文件系统的最基本单元,是文件系统连接任何子目录、任何文件的桥梁。每个子目录和文件只有唯一的一个 inode 块。它包含了文件系统中文件的基本属性、存放数据的位置等相关信息。
- 数据块 : 具体存放数据的位置区域。为了提高目录访问效率,Linux 还提供了表达路径与 inode 对应关系的 dentry 结构。它描述了路径信息并连接到节点 inode,它包括各种目录信息,还指向了 inode 和超级块。
每个文件有两部分组成: 一部分是 inode 块,另一部分是数据块,数据块用来存储数据。inode 块用来存储数据索引信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。操作系统根据用户指令,通过 inode 值就能很快找到相对应的文件。在 Linux 下可以通过 "ls -li" 命令查看文件的 inode 信息。硬连接和源文件具有相同的 inode 。
目录文件及常规文件的存储方法:
下图是目录文件及常规文件存储概念图:
在上图中,inode 值为 3920 的文件是目录文件,其数据区位置是 6829。在目录文件的数据区中,记录着该目录下的各种文件名和 inode 之间的对应关系。如在目录数据区中 3920 记录着当前目录 ".“ ,15 记录着上级目录 ”..“,以及 Xyz 文件对应的 inode 位置,其中 Xyz 文件对应的 inode 为 8102,而在 8102 中,记录着文件真正的数据位置 9023 。