135 U3.1 inode和链接ln(3)

一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。

这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。

ln命令可以创建硬链接:

  [root@desktop25 tmp]# ln aa.txt(源文件) ii.txt(目标文件)

RHCE_RHEL6_135 U3.1 inode和链接ln

运行上面这条命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加1。

反过来,删除一个文件名,就会使得inode节点中的"链接数"减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。

这里顺便说一下目录文件的"链接数"。创建目录时,默认会生成两个目录项:"."和".."。前者的inode号码就是当前目录的inode号码,等同于当前目录的"硬链接";后者的inode号码就是当前目录的父目录的inode号码,等同于父目录的"硬链接"。所以,任何一个目录的"硬链接"总数,总是等于2加上它的子目录总数(含隐藏目录)。

从相同文件系统中的其他地方设置指向相同inode数目的其他名称。会添加额外目录项,以引用这个文件。

rm 命令可以减少链接数,链接数为0时,文件将被删除。只要还有一个链接,文件就会一直保存。

硬链接无法跨磁盘分区,无法跨文件系统。目录无法做硬链接

RHCE_RHEL6_135 U3.1 inode和链接ln

RHCE_RHEL6_135 U3.1 inode和链接ln

windows中没有硬链接

当创建新文件时,文件系统中未使用的inode将分配给该文件。并向该文件所在目录加一个条目,将文件名映射至inode的数目。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20787.html