Linux 中文件系统的边界在哪里?

Linux 中文件系统的边界在哪里?

我很好奇硬链接不能跨越文件系统的边界。但边界到底在哪里?我知道硬盘和闪存盘是两个文件系统;/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。这不会改变文件系统,只会改变小路您必须使用它来在文件系统上定位数据(同样,即使在语言中,文件系统也不是路径)。

相关内容