NFS +硬链接?

时间:2009-08-28 16:59:03

标签: nfs hardlink

我知道这是硬链接的一个条件,它们无法跨越文件系统。这适用于NFS挂载吗?鉴于以下目录结构,我是否可以在目录A中创建指向目录B中文件的硬链接?

/root
    /A
    /B  <-NFS mount

例如,我想运行ln /root/B/file.txt /root/A/linkedfile.txt

2 个答案:

答案 0 :(得分:7)

好吧,因为/B是一个单独的文件系统(挂载的NFS文件系统),所以你不能在它和/A之间建立硬链接,因为它们不在同一个文件系统上。

这是因为硬链接没有复制数据只将指针的副本放到该数据中,所以它们必须在同一个“地址空间“。

答案 1 :(得分:7)

首先要确切了解硬链接是什么,这是一个好主意。

通常在类似unix的系统上,目录中的文件名指向inode编号 - 实质上是文件的编号。 “硬链接”只是创建具有相同inode编号的另一个文件名。现在,您必须使用指向相同编号文件的不同名称。

但请注意,这两个名字之间并没有真正的直接联系。关系是Name1和Name2都将它们的inode编号设置为12756 - 但是没有什么可以阻止并且说“我手中的这个东西是两个文件之间的链接”。它们只是两个共享id号的数据库条目。对于共享id号的文件名,你可以进行查询(因为你正在浏览系统中的每个文件条目,这很慢),但就是这样。

因此,创建“两个文件系统之间的硬链接”并不意味着什么 - 因为两个文件系统具有不同的编号方案(系统1上的inode 1234,系统2上的1234,指向完全不同的文件),以及你必须存储的只是一个名字+ inodeNumber,没有什么可以做的。