Bug 35098

Summary: NFS chapter simultaneously sucks and blows
Product: Documentation Reporter: Michael W Lucas <mwlucas>
Component: Books & ArticlesAssignee: freebsd-doc (Nobody) <doc>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Michael W Lucas 2002-02-19 01:20:01 UTC
Per our discussions at the BSDCon BoF, here's my stab at a "copy edit"
for the NFS chapter.  Unfortunately, I'm too busy dealing with my book
mss. to clean this up myself, so I have no option but to send it in as
a PR.  If this is deemed useful, I will keep it up until the word
"Lucasify" enters the FreeBSD DocProj vocabulary.

This is presented in the spirit of "give a committer patches, and the
chapter will be fixed.  Give the committer feedback, flames, and
general sarcastic abuse pointing out his flaws, and the committer will
never make that same mistake again."  :)

Fix: 

Summary: too many words, and not the right ones either!

Suggestion to fix this chapter: print it out.  Get a red pen.  Read
the chapter aloud.  Yes, in a voice loud enough to be heard.  Listen
to the sound of your own voice.  If something sounds odd or verbose,
or if you cannot read a sentence aloud, mark it for evaluation when
you're done.

sentence 2: "you" don't share directories.  Your system shares
directories.  (Of course, perhaps your wetware supports NFS; I edited
that out of my personal kernel.)  This sort of thing is a good
candidate for a global search-and-destroy mission.  "via the network
they are attached to."  As opposed to the network that they are *not*
attached to?  How about just "via the network."?

bullet 1: "...and still remain accessible to everyone on the network."
Of course, these files are accessible even if the workstations had
disks.  This explanation should be tightened, as B either does not
really follow from A or is painfully obvious.

bullet 2: "that is" is unnecessary and verbose.  "Home directories
exported via NFS can be available to their user from any machine"
would be better, but this can and should be made tighter and more
specific still.

