NFS Path-Name Translation
NFS path-name translation 是 client 把 path 逐 component 轉成 remote file handles / vnodes。進入 remote mount point 後,每個 component lookup 可能都要 RPC 到 server。
為何逐 component
Server 不知道 client 的完整 local namespace。Client A 可能把同一 export mount 到 /home,client B mount 到 /shared;client 也可能在 remote subtree 內做 cascading mounts。因此 server 不能單靠完整 local path 幫 client 正確解析。
Client 會以「目前 directory vnode / file handle + 下一個 component name」發 lookup RPC;若途中遇到 client 自己的 mount point,client 才知道要切到哪個 file system / server。
Non-transitivity / cascading
NFS mount 不具 transitivity:client mount S1 的 export,不代表會看到 S1 在該 subtree 上另外 mount 的 S2 file system。某些 implementation 允許 cascading mounts,使一次 lookup 可跨多個 servers。
Lookup cache
Component-by-component RPC latency 高,因此 client 會 cache directory-name lookup results(name → vnode / file handle)。Cache 需 revalidation;若 server attributes 與 cached vnode attributes 不匹配,就 discard,避免 stale lookup。
Lookup cache 可減少 RPC,但要處理 stale cache 風險。