Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Mar 2002 15:25:07 -0500
From:      Michael Lucas <mwlucas@blackhelicopters.org>
To:        Tom Rhodes <darklogik@pittgoth.com>
Cc:        freebsd-doc@FreeBSD.ORG
Subject:   Re: docs/35098: [PATCH] Handbook NFS stuff
Message-ID:  <20020302152507.A83170@blackhelicopters.org>
In-Reply-To: <200202262110.g1QLA2f07435@freefall.freebsd.org>; from darklogik@pittgoth.com on Tue, Feb 26, 2002 at 01:10:02PM -0800
References:  <200202262110.g1QLA2f07435@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Okay, I think I'm done ripping on this poor guys work.  Anything left
for me to say is purely stylistic.

Anyone else care to comment?

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

-- 
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/

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




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