Mounting NFS Subdirectories Individually Or Just The Parent?
Hello,
does it in any respect (throughput/performance, cpu load, I/O load, resilience, …) matter, if one mounts subdirectories of an NFS (v3)
export into separate directories or if one just mounts the parent directory?
I.e. like this:
server:/export/base/a -> /mnt/a
server:/export/base/b -> /mnt/b
server:/export/base/c -> /mnt/c
server:/export/base/d -> /mnt/d
server:/export/base/e -> /mnt/e
or simply like this:
server:/export/base -> /mnt
I would guess, that it doesn matter at all, but at $work the standard setup on all cluster nodes is, to mount >20 subdirectories from the NFS
server individually and the justification is, that is more performant and reliable.
Can this be confirmed (or denied)?
I couldn’t find this method of “NFS performance tuning” mentioned anywhere and from a management perspective the sheer amount of mounted filesystems makes the list confusing and harder to troubleshoot.
Any thoughts?
Regards frank
4 thoughts on - Mounting NFS Subdirectories Individually Or Just The Parent?
Performance wise, any bottleneck will almost certainly be tied to the disks on the back end, not the nfs process itself.
There are a couple good reasons for splitting up the mounts:
1. They can have different export restrictions (e.g., for different
client hosts, ro vs. rw permissions, user squashing).
2. /base/[a-e] live on different RAID arrays and might benefit from
different management cycles; that’d also be a case where multiple
exports might be a good idea. That said, I’ve never managed an
exported filesystem consisting of different arrays; we’ve always
exported at the RAID level or below.
There is a slight performance related reason for exporting disk partitions individually, the performance boost is server-side as Paul says. The advantage is that the no_subtree_check can be used without any additional security risk.
It is probably the case that the /export/base/a is a partition, is exported with no_subtree_check, and therefore there is a small performance boost.
Preventing server side mount point traversal can also form part of a security mechanism if servers have different security options for different mount points, but in this case mounting server:/export/base wouldn’t give you the same client view of the filesystem tree as mounting each individually if it worked at all.
Cheers, Sean
I’m not sure you can define individual restrictions for subdirectories of exported filesystems? In our case export permissions are set for
“server:/export/base”.
Agreed, but this is not the case in our situation.
frank
Exporting them individually also prevents the remote system from accessing /mnt/[!abcde] that you did not intend to make available.
Jon