Off the top of my head here’s what NFSv4 brings to the table when put head to head against NFSv3. This is not an exhaustive list and I’m doing it from memory so you’ll excuse anything I’ve left out.
|Exports||All exports are mounted separately.||All exports can be mounted together in a directory tree structure as part of a pseudo-filesystem.|
|Protocol||Numerous protocols for different aspects collected together. MOUNT, LOCK, STATUS…etc.||A single protocol with the addition of OPEN and CLOSE for security auditing.|
|Locking||Permanent locks in yet another protocol.||Lease based locking in the same protocol.|
|Security||UNIX based. SecureNFS. Mode Bit Locking.||Kerberos and ACL based.|
|Communication||One operation per RPC.||Multiple operations per RPC. (Improves performance)|
|I18N||All locales must match.||UTF-8.|
|Parallel high bandwidth access||None native. (Addition such as MPFS)||pNFS.|
So looking at the list above we see some dramatic improvements, modernizations and simplifications in NFSv4 over NFSv3 as well as the addition of optional parallel high bandwidth access.
But we also see things like deep security functionality which people may not require as well as the fact NFSv3 is stateless and will therefore work better on crufty networks while NFSv4 isn’t and won’t. Also, while NFSv3 is a bunch of protocols working together it’s a bunch of simple protocols working together and it’s foundeverywhere as it’s trivial to implement. NFSv3 has a long life ahead of it yet but the killer feature for NFSv4 was delivered in v4.1. pNFS.
pNFS will drive NFSv4 adoption as it is transparent to applications and designed for High Performance Computing use cases.
Do we need pNFS?
I don’t think anyone doing Seismic Data Processing, Video Streaming or anything like that requiring access to PBs of storage at GB/s speeds ever said they had enough throughput. I believe pNFS will be first adopted by those segments and it’ll drag NFSv4 with it.