bullet 3: this sentence needs some sort of a comma.  Try reading it
aloud in one natural breath.  (deep breaths don't count.)  Also, you
aren't exactly "eliminating the need for extra hardware," more
"reducing hardware needs."  We all know that there is no extra
hardware, and most systems ship with floppy/CDROM today.

17.4.1

sentence 1: side, side, side.  Redundant.  The server, the client,
period.

sentence 2: ambiguous "it".

sentence 3: "client" "server side".  neither should have side, or both
should have side. Recommend cutting "side."

"The server has to be running the following daemons:" tighten, i.e.: "NFS
servers run the following daemons:"  Easy passive voice elimination.

Hmmm... then we have "daemon description" in bold, followed by a list.
The "client side" description below runs right into it, almost as if
it is part of the same list.  Hard to sort out, blech.

The description of nfsiod is somewhat obtuse.  "async I/O"; why is
this important to a beginner?  Also, why is Daemon capitalized?  This
daemon serves requests from the NFS server, but why is it running on
the client?  Does the server ask the client for things, or does the
client as the server?  WTF?

17.4.2:

"Luckily for us, on a FreeBSD system this setup is a snap."  Uh, these
are pretty strong words here.  Are we really, *really* ready to back
them up?  Not with this chapter, we aren't.

para 2: "make sure you have"... variable settings.

Oh, I have these all right.  I typed them in at the command line.
That's where you want them, right?  Oh, they go in /etc/rc.conf?
Well, why didn't you say so?

para 3:  "mountd is automatically run" -> "mountd runs automatically"

We describe the various nfsd options, but why are these options
important?  If we don't say why these are important, why mention them?
And what are the settings from /etc/defaults/rc.conf?  Why mention
settings that are the default, is this the FreeBSD docproj standard?
If so, the Handbook needs to be edited to include this in all the
other places.  (The other option, of course, is that we want to
confuse our reader to maintain our highfalutin' 133t image.)

para 4: "On the client, make sure you have"; again, have where?  Also,
nfs_client_flags is set by default in /etc/defaults, why explicitly
mention it here?

So we come to /etc/exports.  The most frequently screwed-up portion of
NFS setup isn't important enough to rate its own section heading?

"The last configuration step requires that you create a file called
/etc/exports" -> "Last, create /etc/exports."  This might be too
tight, but what appears is certainly too verbose.  Better still, give
this section a heading and eliminate the first sentence.  "The exports
file specifies which file systems..." is a perfectly acceptable first
sentence.  This sentence could be tightened as well, though.

So, we go through and give some examples.  This actually doesn't suck
too badly.

Doesn't making these changes take effect and starting the commands
rate its own header, or is this really part of configuring NFS?
Should be set aside from /etc/exports at least.

"You must restart mountd whenever you modify /etc/exports to make
changes take effect. This can be accomplished by sending the hangup
signal to the mountd process:" -> "To make changes in /etc/exports
take effect, restart mountd."  The example shows exactly how to do
this; people who know how to restart mountd won't care, while novices
don't give a dang about "hangup signals," they just want to know what
to type.

"Now that you have made all these changes..."  We have a sentence that
ends in a colon, followed by two sentences that end in a colon.

"This can be done one of two ways."  We describe one way that it can
be mounted, and then describe the way to have this type of mount take
place at boot time.  What's the second way?  Actually, it can only be
mounted in one way.  Mounts can be done at boot, or manually, but they
are actually performed the same way.  (This is an example of "can be
misunderstood.")

17.4.3:

bullet 2: the grammar in the first sentence is so bad, I don't know
where to start making fun of it.

bullet 3: So, if I drop a CDROM into one machine I'll be ready to go?
Shouldn't I, say, set up /etc/exports first?  Why is this better than
setting up a FTP server on the same machine?

17.4.4

"amd, which is also known as the automatic mounter daemon, is"-> "amd, the automatic mounter daemon, is"

amd isn't just for remote filesystems; see 2/2002 Daemon News.

"Using amd provides a simplistic alternative to static mounts" -> amd
is not simplistic, but it is simple.  Also, it isn't an alternative to
static mounts, it's an alternative to permanent mounts.  If these
mounts were permanent, they would be in /etc/fstab.

The section on showmount isn't relevant to amd.  It is an excellent
example to see what is available from a server, and should be listed
under the NFS section.

Again, why show default amd flags?  Are we going to explain all of
these, and when to change them?

17.4.5

This whole section is old.  Very, very old -- it specifically
references ISA cards..  And it doesn't mention the more common issues
of NFS mounts, which are different types of support on the server and
client.

Some enterprising person could dig through the freebsd-net archives
and create a list of "reasonable options to use when
mounting/exporting from/to other OSs."  You could list Solaris 2.6,
2.7, 2.8, AIX 3, AIX 4, Linux 2.0, Linux 2.2, Linux 2.4, and so on.

While you're at it, FreeBSD's default NFS mounts are awful.  They are
the most widely interoperable, but they're awful for more modern
systems.  We should document the better options.  Again, these are
available from the freebsd-net archives.
How-To-Repeat: 
read the NFS chapter
Comment 1 Michael W Lucas 2002-02-19 21:43:43 UTC
It's yours.

Since I'm trying to create more "copy-aware" -doc contributors, I'm
going to pay close attention to the patch.  </me shaves head, breaks
out jackboots and riding crop.>  You have been warned.

I suspect this would be easier to discuss in smaller patches, rather
than one patch-o-doom.

On Tue, Feb 19, 2002 at 04:50:45PM -0500, Tom Rhodes wrote:
> Noone has stood up yet... hehe, This ones mine (if noone minds of course) ;)
> 
> 
> -- 
> Tom (Darklogik) Rhodes
> www.Pittgoth.com Gothic Liberation Front
> www.FreeBSD.org  The Power To Serve

-- 
Michael Lucas		mwlucas@FreeBSD.org, mwlucas@BlackHelicopters.org
my FreeBSD column: http://www.oreillynet.com/pub/q/Big_Scary_Daemons

http://www.blackhelicopters.org/~mwlucas/
Comment 2 darklogik 2002-02-19 21:50:45 UTC
Noone has stood up yet... hehe, This ones mine (if noone minds of course) ;)


-- 
Tom (Darklogik) Rhodes
www.Pittgoth.com Gothic Liberation Front
www.FreeBSD.org  The Power To Serve
Comment 3 darklogik 2002-02-20 03:49:29 UTC
Please review this, it has alot of your ideas, but a few of my own
tossed in here.  I did cover more ground than listed, and have yet
to touch the amd part, well, more than the first paragraph hehe

--
Tom (darklogik) Rhodes

diff -ru handbook.old/advanced-networking/chapter.sgml handbook/advanced-networking/chapter.sgml
--- handbook.old/advanced-networking/chapter.sgml	Tue Feb 19 16:19:33 2002
+++ handbook/advanced-networking/chapter.sgml	Tue Feb 19 22:42:26 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,42 @@
 
     <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
-      files.</para>
+      the Network File System also known as <acronym>NFS</acronym>.
+      <acronym>NFS</acronym> allows your system to share directories and files on
+      with others over the 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 benefits for using <acronym>NFS</acronym> 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>
+	<para>There would be no need for users to have unique home directories
+	  on every network machine.  Once they have an established a home
+	  directory that is available on an <acronym>NFS</acronym> filesystem,
+          it can be accessed from anywhere on 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 elimininate the
+          need for every system to have a CDROM or ZIP drive, providing a more
+          cost effective solution.</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 parts; a client and
+	a server. The client remotely accesses the data that is stored locally
+        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,85 +728,73 @@
 	  <tbody>
 	    <row>
 	      <entry>nfsd</entry> 
-	      <entry>The NFS Daemon which services requests from NFS
-		clients.</entry>
+	      <entry>The <acronym>NFS</acronym> daemon which serves requests from
+              the <acronym>NFS</acronym> clients.</entry>
 	    </row>
 	    <row>
 	      <entry>mountd</entry>
-	      <entry>The NFS Mount Daemon which actually carries out
+	      <entry>The <acronym>NFS</acronym> mount daemon which actually carries out
 		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 <command>portmapper</command> daemon
+		allows <acronym>NFS</acronym> clients to find out 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 a <acronym>NFS</acronym> server.  This,
+        is optional, and improves performance, but not really 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>On FreeBSD, the setup of <acronym>NFS</acronym> is a relatively straightforward
+        process.  The processes that need to be running can all be run at boot time with
 	a few modifications to your <filename>/etc/rc.conf</filename>
 	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
+        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
+      <para><command>mountd</command> runs automatically whenever the
+	<acronym>NFS</acronym> server is enabled.  The <option>-u</option> and
+	<option>-t</option> flags tell <command>nfsd</command> to
 	serve UDP and TCP clients.  The <option>-n 4</option> flag tells
 	<command>nfsd</command> to start 4 copies of itself.</para>
 
-      <para>On the client, make sure you have:</para>
+      <para>On the client, make sure these options are present in the
+        <filename>/etc/rc.conf</filename> file:</para>
 
       <programlisting>nfs_client_enable="YES"
 nfs_client_flags="-n 4"</programlisting>
 
-      <para>Like <command>nfsd</command>, the <option>-n 4</option> tells
+      <para>Like with <command>nfsd</command>, the <option>-n 4</option> tells
 	<command>nfsiod</command> to start 4 copies of itself.</para>
 
-      <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
+      <para>The <acronym>NFS</acronym> configuration requires that a file
+	called <filename>/etc/exports</filename> exsists.  The exports file
+	specifies which file systems on your server will be exported
+	or <quote>shared</quote> and with what clients they will
+	exported too.  Each line in the file specifies a file system to be
+	exported.  There are many 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>
 
@@ -810,54 +803,57 @@
 
       <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>In the following examples, an idea of how to export filesystems
+        is displayed, although the settings may be different depending on
+        environment and network setup.
+        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 example1 example2 example3</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
+	private network but do not have a <acronym>DNS</acronym> server configured.  The
+	<option>-alldirs</option> flag allows for all of the directories below
 	the specified file system to be exported as well.</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
+	machines with different domain names may access the server.  The
+	<option>-maproot=0</option> flag allows the <username>root</username>
+        user on the remote system to write data on the exported file system as
+        <username>root</username>.  Without the -maproot=0 flag, even if
+        someone has <username>root</username> access on the remote system they will not
+        be able to modify files on the exported file system.</para>
 
-      <programlisting>/a  -maproot=0  host.domain.com box.example.com</programlisting>
+      <programlisting>/a  -maproot=0  host.example.com box.example2.com</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 file system, 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
+      <para>In the <filename>/etc/exports</filename> file, 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
+	remote host can only be specified once per
+	filesystem, and may only have one default entry for each
 	filesystem.  For example, let's assume that
 	<filename>/usr</filename> is a single filesystem.  The
-	following <filename>/etc/exports</filename> is invalid:</para>
+	following <filename>/etc/exports</filename> would be invalid:</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 its exports to the same host, <hostid>client</hostid>.
+        The correct format for this situation is:</para>
 
       <programlisting>/usr/src /usr/ports  client</programlisting>
 
@@ -874,39 +870,39 @@
 # 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
+      <para>You must restart <command>mountd</command> whenever you modify
+        <filename>/etc/exports</filename> to make the changes current.
+        This can be accomplished by either 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>Or, a simple reboot should make FreeBSD set everything up
+        for you.  Although, a reboot is not nessissary
+	the following commands, run as <username>root</username> of course,
+        could start everything up also.</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
+      <para>Now everything should be ready to actually mount a remote file
 	system.  This can be done one of two ways.  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
+	temporarily mount a remote file system or just want to test the
+	configuration, just run a command like this as <username>root</username> on the
 	client:</para>
       <indexterm>
         <primary>NFS</primary>
@@ -916,56 +912,56 @@
 
       <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
+	everything is setup 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 file system
-	each time the computer boots, add the filesystem to
-	<filename>/etc/fstab</filename>.  Here is an example:</para>
+	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 will show many more options that are available.</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>There are many practical uses for <acronym>NFS</acronym>.  Some of the
+        more common ones are listed below:</para>
+
+          <note><para>The following practicle <acronym>NFS</acronym> examples require
+            the proper <acronym>NFS</acronym> configuration before actual use.</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>Setup several machines on a network to share a CDROM or
+	    floppy drive 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>With so many machines on a network, you can have a
+	    central <acronym>NFS</acronym> server store the user home directories and
+	    export them with the rest of the machines on the network, this way
+	    users can 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 one CDROM on the <acronym>NFS</acronym> server to install
+            FreeBSD over the network 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 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,14 @@
       <indexterm><primary>amd</primary></indexterm>
       <indexterm><primary>automatic mounter daemon</primary></indexterm>
 
-      <para>&man.amd.8;, which is also known as the automatic mounter
+      <para>&man.amd.8;, also known as the automatic mounter
 	daemon, is a useful utility used for automatically mounting 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>
+	to perminant mounts.</para>
 
       <para><application>amd</application> operates by attaching
 	itself as an NFS server to the <filename>/host</filename> and
Comment 4 darklogik 2002-02-20 05:30:13 UTC
Major apologies, lol.  I was reading over the diff on the pr
site, and noticed some mistakes, and improvments that could and should
be made.  So, here again, another patch, fixing a few spelling
errors, and even some grammer ;)

