我很好奇硬链接不能跨越文件系统的边界。但边界到底在哪里?我知道硬盘和闪存盘是两个文件系统;/home 和 /var 是两个文件系统。但 /home/a 和 /home/b 呢?我很困惑。
答案1
在本例中,边界是“设备”。如果你这样做df -h /home
,它会打印出类似这样的内容:
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 917G 353G 519G 41% /home
注意,“文件系统”不是/home
,它是/dev/sdb1
,即硬盘的一个分区sdb
,/home
只是一个“挂载点”。
当你查看该设备节点时,你会看到类似这样的内容:
brw-rw---- 1 root disk 8, 17 Apr 23 09:33 /dev/sdb1
表示b
它是块设备。disk
和日期 ( 8, 17
) 之间的两个数字是主设备号和次设备号。它们就是所谓的唯一设备 ID。
硬链接仅包含条目名称和 inode 编号。由于没有地方存储唯一设备 ID,硬链接无法指向其他设备。这也有技术原因,例如 USB 磁盘,相同的“唯一设备 ID”只有在重新启动之前才是唯一的。因此,即使您可以在文件系统之间创建硬链接,也无法确保它们在重新启动后仍然有效(还有其他原因)。
请注意分割硬盘上的是“文件系统”,而不是“安装”的位置。也就是说,您也可以/dev/sdb1
在 上安装/mnt
。这不会改变文件系统,只会改变小路您必须使用它来在文件系统上定位数据(同样,即使在语言中,文件系统也不是路径)。