创建一个符号链接到另一个符号链接在Linux上有任何副作用(特别是在性能方面)?创建到另一个符号链接的符号链接是否有任何副作用?
回答
在一般情况下,没有。从技术上讲,间接性会有一个很小的性能影响,但它对于你的应用程序来说并不明显。例如,大多数共享库都是符号链接符号链接(例如libQtCore.so - > libQtCore.so.4 - > libQtCore.so.4.7 - > libQtCore.so.4.7.1)。
副作用
是。在内核和/或应用程序拒绝遵循链条之前,您只能将很多符号链接堆叠在一起。 (因为循环检测代价昂贵,特别是在内核中,所以没有使用“看到”标志,而是递归深度被限制。)
这主要是对Daniel Gallagher的论点的评论,但它并没有不适合评论框,所以这会使其更具可读性。从Wikipedia on symbolic links:
符号链接的早期实现将符号链接信息存储为常规文件中的数据。该文件包含链接目标的文本参考,以及一个指示[需要说明],将其表示为符号链接。
该方法很慢,对小的系统的低效使用的磁盘空间。一种称为快速符号链接的改进允许在用于在磁盘上存储文件信息的数据结构(inode)中存储目标路径。该空间通常存储分配给文件的磁盘块地址列表。因此,快速访问具有短目标路径的符号链接。如果目标路径超过可用的inode空间,那么具有快速符号链接的系统通常会回退到使用原始方法。原始风格被追溯称为缓慢符号链接。它也用于与其他或更早版本操作系统的磁盘兼容性。
尽管在inode中存储链接值可节省磁盘块和磁盘读取,但操作系统仍然需要解析链接中的路径名,这通常需要读取其他inode,并且通常需要读取其他节点,目录,处理文件列表和每个文件的inode,直到找到与链接的路径组件相匹配的文件。只有链接指向同一目录中的文件时,“快速符号链接”才能提供比其他符号链接显着更好的性能。
因此,在/usr/lib
使用符号连接符号链接图书馆的处罚是长于路径查找,也许甚至是跨越多个安装点不太严重。
我还没有看到关于这个问题的原始数据,但是从个人的经验,我会说这是顶多一个小的性能损失,在大多数情况下并不明显。性能命中与我听说过的符号链接(没有亲眼见过)一起出现在(可能是不好的)实现中,其中系统分支用于查找某个符号链接的目标。
虽然我很喜欢看到关于符号链接和性能的“肉体”评论,因为这是我在几个月内第二次发现它,但没有得出明确的结论。
- 1. 创建符号链接
- 2. 是否可以在Mac中创建一个通用的符号链接(符号链接)?
- 3. 创建没有符号链接的virtualenv
- 4. 创建符号链接到程序
- 5. 如何创建PHPUnit的符号链接?
- 6. MongoDB是否有符号链接?
- 7. 符号链接
- 8. 符号链接
- 9. 两个符号链接之间的符号链接
- 10. node_modules:符号链接还是不符号链接?
- 11. 创建文件夹的符号链接
- 12. 如何找到指向另一个符号链接的图标的符号链接
- 13. 无法创建符号链接
- 14. Rsync只创建符号链接
- 15. 无法创建符号链接
- 16. Android init.rc:无法创建符号链接
- 17. 创建符号链接或硬链接在XP的Fat32
- 18. 符号链接svn到linux
- 19. 符号链接CMake
- 20. 符号链接自
- 21. Python是否尊重符号链接?
- 22. Apache的符号链接符号链接返回HTTP 500错误
- 23. 除了创建符号链接,a2ensite还有什么作用?
- 24. 是否可以从脚本创建相对符号链接?
- 25. 当链接在另一个目录中时,符号链接不工作?
- 26. 找出一个文件是否是PowerShell中的符号链接
- 27. 将相对符号链接转换为绝对符号链接
- 28. 如何通过覆盖现有的符号链接强制创建符号链接?
- 29. 在另一个文件夹的bash脚本中创建一个符号链接
- 30. 链接符号没有找到
您是否有任何关于副作用的信息来源? – Gerrat 2014-06-07 15:36:41