From Hail Cloud Computing Wiki
Revision as of 17:36, 23 July 2013 by Korgsysop (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

nfs version 4 server daemon



The goal of this project is to develop a NFS version 4 file server, to be used as a front-end for various NFS experiments and production projects, including cloud/distributed storage.

Design goals

This project aims to create an NFSv4 file service, completely in userland . Unlike the kernel's NFS server, the chosen storage model here does not permit outside processes simultaneous access to file data. We call this the "database model", where your data is "owned" entirely by the NFSv4 server processes, and not easily accessible by normal cp/mv/rm/cat filesystem tools.

Benefits to this approach include

  • not having to compete with the kernel, and third party processes, to arbitrate file access
  • full and complete control over filesystem features. In contrast, with a kernel NFS server, your level of support for quotas, POSIX ACLs, extended attributes and other advanced features varies depending on the local filesystem in use (ext3, XFS, ZFS, NTFS, etc.). There are no such limitations with our approach.
  • access to the same high-speed techniques found in other NFSv4 servers, such as using sendfile(2) to enable NIC hardware offload features.

And similar to the benefits found in FUSE, it is much easier to develop and debug new storage backends, than when doing so inside the kernel.


Mile stone Goal Status
1 Fully compliant NFS v4 server, serving metadata and data stored entirely in RAM. 100% done
2 Use Berkeley DB4 as a transactional database, with POSIX local filesystem for bulk storage. 95% done
? Metadata replication and a distributed storage backend, with the help of CLD and chunkd. 0% done

Of course, to be a truly parallel distributed filesystem, and avoid copying data through a metadata server, one must implement NFS v4.1, which is an order of magnitude more complex than NFS v4.0.

Status: Alpha (95% of milestone #2 complete). 549 of 636 newpynfs tests succeed. Linux NFSv4 client successfully mounts, chown's, chmod's, and does basic read/write. Survives fsx with Linux NFSv4 client. OpenSolaris successfully mounts, also.


Developers: browse the git repo, or check out git://

Download releases here.

Related: NFSv4 home page

Personal tools