Sidebar: NFS and RFS
Working in conjunction with S5 and UFS, the Network
File System first
appeared in SunOS in 1984. It has since been placed
in public domain
and prospered on every platform. Designed to work independently
of
hardware, it allows sharing files and directories across
the network
within a heterogeneous environment. Thus, servers running
operating
systems other than UNIX can have their drives mounted
as long as they
are using a TCP/IP stack and NFS.
AT&T attempted to provide the same capability with
System V Release
3, and came up with RFS (Remote File Sharing). Unlike
NFS, RFS required
that all machines on the network be running SVR3 or
later. As a result,
and given the usual mixture of machines on a network,
RFS has almost
completely faded from view as NFS has been widely accepted.
The underlying component that does all the work for
NFS and RFS is
the Remote Procedure Call (RPC). Using RPC, an application
or program
on one machine can summon a process on a remote machine
and have the
executed results displayed on the local machine. NFS
performs these
operations, and is transported around the network, using
the TCP/IP'S
User Datagram Protocol (UDP). By relying upon UDP to
do the transportation,
NFS becomes a stateless protocol, considering each transaction
independently
of any that happened before it.
With statelessness, whenever a user requests a file,
a copy of that
file is placed in a memory cache at the requesting workstation.
Any
changes made to the file are made within that cache.
If another user
on the same or another workstation requests the same
file, a copy
of the original is placed in cache for that person,
too. The second
user does not know that someone else has the file already
open, and
the first user does not know that someone else requested
it. The first
user could make changes, then save and exit, only to
find that the
changes were overwritten when the second user saved
different changes.
Mounting a directory across a network requires two operations.
First,
the directory must be exported, or marked as shareable
across the
network. The command for this on a Solaris machine is:
# share -F nfs -o rw=domain.name -d "The Directory" /export/safe/home
In this command, /export/safe/home is the disk
being shared. The next step is to mount the directory
on the machine
that is to see it, using:
# mount -t nfs domain.name:/export/safe/home /mnt -o rw
Once the directory is shared and mounted, users on both
systems, except for the root user, can read and write
to the drive.
The root user, being all powerful on one machine, is
restricted from
being all powerful on the other machine. Root cannot
write to the
mounted drive. This is a security measure preventing
someone with
root access from wreaking havoc across the network.
Beware of named pipes on NFS. Named pipes are special
files that store,
or block, data until a process comes along and performs
some operation
on that data -- device special files, you might say.
If the named
pipe is on machine one, it is often optimized by the
kernel as a domain
stream. It works well as long as all the operations
are local. If
machine two NFS-mounts the volume containing the named
pipe, problems
can occur. Think of the consequences if a process on
machine two attempts
to read the data blocked at the pipe before it is processed
by the
designated process on machine one. Corruption and ugliness
can occur.
For that reason, named pipes do not work over NFS. They
do work under
RFS, which supports the sharing of device special files
across the
network.
|