Configuring the Network File System (NFS)

NFS server and client daemons

Two daemon processes provide the NFS services on the server:

Checks for access permissions for the exported filesystem and returns a pointer to it when a client tries to mount a filesystem.

Starts the kernel-based NFS server daemons that handle filesystem request from clients. After a client mounts an NFS filesystem, access to that mount point and directories below it goes through the nfsd daemons on the server.

Other NFS daemons include:

Starts kernel-based daemons on the client that handle asynchronous block I/O, for read-ahead and write-behind of blocks from the client's buffer cache.

Converts TCP/IP port numbers to RPC (Remote Procedure Call) program numbers. The NFS server nfsd registers its port with the local portmap process. The NFS client accesses the server by asking the portmap process on the server for NFS's port number. That port number is used on all subsequent RPC procedure calls. The RPC mechanism allows client processes to execute procedure calls on the server as if the client process were executing the call in its own address space.

Makes a local directory of files available for mounting over the network by NFS clients.

Used by machines running the DOS version of NFS.

Implements the rwall(NADM) service that broadcasts messages to all users logged in to the network.

implements the rusers(NC) service that displays the names of users logged in to the network
These daemons are conventionally started by default when the system goes into multiuser mode. The startup scripts are typically located in /etc/rpcinit.

Following is an example of a mount procedure that describes the tasks and interactions of the client and server daemons, as well as other programs involved, in order of execution.

The mount command can get its parameters from the Filesystem Manager, the command line or from the file /etc/default/filesys. The following example assumes command-line arguments:

mount -f NFS columbia:/usr/src /columbia.src

On the client:

  1. The mount command opens /etc/mnttab and checks that this mount was not already done.

  2. The mount command parses the first argument into host columbia and remote directory /usr/src.

  3. The mount command then resolves the host columbia into an Internet protocol address.

  4. The mount command calls columbia's portmap to get the port number of mountd.

  5. The mount command calls columbia's mountd and passes it the /usr/src pathname.

On the server (columbia):

  1. mountd reads its /etc/exports and looks for the exported filesystem that contains /usr/src.

  2. mountd does a nfs_getfh(NS) system call on /usr/src to get the fhandle.

  3. mountd returns the fhandle to the client.

On the client:

  1. mount does a mount(S) system call with the fhandle and /columbia.src.

  2. The mount command checks whether the caller is root and /columbia.src is a directory.

  3. The mount command does a statfs(S) call to columbia's NFS server (nfsd).

  4. The mount command opens /etc/mnttab and adds an entry.

See also:

Next topic: NFS configuration files
Previous topic: Incompatibilities with distributed filesystems

© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003