Preface
I have been working with the NFS protocol since I joined Sun Microsystems
in 1986. At that time the NFS market was expanding rapidly and I was
excited to be working with the group, led by Bob Lyon, that developed the
protocol and its first implementation in SunOS. In the NFS group, the
protocol was a powerful but raw technology that needed to be exploited. We
wanted it to run on as many platforms as possible, so an NFS porting group
was assigned the task of helping other companies implement NFS on their
computers.
Our NFS evangelism was a little ahead of its time. Before the phrase “open
systems” had yet become hackneyed, we’d made the source code for Sun
RPC available for free download via FTP server1 and organized the first
Connectathon event. At Connectathon our enthusiasm for NFS was shared
with engineers from other companies who brought along their machines,
source code, and junk food and spent a few days connected to a network,
testing their NFS client and server implementations against each other.
Implementations of the NFS protocol have been successful in bringing
remote file access to programs through existing interfaces. There is no need
to change the software for remote file access or to name files differently. NFS
has been almost too successful at making remote files indistinguishable from
local files. For instance, a program that backs up files on a local disk to tape
needs to avoid stumbling into NFS filesystems. For everyone but system
administrators, NFS is invisible—if you ignore the rare “NFS server not
responding” message.
It’s easy to forget NFS is there. NFS has no programming interface of its
own. Even software engineers have no need to deal with NFS directly. There
are no conference tutorials called “Programming with NFS,” there are no
magazine screen shots of NFS-enabled applications, and there are no
demonstrations of NFS at trade shows. Except for server administrators, NFS
seems not to exist.
There are many server implementations of the NFS protocol, each with its
own features. Each of these server implementations has its own
documentation, each slightly different. Perhaps this explains why there are so
few NFS books available. NFS is never more than a chapter in a book about
In this book, Robert Love has taken on the unenviable task of teaching the reader
about almost every system call on a Linux system. In so doing, he has produced a
tome that will allow you to fully understand how the Linux kernel works from a
user-space perspective, and also how to harness the power of this system.