为什么不能跨文件系统边界创建硬链接?
每个文件系统中都使用一个 inode 编号来表示文件。所有硬链接都基于 inode 编号。
因此,跨文件系统链接会导致UNIX 或 Linux 的引用混乱。例如,考虑以下场景
* 文件系统:/home
* 目录:/home/vivek
* 硬链接:/home/vivek/file2
* 原始文件:/home/vivek/file1
现在创建一个硬链接,如下所示:
输出:
$ touch file1
$ ln file1 file2
$ ls -l
-rw-r--r-- 2 vivek vivek 0 2006-01-30 13:28 file1 -rw-r--r-- 2 vivek vivek 0 2006-01-30 13:28 file2
现在只看到文件 1 和文件 2 的 inode:
$ ls -i file1
782263
$ ls -i file2
782263
如您所见,在 /home 文件系统下的 inode 表中,名为 file2 的硬链接文件的 inode 编号相同。现在,如果您尝试为 /tmp 文件系统创建硬链接,则会导致 UNIX 或 Linux 文件系统的引用混乱。这是 /home 或 /tmp 文件系统中的链接号 782263 吗?为了避免此问题,UNIX 或 Linux 不允许跨文件系统边界创建硬链接。继续阅读《理解 Linux 文件系统》系列的其余部分(这是第七部分):