|n4||n4 is an experimental userspace NFSv4 server for Linux, plus a userspace NFS4 client library and benchmark.|
|A lot has been learnt about Linux networking performance for SMB
and HTTP through extensive tuning against the netbench, dbench and
wbench benchmarks. Relatively little of this work has yet been
applied to NFS, although it is also an important protocol. n4
aims to take the experience of the Samba team and apply it to the
next-generation NFS4 protocol.
The project is still in early development. The code is available under the terms of the GNU General Public Licence, but is not yet a fully functioning NFS server.
why a userspace server?
why a userspace client?
> G'day again Martin, > > Curious - if your NFS client is going to be entirely user-space, do > you have a way of integrating it into the VFS somehow so that it can > be mounted like a regular file system? We do need a good kernelspace client to get truly transparent operation. The folks at citi.umich.edu are working on that. Briefly, no, there are no plans at the moment to make n4 into a kernel-level filesystem. I'm mostly interested in a userspace server. My reasons for writing a userspace client are: - At the moment the client is about 2600 lines, the server 4000, and the common area is 4700 lines. I'd expect the ratio to stay roughly the same, so it doesn't require that much more effort. - If nothing else, the client is a test harness for the server. - It's a good foundation for writing test or benchmarking suites. Kernelspace clients normally exercise only a small fraction of the protocol which is useful to their servers. In userspace we can test the whole protocol, reproduce the behaviour of clients on different servers, and so on. A good free benchmark is crucial to improving our performance on NFS -- a fair fraction of the credit for our good web and SMB performance goes to dbench and wbench being free, simple to use, and used often by kernel developers. - A userspace client can be ported to other less common systems that might not otherwise get any kind of implementation for a long time. Portability is not a major goal, but it'll be much easier than for a kernelspace client. - You might want to access a filesystem using NFS (perhaps over ssh) when you don't have root access on the client. Can't do this with a kernel client; can do it easily with n4client. - I think the NFS RPC system might be a good foundation for rsync 3.0. - Plenty of programs implement userspace filesystem access in a useful way (emacs, ftp, web browsers, Samba, ...) - NFSv4 can potentially use cache-consistent proxies, which need to have both client and server implementations. - Debugging the client, or stepping through the client as you debug the server is much faster (x3?) than kernel space: you can run gdb, crashes don't take down the machine or corrupt your filesystem, you can rebuild (on my machine) in 30s not 300s, ... - The barrier to entry for other people to try out n4 or write patches is much lower in userspace. Cheers, -- Martin
Three mailing lists are presently available for discussing n4: