目录结构如何存储在UNIX文件系统中?


8

我已经读到每个目录通过使用文件名和索引节点对的列表来存储其内容(文件和子目录)。但是我没有得到任何有关它们如何存储的参考资料。

它们是使用数据块(如普通文件)还是其他我不知道的方式存储在其父目录的inode上?

感谢您的澄清。


Unix没有唯一的方式存储文件。类似于Windows没有任何方式存储文件。在这两种情况下,都取决于所使用的文件系统。(FAT,NTFS,ext2,UFS等)
Hennes

对于文件系统,磁盘上的目录结构在dirent.h中定义,并且应该使用libcalls opendir / readdir / closedir等访问内容。
ott-- 2012年

Answers:


10

请参阅文件系统内部结构,它以一种非常简单的方式概述了典型Unix文件系统的内部结构。

在此处输入图片说明

大多数Unix文件系统包含

  • 引导块
  • 超级块(磁盘几何,分区布局,inode计数等)
  • 索引节点块
  • 数据块

现代文件系统包含其他结构。

超级块中的一件事是根目录的索引节点的位置。

目录是一种特殊格式的文件。与所有普通文件一样,它具有数据块。

您可以在Linux文档项目:文件系统中看到这一点。

在此处输入图片说明

您可以debugfs用来探索这些结构。


2
“目录是一种特殊格式的文件。与所有普通文件一样,它具有数据块。” 那么目录是否在其数据块中存储了它们的文件名-节点对(第一张图片的最左侧表,或第二张图片的行)?
2012年

1
@Oka:是的。
RedGrittyBrick

因此,很明显,目录是文件,因此将其存储在数据块中。ext4例如,文件系统中的每个目录(用ext4_dir_entry_2263个字节表示)一个4KB的块可以存储大约15个目录条目?
campescassiano
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.