--
Tom Rhodes

***********************


diff -ru handbook.old/advanced-networking/chapter.sgml handbook/advanced-networking/chapter.sgml
--- handbook.old/advanced-networking/chapter.sgml	Tue Feb 19 16:19:33 2002
+++ handbook/advanced-networking/chapter.sgml	Wed Feb 20 00:29:22 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,42 @@
 
     <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
-      files.</para>
+      the Network File System also known as <acronym>NFS</acronym>.
+      <acronym>NFS</acronym> allows your system to share directories and files
+      with others over the 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 benefits for using <acronym>NFS</acronym> 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>
+	<para>There would be no need for users to have unique home directories
+	  on every network machine.  Once they have an established a home
+	  directory that is available on an <acronym>NFS</acronym> filesystem,
+          it can be accessed from other machines on 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 eliminate the
+          need for every system to have a CDROM or ZIP drive, providing a more
+          cost effective solution.</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 client
+        and a server. The client remotely accesses the data that is stored locally
+        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,86 +728,73 @@
 	  <tbody>
 	    <row>
 	      <entry>nfsd</entry> 
-	      <entry>The NFS Daemon which services requests from NFS
-		clients.</entry>
+	      <entry>The <acronym>NFS</acronym> daemon which serves requests from
+              the <acronym>NFS</acronym> clients.</entry>
 	    </row>
 	    <row>
 	      <entry>mountd</entry>
