磁盘、分区和文件系统组织情况
[来源:Unix环境高级编程(第2版)4.14 文件系统(P87)]
i节点数组与数据块详细组织情况
i节点包含主要信息
符号链接与硬链接
硬链接:Unix系统中每个文件都有一个唯一的索引节点,即i节点。i节点中包含一个链接计数(也叫引用计数),代表指向该i节点的目录项数(目录项=i节点号+文件名)。这种方式的链接就是硬链接。
优点:节省空间,访问快;
缺点:通常要求链接和文件位于同一文件系统中;只有超级用户才能建立指向目录的硬链接。
符号链接:一个文件的间接指针。创建符号链接需新建一个i节点,并将该符号链接指向的文件的名字(包含路径)保存在i节点所指向的数据块中。
优点:跨文件系统;由符号连接引入文件系统中的循环很好处理。
缺点:浪费空间;速度慢
【解释:
- 创建一个硬链接只添加一个目录项即可,而创建一个符号链接要新建一个i节点,所以硬链接省空间;
- 硬链接一次就可以定位到目标i节点,而符号链接需要二次,所以硬链接速度比符号链接快;
- 同一个文件系统中的i节点标号全局有序,但是不同的一个文件与一个一个文件对应一个i节点,所有的硬链接的目录项都指向同一个i节点,即目录项中的i节点编号相同。而i节点标号在同一个文件系统上唯一,在不同的文件系统中可能重复,假设可以跨文件系统建立硬链接,这时要保证i节点编号相同,但是此时相同编号的i节点对应的数据块中的内容不相同,所以硬链接不能跨文件系统。符号链接使用一个文件的间接指针,带来了这种跨文件系统的灵活性。因为符号链接新建一个i节点,使得其i节点编号不必与原文件的i节点编号相同且通过两次访问便可获得原文件的i节点,所以可以跨文件系统中;
- 硬链接造成的文件系统中的循环很难处理,所以限制只有超级用户可以建立指向目录的链接。
】
举例
假设文件test对应的i节点13且当前的引用计数为1,分别为其建立一个硬链接“test-link”和一个符号链接“test-symlink":
ln test test-link
ln test test-symlink
则i节点13的引用计数变为2,而i节点2(符号链接文件对应的i节点)的链接计数为1.
可见,硬链接增加原文件的引用计数,而符号链接不增加原文件的引用计数。
【本想简单说明一下为什么符号链接可以跨文件系统,但是写到最会发现自己跑题了,重点内容没有深入分析,而且好多的概念弄得还比较复杂。嗨,暂时只能写到这个程度,以后再慢慢精炼。希望不会误导大家!】