Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Feb 2002 13:10:02 -0800 (PST)
From:      Tom Rhodes <darklogik@pittgoth.com>
To:        freebsd-doc@freebsd.org
Subject:   Re: docs/35098: [PATCH] Handbook NFS stuff
Message-ID:  <200202262110.g1QLA2f07435@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR docs/35098; it has been noted by GNATS.

From: Tom Rhodes <darklogik@pittgoth.com>
To: FreeBSD-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: docs/35098: [PATCH] Handbook NFS stuff
Date: Tue, 26 Feb 2002 16:10:17 -0500 (EST)

 Try this one now ;)  Clean up of whitespace, and other little "picks"
 
 --
 Tom Rhodes
 
 diff -ru handbook.old/advanced-networking/chapter.sgml handbook/advanced-networking/chapter.sgml
 --- handbook.old/advanced-networking/chapter.sgml	Fri Feb 22 16:16:17 2002
 +++ handbook/advanced-networking/chapter.sgml	Tue Feb 26 15:45:36 2002
 @@ -648,6 +648,13 @@
      <sect1info>
        <authorgroup>
          <author>
 +          <firstname>Tom</firstname>
 +          <surname>Rhodes</surname>
 +          <contrib>Reorganized and enhanced by </contrib>
 +        </author>
 +      </authorgroup>
 +      <authorgroup>
 +        <author>
            <firstname>Bill</firstname>
        	  <surname>Swingle</surname>
  	  <contrib>Written by </contrib>
 @@ -658,44 +665,41 @@
  
      <indexterm><primary>NFS</primary></indexterm>
      <para>Among the many different file systems that FreeBSD supports is
 -      the Network File System or NFS.  NFS allows you
 -      to share directories and files on one machine with others
 -      via the network they are attached to.  Using NFS, users and
 -      programs can access files on remote systems as if they were local
 +      the Network File System, also known as <acronym>NFS</acronym>.
 +      <acronym>NFS</acronym> allows a system to share directories and files
 +      with others over a network. By using <acronym>NFS</acronym>, users and
 +      programs can access files on remote systems almost as if they were local
        files.</para>
  
 -    <para>NFS has several benefits:</para>
 +    <para>Some of the most notable benefits that <acronym>NFS</acronym> can provide are:</para>
  
      <itemizedlist>
        <listitem>
 -	<para>Local workstations do not need as much disk space because
 +	<para>Local workstations use less disk space because
  	  commonly used data can be stored on a single machine and still
 -	  remain accessible to everyone on the network.</para>
 +	  remain accessible to others over the network.</para>
        </listitem>
  
        <listitem>
  	<para>There is no need for users to have unique home directories
 -	  on every machine on your network.  Once they have an established
 -	  directory that is available via NFS it can be accessed from
 -	  anywhere.</para>
 +	  on every network machine.  Home directories could be setup on the
 +          <acronym>NFS</acronym> server and made available throughout the network.</para>
        </listitem>
  
        <listitem>
 -	<para>Storage devices such as floppies and CDROM drives can be
 -	  used by other machines on the network eliminating the need for
 -	  extra hardware.</para>
 +	<para>Storage devices such as floppy disks, CDROM drives, and ZIP drives
 +          can be used by other machines on the network. This may reduce the number
 +          of removable media drives.</para>
        </listitem>
      </itemizedlist>
  
      <sect2>
 -      <title>How It Works</title>
 +      <title>How <acronym>NFS</acronym> Works</title>
  
 -      <para>NFS is composed of two sides &ndash; a client side and a
 -	server side.  Think of it as a want/have relationship.  The client
 -	<emphasis>wants</emphasis> the data that the server side
 -	<emphasis>has</emphasis>.  The server shares its data with the
 -	client.  In order for this system to function properly a few
 -	processes have to be configured and running.</para>
 +      <para><acronym>NFS</acronym> consists of at least two main parts: a server
 +        and at least one client. The client remotely accesses the data that is stored
 +        on the server machine.  In order for this to function properly a few
 +	processes have to be configured and running:</para>
  
        <para>The server has to be running the following daemons:</para>
        <indexterm>
 @@ -723,141 +727,129 @@
  	  <tbody>
  	    <row>
  	      <entry>nfsd</entry> 
 -	      <entry>The NFS Daemon which services requests from NFS
 -		clients.</entry>
 +	      <entry>The <acronym>NFS</acronym> daemon which services requests from
 +              the <acronym>NFS</acronym> clients.</entry>
  	    </row>
  	    <row>
  	      <entry>mountd</entry>
 -	      <entry>The NFS Mount Daemon which actually carries out
 -		requests that &man.nfsd.8; passes on to it.</entry>
 +	      <entry>The <acronym>NFS</acronym> mount daemon which carries out
 +		the requests that &man.nfsd.8; passes on to it.</entry>
  	    </row>
  	    <row>
  	      <entry>portmap</entry>
 -	      <entry> The <command>portmapper</command> daemon which
 -		allows NFS clients to find out which port the NFS server
 -		is using.</entry>
 +	      <entry> The portmapper daemon
 +		allows <acronym>NFS</acronym> clients to discover which port the <acronym>NFS</acronym> server
 +                is using.</entry>
  	    </row>
  	  </tbody>
  	</tgroup>
        </informaltable>
  
 -      <para>The client side only needs to run a single daemon:</para>
 -      <indexterm>
 -        <primary>NFS</primary>
 -        <secondary>client</secondary>
 -      </indexterm>
 -      <indexterm>
 -        <primary><application>nfsiod</application></primary>
 -      </indexterm>
 -
 -      <informaltable frame="none">
 -	<tgroup cols="2">
 -	  <tbody>
 -	    <row>
 -	      <entry>nfsiod</entry>
 -	      <entry>The NFS async I/O Daemon which services requests
 -		from its NFS server.</entry>
 -	    </row>
 -	  </tbody>
 -	</tgroup>
 -      </informaltable>
 +      <para>The client can also run a daemon, known as
 +        <application>nfsiod</application>.  The <application>nfsiod</application>
 +        daemon services the requests from the <acronym>NFS</acronym> server.  This
 +        is optional, and improves performance, but is not required for normal
 +        and correct operation.  See the &man.nfsiod.8; man page for more information.
 +      </para>
      </sect2>
  
      <sect2 id="configuring-nfs">
 -      <title>Configuring NFS</title>
 +      <title>Configuring <acronym>NFS</acronym></title>
        <indexterm>
          <primary>NFS</primary>
          <secondary>configuration</secondary>
        </indexterm>
  
 -      <para>Luckily for us, on a FreeBSD system this setup is a snap.  The
 -	processes that need to be running can all be run at boot time with
 +      <para><acronym>NFS</acronym> configuration is relatively straightforward
 +        process.  The processes that need to be running can all start at boot time with
  	a few modifications to your <filename>/etc/rc.conf</filename>
 -	file.</para>
 +        file.</para>
  
 -      <para>On the NFS server make sure you have:</para>
 +      <para>On the <acronym>NFS</acronym> server, make sure that the following options
 +        are configured in the <filename>/etc/rc.conf</filename> file:</para>
  
        <programlisting>portmap_enable="YES"
  nfs_server_enable="YES"
 -nfs_server_flags="-u -t -n 4"
  mountd_flags="-r"</programlisting>
  
 -      <para><command>mountd</command> is automatically run whenever the
 -	NFS server is enabled.  The <option>-u</option> and
 -	<option>-t</option> flags to <command>nfsd</command> tell it to
 -	serve UDP and TCP clients.  The <option>-n 4</option> flag tells
 -	<command>nfsd</command> to start 4 copies of itself.</para>
 +      <para><command>mountd</command> runs automatically whenever the
 +	<acronym>NFS</acronym> server is enabled.
  
 -      <para>On the client, make sure you have:</para>
 +      <para>On the client, make sure this option is present in
 +        <filename>/etc/rc.conf</filename>:</para>
  
        <programlisting>nfs_client_enable="YES"
 -nfs_client_flags="-n 4"</programlisting>
 -
 -      <para>Like <command>nfsd</command>, the <option>-n 4</option> tells
 -	<command>nfsiod</command> to start 4 copies of itself.</para>
 +        </programlisting>
  
 -      <para>The last configuration step requires that you create a file
 -	called <filename>/etc/exports</filename>.  The exports file
 -	specifies which file systems on your server will be shared
 -	(a.k.a., <quote>exported</quote>) and with what clients they will
 -	be shared.  Each line in the file specifies a file system to be
 -	shared.  There are a handful of options that can be used in this
 -	file but only a few will be mentioned here.  You can find out
 -	about the rest in the &man.exports.5; manual page.</para>
 +      <para>
 +        The <filename>/etc/exports</filename>
 +        file specifies which filesystems <acronym>NFS</acronym> should export (sometimes
 +        referred to as <quote>share</quote>).
 +        Each line in <filename>/etc/exports</filename> specifies a filesystem to be exported and
 +        which machines have access to that filesystem.  Along with what machines have access
 +        to that filesystem, access options may also be specified.  There are many such options
 +        that can be used in this file but only a few will be mentioned here.  You can easily discover
 +	other options by reading over the &man.exports.5; manual page.
 +      </para>
  
        <para>Here are a few example <filename>/etc/exports</filename>
  	entries:</para>
  
        <indexterm>
          <primary>NFS</primary>
 -        <secondary>exporting filesystems</secondary>
 +        <secondary>Examples of exporting filesystems</secondary>
        </indexterm>
 -      <para>The following line exports <filename>/cdrom</filename> to
 -	three silly machines that have the same domain name as the server
 +
 +      <para>The following examples give an idea of how to export filesystems,
 +        although the settings may be different depending on
 +        your environment and network configuration.
 +        The following line exports <filename>/cdrom</filename> to
 +	three example machines that have the same domain name as the server
  	(hence the lack of a domain name for each) or have entries in your
  	<filename>/etc/hosts</filename> file.  The <option>-ro</option>
 -	flag makes the shared file system read-only.  With this flag, the
 -	remote system will not be able to make any changes to the
 -	shared file system.</para>
 +	flag makes the exported file system read-only.  With this flag, the
 +	remote system will not be able to write any changes to the
 +	exported file system.</para>
  
 -      <programlisting>/cdrom -ro moe larry curly</programlisting>
 +      <programlisting>/cdrom -ro host1 host2 host3</programlisting>
  
        <para>The following line exports <filename>/home</filename> to three
  	hosts by IP address.  This is a useful setup if you have a
 -	private network but do not have DNS running.  The
 -	<option>-alldirs</option> flag allows all the directories below
 -	the specified file system to be exported as well.</para>
 +	private network without a <acronym>DNS</acronym> server configured.
 +        Optionally the <filename>/etc/hosts</filename> file could be configured
 +        for internal hostnames; please review &man.hosts.5; for more
 +        information.  The <option>-alldirs</option> flag allows the directories
 +        below the specified filesystem to also be exported.</para>
  
        <programlisting>/home  -alldirs  10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
  
 -      <para>The following line exports <filename>/a</filename> to two
 -	machines that have different domain names than the server.  The
 -	<option>-maproot=0</option> flag allows
 -        the root user on the remote system to write to the shared
 -        file system as root.  Without the -maproot=0 flag even if
 -        someone has root access on the remote system they will not
 -        be able to modify files on the shared file system.</para>
 +      <para>The following line exports <filename>/a</filename> so that two
 +	clients from different domains may access the filesystem.  The
 +	<option>-maproot=0</option> flag allows the <username>root</username>
 +        user on the remote system to write data on the exported filesystem as
 +        <username>root</username>.  If the -maproot=0 flag is not specified, then even if
 +        a user has <username>root</username> access on the remote system, they will not
 +        be able to modify files on the exported filesystem.</para>
  
 -      <programlisting>/a  -maproot=0  host.domain.com box.example.com</programlisting>
 +      <programlisting>/a  -maproot=0  host.example.com box.example.org</programlisting>
  
 -      <para>In order for a client to access- an exported file system it must
 -	have permission to do so.  Make sure your client is listed in your
 +      <para>In order for a client to access an exported filesystem, the client must
 +	have permission to do so.  Make sure the client is listed in your
  	<filename>/etc/exports</filename> file.</para>
  
        <para>In <filename>/etc/exports</filename>, each line represents
  	the export information for one filesystem to one host.  A
 -	remote host can only be specified once for each local
 -	filesystem, and you can only have one default entry per local
 -	filesystem.  For example, let's assume that
 -	<filename>/usr</filename> is a single filesystem.  The
 -	following <filename>/etc/exports</filename> is invalid:</para>
 +	remote host can only be specified once per filesystem, and may only
 +        have one default entry.  For example, assume that <filename>/usr</filename>
 +        is a single filesystem.  The following <filename>/etc/exports</filename>
 +        would be valid:</para>
  
        <programlisting>/usr/src   client
  /usr/ports client</programlisting>
  
        <para>One filesystem, <filename>/usr</filename>, has two lines
 -	specifying its exports to the same host,
 -	<hostid>client</hostid>. The correct format is:</para>
 +	specifying exports to the same host, <hostid>client</hostid>.
 +        The correct format for this situation is:</para>
  
        <programlisting>/usr/src /usr/ports  client</programlisting>
  
 @@ -874,40 +866,41 @@
  # client01 has root privileges on it
  /usr/src /usr/ports -maproot=0    client01
  /usr/src /usr/ports               client02
 -# The "client" machines have root and can mount anywhere
 -# up /exports. Anyone inhe world can mount /exports/obj read-only
 +# The client machines have root and can mount anywhere
 +# on /exports. Anyone in the world can mount /exports/obj read-only
  /exports -alldirs -maproot=0      client01 client02
  /exports/obj -ro</programlisting>
  
        <para>You must restart
          <command>mountd</command> whenever you modify
 -        <filename>/etc/exports</filename> to make changes take
 -        effect.  This can be accomplished by sending the hangup signal
 +        <filename>/etc/exports</filename> so the changes can take effect.
 +        This can be accomplished by sending the hangup signal
          to the <command>mountd</command> process:</para>
  
        <screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen>
  
 -      <para>Now that you have made all these changes you can just reboot
 -	and let FreeBSD start everything for you at boot time, or you can
 -	run the following commands as root:</para>
 +      <para>Alternatively, a reboot will make FreeBSD set everything
 +        up properly.  A reboot is not necessary though.
 +        Executing the following commands as <username>root</username>,
 +        should start everything up.</para>
  
 -      <para>On the NFS server:</para>
 +      <para>On the <acronym>NFS</acronym> server:</para>
  
        <screen>&prompt.root; <userinput>portmap</userinput>
  &prompt.root; <userinput>nfsd -u -t -n 4</userinput>
  &prompt.root; <userinput>mountd -r</userinput></screen>
  
 -      <para>On the NFS client:</para>
 +      <para>On the <acronym>NFS</acronym> client:</para>
  
        <screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen>
  
 -      <para>Now you should be ready to actually mount a remote file
 -	system.  This can be done one of two ways.  In these examples the
 +      <para>Now everything should be ready to actually mount a remote file
 +	system.  In these examples the
  	server's name will be <literal>server</literal> and the client's
 -	name will be <literal>client</literal>.  If you just want to
 -	temporarily mount a remote file system or just want to test out
 -	your configuration you can run a command like this as root on the
 -	client:</para>
 +	name will be <literal>client</literal>.  If you only want to
 +	temporarily mount a remote file system or would rather test the
 +	configuration, just execute a command like this as <username>root</username> on the
 +        client:</para>
        <indexterm>
          <primary>NFS</primary>
          <secondary>mounting filesystems</secondary>
 @@ -916,56 +909,59 @@
  
        <para>This will mount the <filename>/home</filename> directory
  	on the server at <filename>/mnt</filename> on the client.  If
 -	everything is setup correctly you should be able to go into
 -	/mnt on the client and see all the files that are on the
 -	server.</para>
 -
 -      <para>If you want to automatically mount a remote file system
 -	each time the computer boots, add the filesystem to
 -	<filename>/etc/fstab</filename>.  Here is an example:</para>
 +	everything is set up correctly you should be able to enter
 +	<filename>/mnt</filename> on the client and see all the files
 +        that are on the server.</para>
 +
 +      <para>If you want to automatically mount a remote filesystem
 +	each time the computer boots, add the filesystem to the
 +	<filename>/etc/fstab</filename> file.  Here is an example:</para>
  
        <programlisting>server:/home	/mnt	nfs	rw	0	0</programlisting>
  
 -      <para>Read the &man.fstab.5; manual page for more options.</para>
 +      <para>The &man.fstab.5; manual page lists all the available options.</para>
      </sect2>
  
      <sect2>
        <title>Practical Uses</title>
  
 -      <para>There are many very cool uses for NFS.  Some of the more common
 -        ones are listed below.</para>
 +      <para><acronym>NFS</acronym> has many practical uses.  Some of the more common
 +        ones are listed below:</para>
 +
 +          <note><para>The following <acronym>NFS</acronym> examples require
 +            <acronym>NFS</acronym> to be correctly configured before actual use,
 +            as previously discussed.</para>
 +          </note>
 +
        <indexterm>
          <primary>NFS</primary>
          <secondary>uses</secondary>
        </indexterm>
        <itemizedlist>
          <listitem>
 -	  <para>Have several machines on a network and share a CDROM or
 -	    floppy drive among them.  This is cheaper and often more
 -	    convenient.</para>
 +	  <para>Set several machines to share a CDROM or
 +	    other media among them.  This is cheaper and often
 +            more convenient.</para>
  	</listitem>
  
  	<listitem>
 -	  <para>With so many machines on a network, it gets old having your
 -	    personal files strewn all over the place.  You can have a
 -	    central NFS server that houses all user home directories and
 -	    shares them with the rest of the machines on the LAN, so no
 -	    matter where you log in you will have the same home
 -	    directory.</para>
 +	  <para>On large networks, it might be more convenient to configure a
 +	    central <acronym>NFS</acronym> server in which to store all the user
 +            home directories. These home directories can then be exported to
 +            the network so that users would always have the same home directory,
 +            regardless of which workstation they log in to.</para>
  	</listitem>
  
  	<listitem>
 -	  <para>When you get to reinstalling FreeBSD on one of your
 -	    machines, NFS is the way to go!  Just pop your distribution
 -	    CDROM into your file server and away you go!</para>
 +	  <para>You can use an exported CDROM to install
 +            software on multiple machines.</para>
  	</listitem>
  
  	<listitem>
 -	  <para>Have a common <filename>/usr/ports/distfiles</filename>
 -	    directory that all your machines share.  That way, when you go
 -	    to install a port that you have already installed on a different
 -	    machine, you do not have to download the source all over
 -	    again!</para>
 +	  <para>Several machines could have a common <filename>/usr/ports/distfiles</filename>
 +	    directory.
 +            That way, when you need to install a port on several machines, you can
 +            quickly access the source without downloading it on each machine.</para>
  	</listitem>
        </itemizedlist>
      </sect2>
 @@ -992,14 +988,15 @@
        <indexterm><primary>amd</primary></indexterm>
        <indexterm><primary>automatic mounter daemon</primary></indexterm>
  
 -      <para>&man.amd.8;, which is also known as the automatic mounter
 -	daemon, is a useful utility used for automatically mounting a
 +      <para>&man.amd.8; (the automatic mounter daemon)
 +	is a useful that automatically mounts a
  	remote filesystem whenever a file or directory within that
  	filesystem is accessed.  Filesystems that are inactive for a
  	period of time will also be automatically unmounted by
  	<application>amd</application>.  Using
 -	<application>amd</application> provides a simplistic alternative
 -	to static mounts.</para>
 +	<application>amd</application> provides a simple alternative
 +	to permanent mounts, as permanent mounts should be listed in the
 +        <filename>/etc/fstab</filename>.</para>
  
        <para><application>amd</application> operates by attaching
  	itself as an NFS server to the <filename>/host</filename> and

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202262110.g1QLA2f07435>