THE 1980S

NFS

In 1985, Sun Microsystems released a technology that would transform how computers share files across networks: the Network File System, better known by the acronym NFS. At the time, the idea of connecting distant machines to access shared data posed a significant technical challenge. Yet this innovation would become one of the cornerstones of distributed systems.

The story begins with SunOS 2.0, which integrated the first public version of the protocol, NFSv2. But behind this release lay Sun's bold strategic vision. Where other companies would have kept their technology proprietary, Sun bet on openness. The NFS protocol only defined the message formats exchanged between clients and servers, leaving everyone free to implement their own solution. This decision spawned a thriving ecosystem: NetApp, EMC, IBM and many others joined the race, creating their own NFS servers while maintaining interoperability.

This strategy contrasted sharply with previous approaches. SVR3's Remote File System, for example, established a direct correspondence between client and server system calls. The approach worked, certainly, but revealed its limitations as soon as a server crashed: clients often found themselves stuck, forced to reboot to resume their activities.

Sun's engineers took a radically different direction. They designed NFS as a "stateless" system, where the server keeps no record of ongoing operations. Each request arrives with all the information needed for its processing. This architecture, counterintuitive at first glance, conceals formidable elegance: if the server stops abruptly, clients need only resend their requests once it has restarted. No complex state reconstruction, no delicate synchronization.

At the heart of this mechanism lies the "file handle," a true identity card for each file on the server. In NFSv2, this descriptor gathers a volume identifier, an inode number, and a generation number. This last element prevents confusion when the system reuses inode numbers: each file thus maintains its unique identity, even after deletion and recreation.

Of course, querying the server at every file access would have generated unsustainable network traffic. NFS therefore integrates client-side caching mechanisms, temporarily storing accessed data and metadata. This optimization immediately raises a thorny question: how to ensure that all clients see the same information? The answer lies in the "close-to-open" model. Modifications travel up to the server when files are closed, while clients verify data state at each opening. This approach favors performance while maintaining reasonable consistency.

The protocol would undergo several metamorphoses over the years. In 1995, NFSv3 arrived with performance improvements, notably better handling of asynchronous writes. But it was NFSv4, standardized in 2000, that truly revolutionized the architecture. Paradoxically, this version abandoned the stateless principle in favor of a stateful protocol, introduced cache delegations and considerably improved Internet compatibility.

Security was the Achilles' heel of early versions. The authentication system relied on blind trust between clients and server, simply using UNIX numerical identifiers. This naivety was gradually corrected through Kerberos integration, then by the more sophisticated mechanisms of NFSv4.

But NFS development necessitated the creation of the Virtual File System interface, an abstraction layer allowing the coexistence of different file systems within the UNIX kernel. This innovation, still present in modern systems, greatly simplified the integration of new file systems.

The 1990s saw fierce competition emerge. Microsoft pushed its Server Message Block, later renamed Common Internet File System, which naturally established itself in the Windows universe. More ambitious systems like Andrew File System or, more recently, Lustre for supercomputers, offered advanced features for specific niches.

Yet NFS withstood these assaults. Its relative simplicity, proven robustness and near-universal availability make it a sensible choice for many organizations. Storage manufacturers continue to innovate around the protocol. NetApp, notably, developed hardware optimizations to accelerate synchronous writes, historically NFS's weak point.

NFS's technical legacy still informs the design of distributed systems. The stateless architectural principle, initially controversial, now inspires numerous network protocols. The lessons learned about cache consistency continue to fuel academic and industrial research.

As cloud storage reshapes computing's landscape, the challenges NFS addressed remain relevant. While solutions evolve, distribution, consistency and fault tolerance are issues that transcend time. The NFS adventure demonstrates that a pragmatic approach favoring robustness over sophistication can endure. In a field where technological changes succeed one another at a breakneck pace, this longevity commands respect.