《深入理解Linux内核》读书笔记:第一章 绪论

来源:互联网 发布:lcalendar.js 中文api 编辑:程序博客网 时间:2024/06/10 08:05

1. 硬链接与软链接:

       要了解硬链接与软链接的概念,首先就要了解linux系统中与文件相关的结构。对于已打开文件的file结构, inode, dentry的关系,可以用下图描述:


      可以看出,已打开文件的file结构体都指向了dentry项,而dentry项又指向了相应的inode结构,而文件在block上的存放是通过inode结构组织起来的。这样就完成了从用户到物理底层的映射。

      (1)硬链接原文件与链接文件共同指向同一个inode,inode中的引用数指示了当前文件有多少个链接。当删除原文件或者链接文件后,文件以及inode并没有被删除;只有当inode引用数为0时,才会将其删除。换句话说,硬链接并没有另外建立一个inode,而是增加一个dentry,内容为被链接文件的inode号和这个硬链接的文件名称等信息,所以硬链接的inode编号和被链接文件的inode编号是一样的。

      (2)软链接(符号链接)实际上是一种特殊的文件,它包含了另一个文件或目录的任意一个路径名。系统在建立软链接的时候会建立一个新的inode,此inode或其指向的文件再指向被链接目标的inode,所以符号链接的inode编号和被链接的inode编号不一样。

       这也是为什么硬链接只能指向同一个文件系统里面的文件的原因,因为每个文件系统都有它自己一系列的inode。两个不同的系统可能有相同的inode编号。而符号链接具有完整的路径名,所以它可以跨越不同的文件系统。


原创粉丝点击