LWN: Comments on "NFS: the early years" https://lwn.net/Articles/897917/ This is a special feed containing comments posted to the individual LWN article titled "NFS: the early years". en-us Tue, 28 Oct 2025 10:19:12 +0000 Tue, 28 Oct 2025 10:19:12 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Remote filesystems: a lost cause? https://lwn.net/Articles/902219/ https://lwn.net/Articles/902219/ ajmacleod <div class="FormattedComment"> That&#x27;s very interesting, thank you for the reply.<br> </div> Fri, 22 Jul 2022 15:48:00 +0000 Remote filesystems: a lost cause? https://lwn.net/Articles/901746/ https://lwn.net/Articles/901746/ donald.buczek <div class="FormattedComment"> We use self-developed tools to broadcast /etc files like passwd, group, exports or autofs-maps to all systems [1]. For shadow, we replaced nis with a self-develooped nss service, which queries a central server via tls [2]. <br> <p> [1]: <a href="https://github.molgen.mpg.de/mariux64/mxtools/blob/master/clusterd/clusterd">https://github.molgen.mpg.de/mariux64/mxtools/blob/master...</a><br> <p> [2]: <a href="https://github.molgen.mpg.de/mariux64/mxshadow">https://github.molgen.mpg.de/mariux64/mxshadow</a><br> <p> </div> Mon, 18 Jul 2022 20:15:33 +0000 Remote filesystems: a lost cause? https://lwn.net/Articles/901727/ https://lwn.net/Articles/901727/ ajmacleod <div class="FormattedComment"> Out of interest, what did you replace NIS with? I likewise have found NFS indispensable but NIS has hung around a lot longer than it should have in some use cases because for them it just works and is very simple (yes, too simple.)<br> </div> Mon, 18 Jul 2022 16:08:25 +0000 Remote filesystems: a lost cause? https://lwn.net/Articles/900603/ https://lwn.net/Articles/900603/ marcH <div class="FormattedComment"> Thanks! So mostly reads, no read/write concurrency and rarely in the critical path? Then sure, as long as you have the tools to monitor and catch &quot;deviant&quot; users then why not. Not exactly plug and play / &quot;consumer&quot;-friendly though and quite far from the illusion of a local disk.<br> <p> <p> </div> Sun, 10 Jul 2022 07:40:24 +0000 Remote filesystems: a lost cause? https://lwn.net/Articles/900600/ https://lwn.net/Articles/900600/ donald.buczek <div class="FormattedComment"> NFS doesn&#x27;t suck.<br> <p> We have ~400 Linux systems ranging from workstations to really big compute servers using a global namespace supported by autofs and nfs for /home and all places where our scientific data goes (/project). We even have software packages installed and used over nfs ( /pkg ) because, to make our data processing reproducible, we keep every version of every library or framework and that would be too much to keep on every system. Only base Linux system, copies of the current/default version of some highly used packages (e.g. python) and some scratch space are on local disks.<br> <p> We have ~500 active users and they usually don&#x27;t complain about perfomance or responsiveness of their desktop.<br> <p> We do this for decades and it used to be a pain, but with the progress of NFS and the steps we&#x27;ve taken here (e.g. replace NIS), everything runs really smoothly these days! If it doesn&#x27;t, some user acted against the rules (e.g. hammering a fileserver from many distributed cluster jobs or trying to up- or download a few terrabytes without a speed limit) and we have a talk.<br> <p> Oh, and the same namespace ( /home, /project ) is accessed over CIFS by our Windows and macOS workstation. Plus the files are accessed locally on the fileservers, too. For example, we typically would put daemons and cronjobs, which don&#x27;t need much ram or cpu, on the fileserver where their projects are local, to reduce network dependency. Also users are allowed to log in to the HPC node where their job is executing to monitor or debug its behavior.<br> <p> And (related to other discussions) we couldn&#x27;t live without symlinks. And all these systems are multi-user, security border between users is basic requirement. <br> <p> NFS, symlinks and multiuser are not dead, &quot;Nowadays things are done like this and that&quot; might be true in a statistical sense but should not be generalized.<br> <p> <p> <p> </div> Sun, 10 Jul 2022 06:04:34 +0000 Remote filesystems: a lost cause? https://lwn.net/Articles/900583/ https://lwn.net/Articles/900583/ atnot <div class="FormattedComment"> <font class="QuotedText">&gt; Does _any_ network filesystem &quot;suck less&quot;? The entire concept seems like a lost cause.</font><br> <p> I think it gets worse, because all filesystems are secretly network filesystems. It doesn&#x27;t really matter that much whether the two computers speak to each other over ethernet, SCSI or PCIe, you just notice it less with lower latency. Basing persistent state storage on what amounts to a shared, globally read-writable single address space without any transaction or really, any well defined concurrency semantics is, I think, a fundamental dead end. See also the symlink discussion. So much effort is thrown into pretending files work like they did on a pdp11 at a very deep level, and I think it&#x27;s really something that needs to be moved beyond. Git is actually a pretty good example I never thought of there, in the way it sort of emulates a traditional filesystem structure on top of a content-addressed key-value blob store.<br> </div> Sat, 09 Jul 2022 22:57:31 +0000 Remote filesystems: a lost cause? https://lwn.net/Articles/900580/ https://lwn.net/Articles/900580/ marcH <div class="FormattedComment"> Indeed the <a href="https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing">https://en.wikipedia.org/wiki/Fallacies_of_distributed_co...</a> come to mind.<br> <p> Does _any_ network filesystem &quot;suck less&quot;? The entire concept seems like a lost cause. Sure, a samba share is marginally more convenient than rsync or wget stuff.tgz for some occasional recursive _download_ but that&#x27;s still just glorified FTP. Is there any actual and successful use case where multiple clients are actively working on the same, shared tree at the same time?<br> <p> Just for fun try to time &quot;git status&quot; over a network file system and compare with a local file system. The thing that relies a lot on &quot;state&quot; is caching and caching is what has made computers faster and faster. Is high-performance caching compatible with sharing access over the network? It does not look like it.<br> <p> I&#x27;m more and more convinced that the future belongs to application-specific protocols. The poster child is of course git which is capable of synchronizing Gigabytes while transferring kilobytes. Of course there is a price to pay: the synchronization requires explicit user action, remote resources do not magically appear like their local. But that&#x27;s just acknowledging Network Fallacies and reality.<br> <p> PS: NUMA and CXL seem similarly... &quot;ambitious&quot;<br> </div> Sat, 09 Jul 2022 21:56:40 +0000 NFS: the early years https://lwn.net/Articles/899024/ https://lwn.net/Articles/899024/ neilbrown <div class="FormattedComment"> The article at that second link contains the gem:<br> <p> <font class="QuotedText">&gt; duplicate request processing can result in incorrect results (affectionately called ‘filesystem corruption’ by those not in a filesystem development group).</font><br> <p> That&#x27;s the sort of witticism that would be right at home here in lwn.net.<br> It goes on to describe a problem which I&#x27;ve heard of before described as &quot;Nulls Frequently Substituted&quot;.<br> <p> </div> Sat, 25 Jun 2022 11:17:59 +0000 NFS: the early years https://lwn.net/Articles/898926/ https://lwn.net/Articles/898926/ bfields <div class="FormattedComment"> A lot of the original papers are readable and interesting, by the way. Two off the top of my head:<br> <p> <a href="http://www.cs.siue.edu/~icrk/514_resources/papers/sandberg85-NFS.pdf">http://www.cs.siue.edu/~icrk/514_resources/papers/sandber...</a> also introduces the VFS: &quot;In order to build the NFS into the UNIX 4.2 kernel in a user transparent way, we decided to add a new interface to the kernel which separates generic filesystem operations from specific filesystem implementations.&quot;<br> <p> <a href="https://archive.org/details/1989-conference-proceedings-winter-usenixtech-sd-full/page/n59/mode/2up">https://archive.org/details/1989-conference-proceedings-w...</a> starting p. 53 (there has to be a better link) introduces the DRC; it&#x27;s interesting that the correctness improvements are described as a &quot;beneficial side effect&quot;, with the main purpose increased bandwidth.<br> </div> Fri, 24 Jun 2022 13:26:51 +0000 NFS: dangerous fragmentation https://lwn.net/Articles/898842/ https://lwn.net/Articles/898842/ neilbrown <div class="FormattedComment"> <font class="QuotedText">&gt; Neil appears to be talking about fragmentation of the protocol and the developer community, whereas you seem to be talking about something technical. </font><br> <p> Indeed. The only technical issue that I know of which involves NFS and fragmentation relates to UDP packets being fragmented into IP packets, and not necessarily being assembled properly.<br> See &quot;man 5 nfs&quot; and the section titled &quot;Using NFS over UDP on high-speed links&quot;.<br> You can find that man page at <a href="http://man.he.net/man5/nfs">http://man.he.net/man5/nfs</a> if you don&#x27;t want to leave your browser just now.<br> Or maybe <a href="https://www.man7.org/linux/man-pages/man5/nfs.5.html">https://www.man7.org/linux/man-pages/man5/nfs.5.html</a> but that site isn&#x27;t responding for me just now.<br> </div> Thu, 23 Jun 2022 21:57:37 +0000 NFS: dangerous fragmentation https://lwn.net/Articles/898787/ https://lwn.net/Articles/898787/ giraffedata <blockquote> My colleague Jay only recently told me about the dangerous fragmentation issue alluded to at the end </blockquote> Neil appears to be talking about fragmentation of the protocol and the developer community, whereas you seem to be talking about something technical. Thu, 23 Jun 2022 17:39:22 +0000 NFS: the early years https://lwn.net/Articles/898679/ https://lwn.net/Articles/898679/ droundy <div class="FormattedComment"> <font class="QuotedText">&gt; If an application opens the only file in some directory, unlinks the file, then tries to remove the directory, that last step will fail as the directory is not empty but contains an obscure .nfs-XX name — unless the client moves the obscure name into a parent or converts the RMDIR into another rename operation. In practice this sequence of operations is so rare that NFS clients don&#x27;t bother to make it work.</font><br> <p> Wow, that is an amazing level of sarcasm! If there was one thing that is memorable about NFS, it&#x27;s the nuisance of perpetual failing `rm -rf` and then trying to track down the darn progress holding a file open.<br> </div> Thu, 23 Jun 2022 03:04:02 +0000 NFS: the early years https://lwn.net/Articles/898658/ https://lwn.net/Articles/898658/ dublin <div class="FormattedComment"> Yep, that&#x27;s it. It *was* a bit unfair/greedy, but in a way that actually made throughput better for everyone, since NFS was a fair portion of the traffic (with X being a large part of the rest - it didn&#x27;t impact that enough to be a real concern. <br> <p> Also, we never had all that many SGIs serving NFS, so I have no idea if this might have fallen over at a larger scale...)<br> <p> BTW, this technique eliminated NFS-related collisions and backoffs, but that doesn&#x27;t impact things nearly as much as people think - CSMA/CD is really pretty efficient: If you assume that *every other packet* (50%, crazy high) collided, you *still* got 97% of Ethernet&#x27;s throughput, even with that many backoffs. Do the math if you don&#x27;t believe me...) I think it was mostly fast because it kept the NFS pipeline flowing on both client and server...<br> </div> Wed, 22 Jun 2022 21:48:44 +0000 NFS: the early years https://lwn.net/Articles/898583/ https://lwn.net/Articles/898583/ donaldh <div class="FormattedComment"> Ah yes, my comp-sci lab was similarly hosed. Not helped at all by the diskless Sun Sparc SLCs that had root fs and swap mounted via NFS.<br> </div> Wed, 22 Jun 2022 10:17:18 +0000 NFS: the early years https://lwn.net/Articles/898577/ https://lwn.net/Articles/898577/ ewen <div class="FormattedComment"> If you transmit frames back to back with no gap, then other nodes doing carrier sense would still be hearing your earlier transmission (previous frame) as you start the next one. So ordinary carrier sense plus delay to transmit would cause other nodes not to talk over you, as they’d never observe a quiet period before the (second or subsequent) frame started being sent.<br> <p> Obviously they could still talk over the first frame as normal, as they wouldn’t hear the start of the transmission for a while (hence minimum frame lengths, so the sender can learn overtalk happened).<br> <p> But the result should be either you lose the first frame due to overtalk (and don’t send the rest), or you send all frames before anyone else gets a word in, without interruption/overtalk. On a NFS heavy, reasonably congested network it’s probably a net win for everyone over constantly losing one in N frames out of a larger NFS request/reply (and thus endless retries tying up the shared medium). <br> <p> Seems like a very clever hack, if a bit “unfair”/“greedy” of a shared medium if the “fake jumbo frames” aren’t reasonably well separated from more “fake jumbo frames”. <br> <p> Ewen<br> <p> <p> </div> Wed, 22 Jun 2022 08:24:42 +0000 NFS: the early years https://lwn.net/Articles/898580/ https://lwn.net/Articles/898580/ geert <div class="FormattedComment"> I ran the second stage of debootstrap on a dev board in JP using nfsroot, connected to my NFS server (in EU) using TAP/TUN over SSH. Took all night to complete, but it did work.<br> Subsequent boot ups indeed took ca. 30 minutes, so it looks like 8 ms or 300 ms don&#x27;t seem to make much of a difference?<br> </div> Wed, 22 Jun 2022 08:23:50 +0000 NFS: the early years https://lwn.net/Articles/898579/ https://lwn.net/Articles/898579/ geert <div class="FormattedComment"> I guess this made the situation even worse with some of the early PC Ethernet cards, which didn&#x27;t have enough RAM to hold 8 KiB worth of packets in their receive buffer, and/or couldn&#x27;t handle back-to-back packets?<br> </div> Wed, 22 Jun 2022 08:18:20 +0000 NFS: the early years https://lwn.net/Articles/898562/ https://lwn.net/Articles/898562/ jwarnica <div class="FormattedComment"> This would only decrease collisions if everyone else was unnecessary-out-of-spec level good at the &quot;carrier sense&quot; part of the paradigm. Which, of course, is statistically unlikely at scale.<br> <p> So I&#x27;m a tad confused.... <br> </div> Tue, 21 Jun 2022 23:52:38 +0000 NFS: the early years https://lwn.net/Articles/898561/ https://lwn.net/Articles/898561/ jwarnica <div class="FormattedComment"> NFS is proof-of-failure #1 for the basic theory of RPC, that is, that without thinking about it you can put a C level (that is, asm level) subroutine call across the network without any further thought. <br> <p> This put &quot;the network is the computer&quot; behind schedule by a decade, and triggered people to fix the idea by double downing on the idea of ignoring the network in the form of CORBA, which contributed another decade of schedule slip. <br> <p> Except as examples of what not to do, good riddance.<br> <p> I&#x27;m sorry for the sysadmins who had to deal with this. I&#x27;m even more sorry for those who let it escape the Valley.<br> </div> Tue, 21 Jun 2022 23:44:06 +0000 NFS: the early years https://lwn.net/Articles/898540/ https://lwn.net/Articles/898540/ dublin <div class="FormattedComment"> Sun&#x27;s TOPS protocol (which ran on Suns, PCs and Macs) was also quite good, but was perceived as a bit expensive and never really got much traction outside 1990-ish Sun shops... IIRC, it came not only with really nice cross platform file sharing, but even email that could be gatewayed to Internet mail - pretty serious stuff in the days of Novell everywhere. <br> <p> FWIW, Novell&#x27;s NCP is perhaps the best file-sharing protocol architecture I&#x27;ve ever encountered. Its protocol design was so latency-tolerant that I ran it well enough over 56K geosync INMARSAT satellite connections in 1993 to be quite usable - a feat impossible with NFS - and believe me, I tried! (The application was emergency spill reponse for the oil companies - the entire project brief was more or less two sentences: Within 15 minutes of hitting a spill site anywhere in the world, we must have voice, data, and filesharing connectivity back to Houston. Oh, and your budget is 1/10th of what the satellite equipment vendor&#x27;s experts want, everything must be checkable as luggage, and are no skilled IT people will be there - so it just has to work. We nailed it.)<br> </div> Tue, 21 Jun 2022 20:18:48 +0000 NFS: the early years https://lwn.net/Articles/898530/ https://lwn.net/Articles/898530/ dublin <div class="FormattedComment"> I was one of the architects of Chevron&#x27;s IP network in the early 90s. I was puzzled when one of our customer groups requested an SGI box for their NFS server, since I was pretty familiar with the workings of NFS and knew that Sun&#x27;s implementation *should* be superior (I&#x27;d compared them in the past). <br> <p> At first I thought this group was falling for a bunch of SGI sales BS, but they still had the demo box in place on our network, and sure enough, it flat left our best Sun and DEC Ultrix NFS servers in the dust - both of which were were notably faster than the IBMs and HPs of the day. But how? <br> <p> This set a group of us protocol performance jocks on a quest to get to the bottom of why, on the same networks, SGI could deliver such dramatically better NFS performance. (Only FDDI was 100 Mbps then: All our Ethernet was 10 Mbps, and though we were playing with the first Kalpana Etherswitch, that wasn&#x27;t in play here, and we were testing the servers and clients on the same segment.) One thing we noticed after a day of poring over network analyzer data was that performance was a bit burstier than normal, and throughput was great, but that the overall network utilization was actually a bit *less*. SGI was proud of their newfound performance, but it was pretty clear that their SEs had no clue *why* it got so much better all of a sudden. Curiouser and curiouser...<br> <p> We finally noticed that it wasn&#x27;t just bursty - all SGI responses were back-to-back: SGI was cheating - and it turns out, quite elegantly. They were managing to deliver complete NFS blocks all at once, years before jumbo frames were even a thing. (NFSv2 blocks were 8K, vs the 1500 byte MTU of all Ethernet at the time.) What made the SGI such an NFS screamer was that they brilliantly violated the Ethernet standard, with no real significant downside: They simply sent all six frames of an NFS block out one after another, with NO chance for anyone to interrupt - they had implemented stateful semantics into their Ethernet driver for NFS serving! When sending one of the up to six frames in an NFS block, the last byte of one frame was *immediately* followed by the preamble for the next one, with no silence or backoff as would normally be required by the spec. This eliminated the potential for Ethernet collisions between these frames, since all other nodes would always lose and have to back off! Since no other node ever had the chance to interrupt, the effect was that even prior to jumbo frames, the server was delivering an entire NFS block as a train, and the impact on the network from collisions and retransmissions was greatly reduced overall, not to mention that NFS performance to the clients was much faster.<br> <p> All in all, it was one of the cleverest network protocol performance hacks I&#x27;ve ever seen, and certainly worked extremely well in optimizing NFS performance over those old style Ethernet networks. Only a few years later, we had 100 Mbps Ethernet, Jumbo frames, and cut-through switching a la Kalpana was mainstream, so this killer hack was only known to a few, and vanished without a trace. (As far as I know, SGI never fessed up to this, I think because they feared the potential backlash of enterprise customers who couldn&#x27;t stomach the idea of a vendor violating the sacrosanct 802.3 standard, even if doing so was a win-win in this case...)<br> </div> Tue, 21 Jun 2022 20:00:03 +0000 NFS: the early years https://lwn.net/Articles/898520/ https://lwn.net/Articles/898520/ Sesse <div class="FormattedComment"> My workstation used to be rootless, with NFS root. Once, I took it to a site 8 ms away (on gigabit Ethernet all the way, effectively zero congestion). I remember it took more than half an hour to boot…<br> </div> Tue, 21 Jun 2022 16:29:05 +0000 NFS: the early years https://lwn.net/Articles/898505/ https://lwn.net/Articles/898505/ amcrae <div class="FormattedComment"> One of the key aspects of NFS that set it apart from a variety of other contenders for a distributed filesystem at the time was the consistent naming that allowed it to integrate cleanly as part of a normal filesystem hierarchy.<br> Other protocols required special names (one used &quot;...&quot; as a special path to access the remote filesystem).<br> NFS allowed you to mount a remote filesystem anywhere in the hierarchy and let it appear as part of the normal directory structure with no special naming or other special characteristics. This meant that nearly all programs would work with no changes.<br> NFS as a protocol wasn&#x27;t perfect, but is was a heck of a lot better at the time than most other alternatives.<br> I also remember PC-NFS, which was a package that allow simple-minded IBM-PCs running DOS to access NFS. A better option than IPX if you had a mostly Unix environment at the time.<br> I always think of NFS as a great example of something that wasn&#x27;t perfect, but it solved 95% of the most critical part of the problem at the time.<br> <p> </div> Tue, 21 Jun 2022 14:01:06 +0000 NFS: the early years https://lwn.net/Articles/898483/ https://lwn.net/Articles/898483/ ballombe <div class="FormattedComment"> In 1995, stateless means that any client or server node could reboot without corrupting the others,<br> but also that &#x27;append&#x27; was emulated by truncate + rewrite, which was very inefficient.<br> In practice, the directory cache would fill the server memory about once a week at my site, so a cronjob was setup to reboot it every night. This was a good remainder to go to sleep since otherwise, you would<br> get &quot;NFS server not responding still trying&quot; for about 20 minutes... <br> <p> But still, NFS in 1995 was pretty neat. The fact that we still speak about this 1984 technology today speak volume.<br> </div> Tue, 21 Jun 2022 12:43:27 +0000 NFS: the early years https://lwn.net/Articles/898481/ https://lwn.net/Articles/898481/ nix <div class="FormattedComment"> Well, it&#x27;s not a stateless filesystem, is it. It&#x27;s a stateless *protocol* (implementing a filesystem which is of course stateful). This was useful back in the day when you had one fileserver and about ten thousand clients on massively collision-prone university thicknet networks that ran at the speed of a degraded dog[1]; the fileserver could never have managed to keep track of anything nontrivial about all those clients, so it was damn good it didn&#x27;t have to. These days that sort of environment is more or less history...<br> <p> [1] I remember quite late in this era, in 1995, finding that 97% of all packets on my university comp sci lab&#x27;s 10Mb/s Ethernet appeared to be retransmissions... that network was *unusable*.<br> </div> Tue, 21 Jun 2022 11:03:21 +0000 NFS: the early years https://lwn.net/Articles/898471/ https://lwn.net/Articles/898471/ pwfxq <div class="FormattedComment"> Talk of NFS and fragmentation brings back bad memories of mixed FDDI/Ethernet networks and having to manually set the MTU everywhere.<br> </div> Tue, 21 Jun 2022 05:54:34 +0000 NFS: the early years https://lwn.net/Articles/898470/ https://lwn.net/Articles/898470/ Cyberax <div class="FormattedComment"> A couple of years ago I implemented a simple NFSv4 client in Go ( <a href="https://github.com/Cyberax/go-nfs-client">https://github.com/Cyberax/go-nfs-client</a> ) for AWS EFS, and I was really surprised by how _easy_ it was to do. In fact, almost all of it was written within just 1 day, while I was anxiously waiting for the election results.<br> <p> NFS is a really great example of how to create simple and robust distributed systems.<br> <p> </div> Tue, 21 Jun 2022 04:59:32 +0000 NFS: the early years https://lwn.net/Articles/898466/ https://lwn.net/Articles/898466/ lathiat <div class="FormattedComment"> My colleague Jay only recently told me about the dangerous fragmentation issue alluded to at the end which I found totally fascinating which I&#x27;d not heard of despite using NFS since before 2007. I look forward to that part of the story.<br> </div> Tue, 21 Jun 2022 02:14:24 +0000 NFS: the early years https://lwn.net/Articles/898457/ https://lwn.net/Articles/898457/ willy <div class="FormattedComment"> In some ways, NFS is an example of worse-is-better. While UDP isn&#x27;t reliable, in practice NFS sucked too much over a WAN, and didn&#x27;t support federated UIDs anyway, so it was used on LANs, which meant a reliable Ethernet physical layer.<br> <p> The very notion of a stateless filesystem is ridiculous. Filesystems exist to store state. How tightly coupled the client &amp; server are and how much the client and server trust each other are legitimate areas for discussion.<br> <p> For those who don&#x27;t know, I once wrote an NFS 2/3 server in ARM assembler. It was the nineties ...<br> </div> Mon, 20 Jun 2022 23:27:07 +0000