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