-	      <entry>The NFS Mount Daemon which actually carries out
+	      <entry>The <acronym>NFS</acronym> mount daemon which actually carries out
 		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 <command>portmapper</command> daemon
+		allows <acronym>NFS</acronym> clients to find out 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 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
-	a few modifications to your <filename>/etc/rc.conf</filename>
-	file.</para>
+      <para>On FreeBSD, the setup of <acronym>NFS</acronym> is a 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>
 
-      <para>On the NFS server make sure you have:</para>
+      <para>On the <acronym>NFS</acronym> server, make sure that the following options
+        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
+      <para><command>mountd</command> runs automatically whenever the
+	<acronym>NFS</acronym> server is enabled.  The <option>-u</option> and
+	<option>-t</option> flags tell <command>nfsd</command> to
 	serve UDP and TCP clients.  The <option>-n 4</option> flag tells
 	<command>nfsd</command> to start 4 copies of itself.</para>
 
-      <para>On the client, make sure you have:</para>
+      <para>On the client, make sure these options are present in the
+        <filename>/etc/rc.conf</filename> file:</para>
 
       <programlisting>nfs_client_enable="YES"
 nfs_client_flags="-n 4"</programlisting>
 
-      <para>Like <command>nfsd</command>, the <option>-n 4</option> tells
+      <para>Like with <command>nfsd</command>, the <option>-n 4</option> tells
 	<command>nfsiod</command> to start 4 copies of itself.</para>
 
