我们可以把一个磁盘分成一个或多个分区。每个分区可以包含一个文件系统(见图4-1)。
图4-1 磁盘、分区和文件系统
i节点(i-node)是固定长度的记录项,它包含有关文件的大部分信息。
如果更仔细地观察一个柱面组的i节点和数据块部分,则可以看到图4-2中所示的情况。
注意图4-2中的下列各点:
lrwxrwxrwx 1 root root 8 01-02 05:56 lib -> /usr/lib
该目录项中的文件名是3个字符的字符串lib,而在该文件中包含了8个数据字节/usr/lib。该i节点中的文件类型是S_IFLNK,于是系统知道这是一个符号链接。
我们说明了普通文件的链接计数概念,但是对于目录文件的链接计数字段又如何呢?假定我们在工作目录中构造了一个新目录:
$ mkdir testdir
图4-3显示了其结果。注意,该图显式地显示了.和..目录项。
图4-3 创建了目录testdir后的示例柱形组
对于编号为2549的i节点,其类型字段表示它是一个目录,而链接计数为2。任何一个叶目录(不包含任何其他目录的目录)的链接计数总是2,数值2来自于命名该目录(testdir)的目录项以及在该目录中的.项。对于编号为1267的节点,其类型字段表示它是一个目录,而其链接计数则大于或等于3。它大于或等于3的原因是,至少有三个目录项指向它:一个是命名它的目录项(在图4-3中没有表示出来),第二个是在该目录中的.项,第三个是在其子目录testdir中的..项。注意,父目录中的每一个子目录都会使该父目录的链接计数增1。
这种格式与UNIX文件系统的经典格式类似。
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。