In the last couple of years, clustering support for Samba has really taken off. It’s now possible to take a clustered filesystem (such as GFS2, OCFS2, or GPFS), and serve that filesystem via samba from multiple nodes. The next step is do the same with NFS. Since NFSv2/3 are rapidly becoming legacy protocols, we want to base this on NFSv4.
Here’s what I envision as a basic overall design…
Start with a cluster of machines with a shared-storage filesystem like GFS2. Each node in the cluster runs knfsd, and its own set of daemons:
- …and any other ones that are needed, such as a client id tracking daemon
Multiple IP addresses will float back and forth freely in the cluster. That will be handled by resource management software (rgmanager or something). When a cluster resource group floats to another server, it should just need to move the address. Restarting knfsd should not be allowed (or recommended).
When an IP address moves, any clients that have mounted through that address will need to reclaim their state (locks and opens, eventually we may also want to allow reclaim of delegations too).
One major goal is to ensure that when an IP address floats to another server that we don’t need to put the entire cluster into grace, forcing clients on all of the other addresses to reclaim their state as well.