-      <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
+      <para>The <acronym>NFS</acronym> configuration requires that a file
+	called <filename>/etc/exports</filename> exists.  The
+        <filename>exports</filename> file specifies which filesystems
+        on your server will be exported or <quote>shared</quote> and with
+        what clients they will exported too.  Each line in the file specifies
+        a filesystem to be exported.  There are many 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>Here are a few example <filename>/etc/exports</filename>
@@ -810,54 +802,56 @@
 
       <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>In the following examples, an idea of how to export filesystems
+        is displayed, although the settings may be different depending on
+        environment and network setup.
+        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 example1 example2 example3</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
+	private network but do not have a <acronym>DNS</acronym> server configured.
+	The <option>-alldirs</option> flag allows for all of the directories below
 	the specified file system to be exported as well.</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
+	machines with different domain names 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 file system as
+        <username>root</username>.  Without the -maproot=0 flag, even if
+        someone 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.example2.com</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
+      <para>In the <filename>/etc/exports</filename> file, 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
+	remote host can only be specified once per filesystem, and may only
+        have one default entry for each.  For example, assume that
 	<filename>/usr</filename> is a single filesystem.  The
-	following <filename>/etc/exports</filename> is invalid:</para>
+	following <filename>/etc/exports</filename> would be invalid:</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 +868,40 @@
 # 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
