使用ln -s或mount -bind之间有什么实际区别吗?
我想将一些文件夹移动到另一个分区,而不改变它们的守护进程设置,并想知道我应该采取什么方法.
我更喜欢ln -s,因为它需要最少的设置(没有/ etc / fstab修改),但也许有一个原因,它不常见?
解决方法
当然好.如果你执行ln -s你创建一个符号链接,这是一个指向某个文件系统对象的
inode,这就是为什么符号链接可以遍历文件系统而硬链接不能:硬链接没有自己的inode.
如果使用–bind挂载文件系统,则为设备或文件系统创建第二个挂载点.
如果您将符号链接设想为重定向,那么设想 – 绑定已挂载的文件系统作为创建另一个数据网关.
符号链接和绑定坐骑是一个完全不同的球赛.
–bind mount对我来说似乎更健壮,它可能比使用符号链接快一点.另一方面,使用符号链接没有严重的缺点,因为性能命中率很小(如果它存在的话).
编辑:我一直在考虑这个问题,而且性能影响可能会比我原先想象的要大一些.如果您的应用程序读取了许多不同的文件,那么每个打开的新文件都需要额外的读取.一些研究here表明我的假设是正确的,所以如果你在那里运行IO重型应用程序,请考虑使用–bind选项安装在符号链接解决方案之上.
它不常见的原因可能是符号链接在ls中可见,而绑定挂载仅在查看/ proc / mounts或/ etc / mtab时可见(这是mount命令的作用,如果它没有参数执行).除此之外,我认为没有任何问题.不过,如果有,我会感兴趣.
另外:ln -s的另一个问题是,对于某些应用程序,当路径被取消引用时,如果它“期望”某些项目位于特定位置,则可能导致应用程序无效.