我正在阅读Mark Bates 撰写的命令行介绍。
在第一章中,他提到硬链接不能跨越文件系统。
关于硬链接要注意的重要事项是它们仅在当前文件系统上有效。您不能在其他文件系统上创建到该文件的硬链接。为此,您需要使用符号链接,第1.4.3节。
我只知道一个文件系统。从root(/
)开始的那个。硬链接不能跨越文件系统的说法对我来说没有意义。
我正在阅读Mark Bates 撰写的命令行介绍。
在第一章中,他提到硬链接不能跨越文件系统。
关于硬链接要注意的重要事项是它们仅在当前文件系统上有效。您不能在其他文件系统上创建到该文件的硬链接。为此,您需要使用符号链接,第1.4.3节。
我只知道一个文件系统。从root(/
)开始的那个。硬链接不能跨越文件系统的说法对我来说没有意义。
Answers:
希望我能以一种对您有意义的方式回答这个问题。Linux中的文件系统通常由分区组成,该分区以存储文件的各种方式之一进行格式化(一定要选择!)。是您的系统文件,还是您的个人文件……它们都存储在文件系统中。您似乎已经了解了这一部分。
但是,如果您将硬盘驱动器划分为一个以上的分区(想将Apple Pie切成碎片),或者添加一个额外的硬盘驱动器(也许是USB记忆棒)怎么办?为了争辩,它们都还具有文件系统。
当您查看计算机上的文件时,您会看到分区文件系统上数据的直观表示。每个文件名都对应一个所谓的索引节点,它是您的数据在后台真正存在的地方。硬链接使您可以拥有多个“文件名”(由于缺乏更好的描述),它们指向同一索引节点。仅当这些硬链接位于同一文件系统上时,此方法才有效。而是使用符号链接指向“文件名”,然后将其链接到保存数据的索引节点。原谅我粗略的作品,但希望这可以更好地解释。
image.jpg image2.jpg
\ /
[your data]
在这里,image.jpg和image2.jpg都直接指向您的数据。它们都是硬链接。然而...
image.jpg <----------- image2.jpg
\
[your data]
在这个(原始的)示例中,image2.jpg并不指向您的数据,而是指向image.jpg ...,这是指向您的数据的链接。
符号链接可以跨文件系统边界工作(假设已连接并安装了文件系统,如USB记忆棒)。但是,硬链接不能。它对其他文件系统上的内容或数据的存储位置一无所知。
希望这有助于更好地理解。
chroot(2)
或真正的容器化,您可以具有多个层次结构,这些层次结构之间可能没有任何关系。
chroot
隔离了进程及其后代的一部分层次结构,但是父级仍然有一个完整的层次结构。容器化可以做到这一点,这取决于它与VM之间的距离。但是,一个评论可以包含多少细节?谢谢,
该文件系统是由目录条目来组织文件组成的目录结构组成。每个目录条目都将文件名与inode关联。
软链接(符号)是不包含数据的目录条目,它仅指向另一个条目(同一文件系统或其他文件系统中的文件或目录)。并且当您删除指向的文件时,符号链接将变得不可用。
硬链接是包含文件名和索引节点号的目录条目 。删除最后一个硬链接后,将无法再访问该文件。
结论:
由于索引节点是用于表示文件系统对象的数据结构,因此它是文件系统的内部结构,您不能指向另一个文件系统的索引节点。
从而, 硬链接仅在同一文件系统中有效,而软链接(符号链接)可以跨越文件系统,因为它们仅指向另一个目录条目(文件系统的接口,而不是内部对象)。
/mnt/myfile
。如果将另一个文件系统挂载到中/mnt/
。该软链接将解析为的已安装文件系统的条目/mnt/
。因此,如果从USB设备在上安装了文件系统/mnt
,则软链接将解析为该文件系统上的条目。
硬链接可以保持目标不变。只要任何硬链接都可以访问,系统将确保不会释放其目标。因此,有必要在系统试图确定是否存在对特定索引节点的任何引用时,都安装所有可能包含指向特定索引节点的硬链接的介质。
鉴于inode的生存期通常是通过维护引用计数而不是扫描引用来确定的,因此有可能安排一些事情,使保持相互链接的两个或更多文件系统可以独立使用,前提是无需使用链接。在系统之间架起了桥梁,并提供了在任何一个上都不需要使用fsck的条件。但是,如果其中一个系统的inode计数受到干扰,则使该系统再次可用的唯一方法是使用fsck操作形式,该形式可以扫描两个文件系统以查找引用。由于该限制,虽然可能允许两个相互链接的文件系统独立使用,但这样做的好处可能太有限而无法使用。