+      <para>You must restart <command>mountd</command> whenever you modify
+        <filename>/etc/exports</filename> to make the changes current.
+        This can be accomplished by either 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>Or by a simple reboot, which should make FreeBSD set everything
+        up.  Although, a reboot is not necessary the following commands,
+        run as <username>root</username> of course, could start everything
+        up also.</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
+      <para>Now everything should be ready to actually mount a remote file
 	system.  This can be done one of two ways.  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>
+	temporarily mount a remote file system or just want to test the
+	configuration, just run a command like this as <username>root</username>
+        on the client:</para>
       <indexterm>
         <primary>NFS</primary>
         <secondary>mounting filesystems</secondary>
@@ -916,56 +910,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 setup 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 will show many more options
+        that are available here.</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>There are many practical uses for <acronym>NFS</acronym>.  Some of the
+        more common ones are listed below:</para>
+
+          <note><para>The following practical <acronym>NFS</acronym> examples require
+            the proper <acronym>NFS</acronym> configuration before actual use, see
+            above.</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>Setup several machines on a network to share a CDROM or
+	    floppy drive 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>With so many machines on a network, you can have a
+	    central <acronym>NFS</acronym> server store the user home directories and
+	    export them to the rest of the machines on the network, this way
+	    users can 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 one CDROM on the <acronym>NFS</acronym> server to install
+            FreeBSD over the network 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, assuming of course all the machines are FreeBSD.
+            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 +989,14 @@
       <indexterm><primary>amd</primary></indexterm>
       <indexterm><primary>automatic mounter daemon</primary></indexterm>
 
-      <para>&man.amd.8;, which is also known as the automatic mounter
+      <para>&man.amd.8;, also known as the automatic mounter
 	daemon, is a useful utility used for automatically mounting 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>
+	to permanent mounts.</para>
 
       <para><application>amd</application> operates by attaching
 	itself as an NFS server to the <filename>/host</filename> and
Comment 5 darklogik 2002-02-21 06:00:48 UTC
Here we go again!  Another patch, I did various cleanups.  Using
many of the wonder ideas that Ceri gave me, and the few sent by
others, a complete redo is here.  One major note, I removed
<application> from portmapper, because I thought it looked ugly
after the build, but did not do any changes in the lines.  It should
be easy to modify this before the patch is actually applied.

Thanks to everyone who gave me their opinions!

--
Tom (darklogik) Rhodes
www.Pittgoth.com -The Gothic Liberation Front
www.FreeBSD.org  -The Power To Serve




diff -ru handbook.old/advanced-networking/chapter.sgml handbook/advanced-networking/chapter.sgml
--- handbook.old/advanced-networking/chapter.sgml	Tue Feb 19 16:19:33 2002
+++ handbook/advanced-networking/chapter.sgml	Thu Feb 21 00:55:41 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,42 @@
 
     <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
-      files.</para>
+      the Network File System, also known as <acronym>NFS</acronym>.
+      <acronym>NFS</acronym> allows your 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 benefits for using <acronym>NFS</acronym> 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>
+	<para>There would be no need for users to have unique home directories
+	  on every network machine.  Once they have an established a home
+	  directory that is available on an <acronym>NFS</acronym> filesystem,
+          it can be accessed from other machines on 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 eliminate the
+          need for every system to have a CDROM or ZIP drive, providing a more
+          cost effective solution.</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 client
+        and a server. 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 +728,134 @@
 	  <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
-	a few modifications to your <filename>/etc/rc.conf</filename>
-	file.</para>
+      <para>On FreeBSD, the setup of <acronym>NFS</acronym> is a 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>
 
