这个和 NFS 关系不大。比如说,如果要访问到挂载在 /foo/bar 上的 NFS, 先要通
过本地文件系统 pathname lookup,找到 NFS 对应的目录的 inode,然后才会开始
使用 NFS 的 vfs 调用。
当然,如果挂载点路径深度会影响本地文件系统 lookup 性能。但是因为 dcache 会
cache dentry,所以对客户端来说,使用到的 dentry 一般会 cache 起来,所以
在第一次访问 /home/abc/def/ghi 之后,home, abc, def, dhi 的 dentry 会
cache 起来。第二次再 lookup 的时候,就会在 dcache 里面直接查找,所以会很快
。
lookup 其实分两种,一种是绝对路径。就是用 open(2) 或者 stat(2) 之类的调用。
还有一种是相对路径,就是用openat()。如果是后者的话,对性能的影响相对更小。
因为如果可以直接使用父目录的 fd 找到到对应的 inode,进而调用文件系统实现的
lookup。而不用一层一层地 lookup 了。
总而言之,因为有 dcache 和 inode cache,所以客户端的性能差别可以忽略不计。
【 在 oicu (Oh! I see you!) 的大作中提到: 】
: 标 题: 咨询个NFS的性能问题
: 发信站: 水木社区 (Thu Nov 15 21:27:40 2018), 站内
: 挂载点的路径长短,是否影响 NFS 性能?
: 比如挂载到 /nas
: 和挂载到 /home/abc/def/ghi
: 性能区别大么?对系统资源消耗是否相同?