硬链接
给定一个文件original.txt
,硬链接hardlink.txt
将指向相同的索引节点,并且即使original.txt
被删除也继续存在。
符号链接
给定一个 file original.txt
,符号链接symlink.txt
将指向该文件名。
问题:哪一个更快,哪一个更小?
我的直觉表明硬链接会更快,因为它们与原始文件无法区分。然而,一切都取决于符号链接的速度。
另外,哪个占用的硬盘空间更少?
我希望看到基于测量的答案,例如以下问题这个简要提及大小和速度,但不详细说明。
答案1
符号链接创建一个包含链接文件路径的新文件。因此,您将创建一个实际的新文件,大约是目标文件(链接指向的文件)的路径(相对或绝对)的大小。
硬链接只是在目录中创建一个新条目(即实际包含目录的索引节点/名称对的特殊文件),因此不会创建任何新内容 - 除非特定目录已经“满”,因此索引节点/名称-pair 表必须增加(例如从 1024 到 2048 kbytes)才能为链接条目腾出空间。
我想符号链接会花费更长的时间,因为系统需要读取两个文件 - 链接和实际文件......此外,可能还需要对链接文件进行一些处理(即解析路径),并且可能必须使用另一个分区或物理磁盘。硬链接只需读取实际文件。请记住,所有硬链接都是“生而平等”,一旦创建,哪个链接是第一个(哪个是“源”,哪个是“目的地”)并不重要。
答案2
符号链接增加了一定程度的间接性,因此打开速度比硬链接慢,尽管可能不足以在常见用例中产生显着差异。
符号链接的磁盘大小取决于文件系统的实现。我假设它与通过使用“快速符号链接”优化名称存储的现代文件系统具有相同的大小,或者稍大一些,特别是当链接的路径名太长而无法适应文件数据结构时。
一旦打开,无论使用符号链接还是硬链接对于读/写操作都没有影响。
编辑:符号链接需要在某处存储链接文件的路径。最初,这是在数据块中完成的。后来,大多数文件系统实现了快速符号链接,其中该路径存储在文件数据结构本身中,从而节省了读取空间和磁盘空间。