-      <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
+      <para><command>mountd</command> runs automatically whenever the
+	<acronym>NFS</acronym> server is enabled.  The <option>-u</option> and
+	<option>-t</option> flags tell <command>nfsd</command> to
 	serve UDP and TCP clients.  The <option>-n 4</option> flag tells
 	<command>nfsd</command> to start 4 copies of itself.</para>
 
-      <para>On the client, make sure you have:</para>
+      <para>On the client, make sure these options are present in the
+        <filename>/etc/rc.conf</filename> file:</para>
 
       <programlisting>nfs_client_enable="YES"
 nfs_client_flags="-n 4"</programlisting>
 
-      <para>Like <command>nfsd</command>, the <option>-n 4</option> tells
+      <para>As with <command>nfsd</command>, the <option>-n 4</option> tells
 	<command>nfsiod</command> to start 4 copies of itself.</para>
 
-      <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 <acronym>NFS</acronym> configuration requires that a file
+	known as <filename>exports</filename> exist in the
+        <filename>/etc</filename> directory.  The <filename>/etc/exports</filename>
+        file specifies which filesystems on the server will be shared (or
+        <firstterm>exported</firstterm>), and with which clients.  Each line in
+        <filename>/etc/exports</filename> specifies a filesystem to be exported and
+        with which this will be done.  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>
+        <primary>Examples of exporting filesystems</primary>
       </indexterm>
-      <para>The following line exports <filename>/cdrom</filename> to
-	three silly machines that have the same domain name as the server
+
+      <para>In the following examples, an idea of how to export filesystems
+        is displayed, although the settings may be different depending on
+        your environment and network setup.
+        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 but do not have a <acronym>DNS</acronym> server configured.
+	The <option>-alldirs</option> flag allows for 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
+	machines with different domain names 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
+      <para>In the <filename>/etc/exports</filename> file, 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 entry.  For example, assume that <filename>/usr</filename>
+        is a single filesystem.  The following <filename>/etc/exports</filename>
+        would be invalid:</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 +872,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
+      <para>You must restart <command>mountd</command> whenever you modify
+        <filename>/etc/exports</filename> to make the changes current.
+        This can be accomplished by either 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 should make FreeBSD set everything
+        up properly if the previously described options were added to
+        <filename>/etc/rc.conf</filename>.  Although, a reboot is not necessary.
+        Executing the following commands, as <username>root</username> of course,
+        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
+      <para>Now everything should be ready to actually mount a remote file
 	system.  This can be done one of two ways.  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 +915,58 @@
 
       <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>There are many practical uses for <acronym>NFS</acronym>.  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, see
+            above.</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 up several machines on a network to share a CDROM or
+	    floppy drive 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 may be more convenient to configure a
+	    central <acronym>NFS</acronym> server in which to store all the user
+            home directories on. 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 one CDROM on the <acronym>NFS</acronym> server to install
+            FreeBSD over the network 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, assuming of course all the machines are FreeBSD.
+            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 +993,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 utility used for automatically mounting 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
Only in handbook: imagelib
Comment 6 darklogik 2002-02-23 15:46:46 UTC
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	Fri Feb 22 18:30:35 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,40 @@
 
     <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
-      files.</para>
+      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 +726,134 @@
 	  <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
-	a few modifications to your <filename>/etc/rc.conf</filename>
-	file.</para>
+      <para>On FreeBSD, the setup of <acronym>NFS</acronym> is a 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>
 
-      <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
+      <para><command>mountd</command> runs automatically whenever the
+	<acronym>NFS</acronym> server is enabled.  The <option>-u</option> and
+	<option>-t</option> flags tell <command>nfsd</command> to
 	serve UDP and TCP clients.  The <option>-n 4</option> flag tells
 	<command>nfsd</command> to start 4 copies of itself.</para>
 
-      <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>
+      <programlisting>nfs_client_enable="YES"</programlisting>
 
-      <para>Like <command>nfsd</command>, the <option>-n 4</option> tells
+      <para>As with <command>nfsd</command>, the <option>-n 4</option> tells
 	<command>nfsiod</command> to start 4 copies of itself.</para>
 
