使用过Linux的同学应该对Ext4文件系统都有了解。在Linux文件系统中一切皆文件,同样目录也是文件的一种类型。熟悉Linux服务器的同学经常会看到如下内容,这个是某个目录的列表内容。每一行的前面形如drwxr-xr-x的内容为文件的属性,而第一个字符d则表示这个文件是一个特殊的文件,也就是目录(directory)。第一个字符是用于标示文件类型的,对于块设备则是b,字符设备是c等等,每种特殊的文件这个字符都是不同的。
图1 Linux中目录列表
对于有图像界面(GUI)的情况下,目录的呈现形式更加丰富,如图2所示,目录中有子目录和文件。同时有些文件(例如图片和PDF等)还可以呈现其概览。这样在浏览文件的时候很有帮助,可以很方便的找到想要的文件。
图2 目录呈现形式
什么是目录
废话说了一大箩,下面我们进入正题。到底什么是目录?目录的本质是什么?我们知道在Ext4中文件是被组织成树型结构的,而目录就是其中的中间节点。如图是一个目录结构的基本示意图。

文章详细介绍了Linux Ext4文件系统中目录的本质,指出目录是一个存储inode id的容器,而非实际存储文件数据。通过目录数据结构和磁盘数据布局,解析了目录条目的组成,包括inode id、文件名大小和文件名。为了解决大量文件查询性能问题,文章提到了Ext4的目录索引特性,即使用哈希树来加速名字查找。通过对目录哈希树的分析,展示了其如何提高查找效率。
订阅专栏 解锁全文
1091