-      <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 <acronym>NFS</acronym> configuration requires that an
+	<filename>exports</filename> file be created in the
+        <filename>/etc</filename> directory.  The <filename>/etc/exports</filename>
+        file will specify 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>
+        <primary>Examples of exporting filesystems</primary>
       </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 view the &man.hosts.5; man page for more
+        information.  The <option>-alldirs</option> flag allows for 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 +870,40 @@
 # 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
+      <para>You must restart <command>mountd</command> whenever you modify
+        <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.  Although, a reboot is not necessary.
+        Executing the following commands, as <username>root</username> of course,
+        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
+      <para>Now everything should be ready to actually mount a remote file
 	system.  This can be done one of two ways.  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 +912,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.  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 +991,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 utility 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
Only in handbook/advanced-networking: chapter.sgml.orig
Comment 7 darklogik 2002-02-26 21:10:17 UTC
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
Comment 8 darklogik 2002-03-04 07:08:09 UTC
diff -ru handbook/advanced-networking/chapter.sgml handbook.new/advanced-networking/chapter.sgml
--- handbook/advanced-networking/chapter.sgml	Wed Feb 27 00:08:02 2002
+++ handbook.new/advanced-networking/chapter.sgml	Mon Mar  4 02:05:40 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>
+	<para>There is no need for users to have separate home directories
+	  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 throoughout the network.</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,127 @@
 	  <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; manual 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>On the client, make sure you have:</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>
-
-      <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><command>mountd</command> runs automatically whenever the
+        <acronym>NFS</acronym> server is enabled.</para>
+
+      <para>On the client, make sure this option is present in
+        <filename>/etc/rc.conf</filename>:</para>
+
+      <programlisting>nfs_client_enable="YES"</programlisting>
+
+      <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.
+        For instance, to export the <filename>/cdrom</filename> directory 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 +864,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 +907,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
+            a more convenient method to install software on multiple machines.</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 +986,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
Comment 9 darklogik 2002-03-05 23:39:38 UTC
diff -ru handbook/advanced-networking/chapter.sgml handbook.new/advanced-networking/chapter.sgml
--- handbook/advanced-networking/chapter.sgml	Wed Feb 27 00:08:02 2002
+++ handbook.new/advanced-networking/chapter.sgml	Tue Mar  5 18:33:28 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>
+	<para>There is no need for users to have separate home directories
+	  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 throughout the network.</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 one or more clients. 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; manual 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 a 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>On the client, make sure you have:</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>
-
-      <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><command>mountd</command> runs automatically whenever the
+        <acronym>NFS</acronym> server is enabled.</para>
+
+      <para>On the client, make sure this option is present in
+        <filename>/etc/rc.conf</filename>:</para>
+
+      <programlisting>nfs_client_enable="YES"</programlisting>
+
+      <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.
+        For instance, to export the <filename>/cdrom</filename> directory 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 subdirectories
+        to be mount points.  In other words, it will not mount the subdirectories
+        but permit the client to mount only the directories that are required or
+        needed.</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=root</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=root 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=root  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>
 
@@ -872,42 +864,43 @@
 
       <programlisting># Export src and ports to client01 and client02, but only
 # client01 has root privileges on it
-/usr/src /usr/ports -maproot=0    client01
+/usr/src /usr/ports -maproot=root    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
-/exports -alldirs -maproot=0      client01 client02
+# The client machines have root and can mount anywhere
+# on /exports. Anyone in the world can mount /exports/obj read-only
+/exports -alldirs -maproot=root      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,54 @@
 
       <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>
+
       <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
+            a more convenient method to install software on multiple machines.</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 +983,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 daemon 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
Comment 10 Michael W Lucas freebsd_committer freebsd_triage 2002-03-07 21:19:08 UTC
State Changed
From-To: open->closed

Committed, thanks! 

Changes may take up to 24 hours to appear on www.FreeBSD.org