svn commit: r40947 - head/en_US.ISO8859-1/books/handbook/filesystems

Dru Lavigne dru at FreeBSD.org
Mon Feb 11 14:58:34 UTC 2013


Author: dru
Date: Mon Feb 11 14:58:34 2013
New Revision: 40947
URL: http://svnweb.freebsd.org/changeset/doc/40947

Log:
  This patch addresses the following:
  
  - removes you
  
  - fixes xref
  
  - modernizes the intro
  
  - modernizes the ZFS RAM section
  
  - updates the date in one sample output
  
  Approved by:  gjb (mentor)

Modified:
  head/en_US.ISO8859-1/books/handbook/filesystems/chapter.xml

Modified: head/en_US.ISO8859-1/books/handbook/filesystems/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/handbook/filesystems/chapter.xml	Mon Feb 11 14:50:33 2013	(r40946)
+++ head/en_US.ISO8859-1/books/handbook/filesystems/chapter.xml	Mon Feb 11 14:58:34 2013	(r40947)
@@ -27,32 +27,30 @@
     </indexterm>
 
     <para>File systems are an integral part of any operating system.
-      They allow for users to upload and store files, provide access
-      to data, and of course, make hard drives useful.  Different
-      operating systems usually have one major aspect in common, that
-      is their native file system.  On &os; this file system is known
-      as the Fast File System or <acronym>FFS</acronym> which is built
-      on the original Unix™ File System, also known as
-      <acronym>UFS</acronym>.  This is the native file system on &os;
-      which is placed on hard disks for access to data.</para>
-
-    <para>&os; also supports a multitude of different file systems to
-      provide support for accessing data from other operating systems
-      locally, i.e., data stored on locally attached
-      <acronym>USB</acronym> storage devices, flash drives, and hard
-      disks.  There is also support for some non-native file systems.
-      These are file systems developed on other
-      operating systems, like the &linux; Extended File System
-      (<acronym>EXT</acronym>), and the &sun; Z File System
-      (<acronym>ZFS</acronym>).</para>
-
-    <para>There are different levels of support for the various file
-      systems in &os;.  Some will require a kernel module to be
-      loaded, others may require a toolset to be installed.  This
-      chapter is designed to help users of &os; access other file
-      systems on their systems, starting with the &sun; Z file
+      They allow users to upload and store files, provide access
+      to data, and make hard drives useful.  Different operating
+      systems differ in their native file system.  Traditionally, the
+      native &os; file system has been the Unix File System
+      <acronym>UFS</acronym> which has been recently modernized as
+      <acronym>UFS2</acronym>.  Since &os; 7.0, the Z File
+      System <acronym>ZFS</acronym> is also available as a native file
       system.</para>
 
+    <para>In addition to its native file systems, &os; supports a
+      multitude of other file systems so that data from other
+      operating systems can be accessed locally, such as data stored
+      on locally attached <acronym>USB</acronym> storage devices,
+      flash drives, and hard disks.  This includes support for the
+      &linux; Extended File System (<acronym>EXT</acronym>) and the
+      µsoft; New Technology File System
+      (<acronym>NTFS</acronym>).</para>
+
+    <para>There are different levels of &os; support for the various
+      file systems.  Some require a kernel module to be loaded and
+      others may require a toolset to be installed.  Some non-native
+      file system support is full read-write while others are
+      read-only.</para>
+
     <para>After reading this chapter, you will know:</para>
 
     <itemizedlist>
@@ -62,11 +60,11 @@
       </listitem>
 
       <listitem>
-	<para>What file systems are supported by &os;.</para>
+	<para>Which file systems are supported by &os;.</para>
       </listitem>
 
       <listitem>
-	<para>How to enable, configure, access and make use of
+	<para>How to enable, configure, access, and make use of
 	  non-native file systems.</para>
       </listitem>
     </itemizedlist>
@@ -75,24 +73,25 @@
 
     <itemizedlist>
       <listitem>
-	<para>Understand &unix; and &os; basics
-	  (<xref linkend="basics"/>).</para>
+	<para>Understand &unix; and <link
+	    linkend="basics">&os; basics</link>.</para>
       </listitem>
 
       <listitem>
-	<para>Be familiar with
-	  the basics of kernel configuration/compilation
-	  (<xref linkend="kernelconfig"/>).</para>
+	<para>Be familiar with the basics of <link
+	    linkend="kernelconfig">kernel configuration and
+	    compilation</link>.</para>
       </listitem>
 
       <listitem>
-	<para>Feel comfortable installing third party software
-	  in &os; (<xref linkend="ports"/>).</para>
+	<para>Feel comfortable <link linkend="ports">installing
+	    software</link> in &os;.</para>
       </listitem>
 
       <listitem>
-	<para>Have some familiarity with disks, storage and
-	  device names in &os; (<xref linkend="disks"/>).</para>
+	<para>Have some familiarity with <link
+	    linkend="disks">disks</link>, storage, and device names in
+	  &os;.</para>
       </listitem>
     </itemizedlist>
   </sect1>
@@ -100,73 +99,67 @@
   <sect1 id="filesystems-zfs">
     <title>The Z File System (ZFS)</title>
 
-    <para>The Z file system, developed by &sun;, is a new
-      technology designed to use a pooled storage method.  This means
-      that space is only used as it is needed for data storage.  It
-      has also been designed for maximum data integrity, supporting
-      data snapshots, multiple copies, and data checksums.  A new
-      data replication model, known as <acronym>RAID</acronym>-Z has
-      been added.  The <acronym>RAID</acronym>-Z model is similar
-      to <acronym>RAID</acronym>5 but is designed to prevent data
-      write corruption.</para>
+    <para>The Z file system, originally developed by &sun;,
+      is designed to use a pooled storage method in that space is only
+      used as it is needed for data storage.  It is also designed for
+      maximum data integrity, supporting data snapshots, multiple
+      copies, and data checksums.  It uses a software data replication
+      model, known as <acronym>RAID</acronym>-Z.
+      <acronym>RAID</acronym>-Z provides redundancy similar to
+      hardware <acronym>RAID</acronym>, but is designed to prevent
+      data write corruption and to overcome some of the limitations
+      of hardware <acronym>RAID</acronym>.</para>
 
     <sect2>
       <title>ZFS Tuning</title>
 
-      <para>The <acronym>ZFS</acronym> subsystem utilizes much of
-	the system resources, so some tuning may be required to
-	provide maximum efficiency during every-day use.  As an
-	experimental feature in &os; this may change in the near
-	future; however, at this time, the following steps are
-	recommended.</para>
+      <para>Some of the features provided by <acronym>ZFS</acronym>
+	are RAM-intensive, so some tuning may be required to provide
+	maximum efficiency on systems with limited RAM.</para>
 
       <sect3>
 	<title>Memory</title>
 
-	<para>The total system memory should be at least one gigabyte,
-	  with two gigabytes or more recommended.  In all of the
-	  examples here, the system has one gigabyte of memory with
-	  several other tuning mechanisms in place.</para>
-
-	<para>Some people have had luck using fewer than one gigabyte
-	  of memory, but with such a limited amount of physical
-	  memory, when the system is under heavy load, it is very
-	  plausible that &os; will panic due to memory
-	  exhaustion.</para>
+	<para>At a bare minimum, the total system memory should be at
+	  least one gigabyte.  The amount of recommended RAM depends
+	  upon the size of the pool and the ZFS features which are
+	  used.  A general rule of thumb is 1GB of RAM for every 1TB
+	  of storage.  If the deduplication feature is used, a general
+	  rule of thumb is 5GB of RAM per TB of storage to be
+	  deduplicated.  While some users successfully use ZFS with
+	  less RAM, it is possible that when the system is under heavy
+	  load, it may panic due to memory exhaustion.  Further tuning
+	  may be required for systems with less than the recommended
+	  RAM requirements.</para>
       </sect3>
 
       <sect3>
 	<title>Kernel Configuration</title>
 
-	<para>It is recommended that unused drivers and options
-	  be removed from the kernel configuration file.  Since most
-	  devices are available as modules, they may be loaded
-	  using the <filename>/boot/loader.conf</filename>
-	  file.</para>
-
-	<para>Users of the &i386; architecture should add the
-	  following option to their kernel configuration file,
-	  rebuild their kernel, and reboot:</para>
+	<para>Due to the RAM limitations of the &i386; platform, users
+	  using ZFS on the &i386; architecture should add the
+	  following option to a custom kernel configuration file,
+	  rebuild the kernel, and reboot:</para>
 
 	<programlisting>options 	KVA_PAGES=512</programlisting>
 
-	<para>This option will expand the kernel address space, thus
-	  allowing the <varname>vm.kvm_size</varname> tunable to be
-	  pushed beyond the currently imposed limit of 1 GB
-	  (2 GB for <acronym>PAE</acronym>).  To find the most
-	  suitable value for this option, divide the desired address
-	  space in megabytes by four (4).  In this case, it is
-	  <literal>512</literal> for 2 GB.</para>
+	<para>This option expands the kernel address space, allowing
+	  the <varname>vm.kvm_size</varname> tunable to be pushed
+	  beyond the currently imposed limit of 1 GB, or the
+	  limit of 2 GB for <acronym>PAE</acronym>.  To find the
+	  most suitable value for this option, divide the desired
+	  address space in megabytes by four (4).  In this example, it
+	  is <literal>512</literal> for 2 GB.</para>
       </sect3>
 
       <sect3>
 	<title>Loader Tunables</title>
 
-	<para>The <devicename>kmem</devicename> address space should
-	  be increased on all &os; architectures.  On the test system
+	<para>The <devicename>kmem</devicename> address space can
+	  be increased on all &os; architectures.  On a test system
 	  with one gigabyte of physical memory, success was achieved
-	  with the following options which should be placed in the
-	  <filename>/boot/loader.conf</filename> file and the system
+	  with the following options added to
+	  <filename>/boot/loader.conf</filename>, and the system
 	  restarted:</para>
 
 	<programlisting>vm.kmem_size="330M"
@@ -191,22 +184,21 @@ vfs.zfs.vdev.cache.size="5M"</programlis
       <screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' >> /etc/rc.conf</userinput>
 &prompt.root; <userinput>service zfs start</userinput></screen>
 
-      <para>The remainder of this document assumes three
-	<acronym>SCSI</acronym> disks are available, and their
-	device names are
+      <para>The examples in this section assume three
+	<acronym>SCSI</acronym> disks with the device names
 	<devicename><replaceable>da0</replaceable></devicename>,
-	<devicename><replaceable>da1</replaceable></devicename>
+	<devicename><replaceable>da1</replaceable></devicename>,
 	and <devicename><replaceable>da2</replaceable></devicename>.
-	Users of <acronym>IDE</acronym> hardware may use the
+	Users of <acronym>IDE</acronym> hardware should instead use
 	<devicename><replaceable>ad</replaceable></devicename>
-	devices in place of <acronym>SCSI</acronym> hardware.</para>
+	device names.</para>
 
       <sect3>
 	<title>Single Disk Pool</title>
 
 	<para>To create a simple, non-redundant <acronym>ZFS</acronym>
-	  pool using a single disk device, use the
-	  <command>zpool</command> command:</para>
+	  pool using a single disk device, use
+	  <command>zpool</command>:</para>
 
 	<screen>&prompt.root; <userinput>zpool create example /dev/da0</userinput></screen>
 
@@ -220,12 +212,11 @@ devfs               1       1        0  
 /dev/ad0s1d  54098308 1032846 48737598     2%    /usr
 example      17547136       0 17547136     0%    /example</screen>
 
-	<para>This output clearly shows the <literal>example</literal>
-	  pool has not only been created but
-	  <emphasis>mounted</emphasis> as well.  It is also accessible
-	  just like a normal file system, files may be created on it
-	  and users are able to browse it as in the
-	  following example:</para>
+	<para>This output shows that the <literal>example</literal>
+	  pool has been created and <emphasis>mounted</emphasis>.  It
+	  is now accessible as a file system.  Files may be created
+	  on it and users can browse it, as seen in the following
+	  example:</para>
 
 	<screen>&prompt.root; <userinput>cd /example</userinput>
 &prompt.root; <userinput>ls</userinput>
@@ -236,25 +227,24 @@ drwxr-xr-x   2 root  wheel    3 Aug 29 2
 drwxr-xr-x  21 root  wheel  512 Aug 29 23:12 ..
 -rw-r--r--   1 root  wheel    0 Aug 29 23:15 testfile</screen>
 
-	<para>Unfortunately this pool is not taking advantage of
-	  any <acronym>ZFS</acronym> features.  Create a file system
-	  on this pool, and enable compression on it:</para>
+	<para>However, this pool is not taking advantage of any
+	  <acronym>ZFS</acronym> features.  To create a dataset on
+	  this pool with compression enabled:</para>
 
 	<screen>&prompt.root; <userinput>zfs create example/compressed</userinput>
 &prompt.root; <userinput>zfs set compression=gzip example/compressed</userinput></screen>
 
-	<para>The <literal>example/compressed</literal> is now a
-	  <acronym>ZFS</acronym> compressed file system.  Try copying
-	  some large files to it by copying them to <filename
+	<para>The <literal>example/compressed</literal> dataset is now
+	  a <acronym>ZFS</acronym> compressed file system.  Try
+	  copying some large files to <filename
 	    class="directory">/example/compressed</filename>.</para>
 
-	<para>The compression may now be disabled with:</para>
+	<para>Compression can be disabled with:</para>
 
 	<screen>&prompt.root; <userinput>zfs set compression=off example/compressed</userinput></screen>
 
-	<para>To unmount the file system, issue the following command
-	  and then verify by using the <command>df</command>
-	  utility:</para>
+	<para>To unmount a file system, issue the following command
+	  and then verify by using <command>df</command>:</para>
 
 	<screen>&prompt.root; <userinput>zfs umount example/compressed</userinput>
 &prompt.root; <userinput>df</userinput>
@@ -264,7 +254,7 @@ devfs               1       1        0  
 /dev/ad0s1d  54098308 1032864 48737580     2%    /usr
 example      17547008       0 17547008     0%    /example</screen>
 
-	<para>Re-mount the file system to make it accessible
+	<para>To re-mount the file system to make it accessible
 	  again, and verify with <command>df</command>:</para>
 
 	<screen>&prompt.root; <userinput>zfs mount example/compressed</userinput>
@@ -287,18 +277,19 @@ example on /example (zfs, local)
 example/data on /example/data (zfs, local)
 example/compressed on /example/compressed (zfs, local)</screen>
 
-	<para>As observed, <acronym>ZFS</acronym> file systems, after
-	  creation, may be used like ordinary file systems; however,
-	  many other features are also available.  In the following
-	  example, a new file system, <literal>data</literal> is
-	  created.  Important files will be stored here, so the file
-	  system is set to keep two copies of each data block:</para>
+	<para><acronym>ZFS</acronym> datasets, after creation, may be
+	  used like any file systems.  However, many other features
+	  are available which can be set on a per-dataset basis.  In
+	  the following example, a new file system,
+	  <literal>data</literal> is created.  Important files will be
+	  stored here, the file system is set to keep two copies of
+	  each data block:</para>
 
 	<screen>&prompt.root; <userinput>zfs create example/data</userinput>
 &prompt.root; <userinput>zfs set copies=2 example/data</userinput></screen>
 
 	<para>It is now possible to see the data and space utilization
-	  by issuing <command>df</command> again:</para>
+	  by issuing <command>df</command>:</para>
 
 	<screen>&prompt.root; <userinput>df</userinput>
 Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
@@ -311,64 +302,56 @@ example/data        17547008       0 175
 
 	<para>Notice that each file system on the pool has the same
 	  amount of available space.  This is the reason for using
-	  <command>df</command> through these examples, to show
-	  that the file systems are using only the amount of space
-	  they need and will all draw from the same pool.  The
-	  <acronym>ZFS</acronym> file system does away with concepts
-	  such as volumes and partitions, and allows for several file
-	  systems to occupy the same pool.  Destroy the file systems,
-	  and then destroy the pool as they are no longer
-	  needed:</para>
+	  <command>df</command> in these examples, to show that the
+	  file systems use only the amount of space they need and all
+	  draw from the same pool.  The <acronym>ZFS</acronym> file
+	  system does away with concepts such as volumes and
+	  partitions, and allows for several file systems to occupy
+	  the same pool.</para>
+
+	<para>To destroy the file systems and then destroy the pool as
+	  they are no longer needed:</para>
 
 	<screen>&prompt.root; <userinput>zfs destroy example/compressed</userinput>
 &prompt.root; <userinput>zfs destroy example/data</userinput>
 &prompt.root; <userinput>zpool destroy example</userinput></screen>
 
-	<para>Disks go bad and fail, an unavoidable trait.  When
-	  this disk goes bad, the data will be lost.  One method of
-	  avoiding data loss due to a failed hard disk is to implement
-	  a <acronym>RAID</acronym>.  <acronym>ZFS</acronym> supports
-	  this feature in its pool design which is covered in
-	  the next section.</para>
       </sect3>
 
       <sect3>
 	<title><acronym>ZFS</acronym> RAID-Z</title>
 
-	<para>As previously noted, this section will assume that
-	  three <acronym>SCSI</acronym> disks exist as devices
-	  <devicename>da0</devicename>, <devicename>da1</devicename>
-	  and <devicename>da2</devicename> (or
-	  <devicename>ad0</devicename> and beyond in case IDE disks
-	  are being used).  To create a <acronym>RAID</acronym>-Z
-	  pool, issue the following command:</para>
+	<para>There is no way to prevent a disk from failing.  One
+	  method of avoiding data loss due to a failed hard disk is to
+	  implement <acronym>RAID</acronym>.  <acronym>ZFS</acronym>
+	  supports this feature in its pool design.</para>
+
+	<para>To create a <acronym>RAID</acronym>-Z pool, issue the
+	  following command and specify the disks to add to the
+	  pool:</para>
 
 	<screen>&prompt.root; <userinput>zpool create storage raidz da0 da1 da2</userinput></screen>
 
 	<note>
-	  <para>&sun; recommends that the amount of devices used
-	    in a <acronym>RAID</acronym>-Z configuration is between
-	    three and nine.  If your needs call for a single pool to
-	    consist of 10 disks or more, consider breaking it up into
-	    smaller <acronym>RAID</acronym>-Z groups.  If you only
-	    have two disks and still require redundancy, consider
-	    using a <acronym>ZFS</acronym> mirror instead.  See the
-	    &man.zpool.8; manual page for more details.</para>
+	  <para>&sun; recommends that the amount of devices used in
+	    a <acronym>RAID</acronym>-Z configuration is between
+	    three and nine.  For environments requiring a single pool
+	    consisting of 10 disks or more, consider breaking it up
+	    into smaller <acronym>RAID</acronym>-Z groups.  If only
+	    two disks are available and redundancy is a requirement,
+	    consider using a <acronym>ZFS</acronym> mirror.  Refer to
+	    &man.zpool.8; for more details.</para>
 	</note>
 
-	<para>The <literal>storage</literal> zpool should have been
-	  created.  This may be verified by using the &man.mount.8;
-	  and &man.df.1; commands as before.  More disk devices may
-	  have been allocated by adding them to the end of the list
-	  above.  Make a new file system in the pool, called
-	  <literal>home</literal>, where user files will eventually
-	  be placed:</para>
+	<para>This command creates the <literal>storage</literal>
+	  zpool.  This may be verified using &man.mount.8; and
+	  &man.df.1;.  This command makes a new file system in the
+	  pool called <literal>home</literal>:</para>
 
 	<screen>&prompt.root; <userinput>zfs create storage/home</userinput></screen>
 
 	<para>It is now possible to enable compression and keep extra
-	  copies of the user's home directories and files.  This may
-	  be accomplished just as before using the following
+	  copies of directories and files using the following
 	  commands:</para>
 
 	<screen>&prompt.root; <userinput>zfs set copies=2 storage/home</userinput>
@@ -384,9 +367,9 @@ example/data        17547008       0 175
 &prompt.root; <userinput>ln -s /storage/home /usr/home</userinput></screen>
 
 	<para>Users should now have their data stored on the freshly
-	  created <filename class="directory">/storage/home</filename>
-	  file system.  Test by adding a new user and logging in as
-	  that user.</para>
+	  created <filename
+	    class="directory">/storage/home</filename>.  Test by
+	  adding a new user and logging in as that user.</para>
 
 	<para>Try creating a snapshot which may be rolled back
 	  later:</para>
@@ -405,28 +388,27 @@ example/data        17547008       0 175
 	  <command>ls</command> in the file system's
 	  <filename class="directory">.zfs/snapshot</filename>
 	  directory.  For example, to see the previously taken
-	  snapshot, perform the following command:</para>
+	  snapshot:</para>
 
 	<screen>&prompt.root; <userinput>ls /storage/home/.zfs/snapshot</userinput></screen>
 
-	<para>It is possible to write a script to perform monthly
-	  snapshots on user data; however, over time, snapshots
+	<para>It is possible to write a script to perform regular
+	  snapshots on user data.  However, over time, snapshots
 	  may consume a great deal of disk space.  The previous
 	  snapshot may be removed using the following command:</para>
 
 	<screen>&prompt.root; <userinput>zfs destroy storage/home at 08-30-08</userinput></screen>
 
-	<para>After all of this testing, there is no reason we should
-	  keep <filename class="directory">/storage/home</filename>
-	  around in its present state.  Make it the real
-	  <filename class="directory">/home</filename> file
-	  system:</para>
+	<para>After testing, <filename
+	    class="directory">/storage/home</filename> can be made the
+	  real <filename class="directory">/home</filename> using
+	  this command:</para>
 
 	<screen>&prompt.root; <userinput>zfs set mountpoint=/home storage/home</userinput></screen>
 
-	<para>Issuing the <command>df</command> and
-	  <command>mount</command> commands will show that the system
-	  now treats our file system as the real
+	<para>Run <command>df</command> and
+	  <command>mount</command> to confirm that the system now
+	  treats the file system as the real
 	  <filename class="directory">/home</filename>:</para>
 
 	<screen>&prompt.root; <userinput>mount</userinput>
@@ -455,8 +437,7 @@ storage/home  26320512       0 26320512 
 	<title>Recovering <acronym>RAID</acronym>-Z</title>
 
 	<para>Every software <acronym>RAID</acronym> has a method of
-	  monitoring their <literal>state</literal>.
-	  <acronym>ZFS</acronym> is no exception.  The status of
+	  monitoring its <literal>state</literal>.  The status of
 	  <acronym>RAID</acronym>-Z devices may be viewed with the
 	  following command:</para>
 
@@ -468,7 +449,7 @@ storage/home  26320512       0 26320512 
 	<screen>all pools are healthy</screen>
 
 	<para>If there is an issue, perhaps a disk has gone offline,
-	  the pool state will be returned and look similar to:</para>
+	  the pool state will look similar to:</para>
 
 	<screen>  pool: storage
  state: DEGRADED
@@ -489,14 +470,13 @@ config:
 
 errors: No known data errors</screen>
 
-	<para>This states that the device was taken offline by the
-	  administrator.  This is true for this particular example.
-	  To take the disk offline, the following command was
-	  used:</para>
+	<para>This indicates that the device was previously taken
+	  offline by the administrator using the following
+	  command:</para>
 
 	<screen>&prompt.root; <userinput>zpool offline storage da1</userinput></screen>
 
-	<para>It is now possible to replace the
+	<para>It is now possible to replace
 	  <devicename>da1</devicename> after the system has been
 	  powered down.  When the system is back online, the following
 	  command may issued to replace the disk:</para>
@@ -529,37 +509,34 @@ errors: No known data errors</screen>
       <sect3>
 	<title>Data Verification</title>
 
-	<para>As previously mentioned, <acronym>ZFS</acronym> uses
+	<para><acronym>ZFS</acronym> uses
 	  <literal>checksums</literal> to verify the integrity of
-	  stored data.  They are enabled automatically upon creation
+	  stored data.  These are enabled automatically upon creation
 	  of file systems and may be disabled using the following
 	  command:</para>
 
 	<screen>&prompt.root; <userinput>zfs set checksum=off storage/home</userinput></screen>
 
-	<para>This is not a wise idea, however, as checksums take
-	  very little storage space and are more useful when enabled.
-	  There also appears to be no noticeable costs in having them
-	  enabled.  While enabled, it is possible to have
-	  <acronym>ZFS</acronym> check data integrity using checksum
-	  verification.  This process is known as
-	  <quote>scrubbing.</quote>  To verify the data integrity of
-	  the <literal>storage</literal> pool, issue the following
-	  command:</para>
+	<para>Doing so is <emphasis>not</emphasis> recommended as
+	  checksums take very little storage space and are used to
+	  check data integrity using checksum verification in a
+	  process is known as <quote>scrubbing.</quote>  To verify the
+	  data integrity of the <literal>storage</literal> pool, issue
+	  this command:</para>
 
 	<screen>&prompt.root; <userinput>zpool scrub storage</userinput></screen>
 
 	<para>This process may take considerable time depending on
 	  the amount of data stored.  It is also very
-	  <acronym>I/O</acronym> intensive, so much that only one
-	  of these operations may be run at any given time.  After
-	  the scrub has completed, the status is updated and may be
-	  viewed by issuing a status request:</para>
+	  <acronym>I/O</acronym> intensive, so much so that only one
+	  scrub may be run at any given time.  After the scrub has
+	  completed, the status is updated and may be viewed by
+	  issuing a status request:</para>
 
 	<screen>&prompt.root; <userinput>zpool status storage</userinput>
  pool: storage
  state: ONLINE
- scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008
+ scrub: scrub completed with 0 errors on Sat Jan 26 19:57:37 2013
 config:
 
 	NAME        STATE     READ WRITE CKSUM
@@ -571,43 +548,39 @@ config:
 
 errors: No known data errors</screen>
 
-	<para>The completion time is in plain view in this example.
-	  This feature helps to ensure data integrity over a long
-	  period of time.</para>
-
-	<para>There are many more options for the Z file system,
-	  see the &man.zfs.8; and &man.zpool.8; manual
-	  pages.</para>
+	<para>The completion time is displayed and helps to ensure
+	  data integrity over a long period of time.</para>
+
+	<para>Refer to &man.zfs.8; and &man.zpool.8; for other
+	  <acronym>ZFS</acronym> options.</para>
       </sect3>
 
       <sect3>
 	<title>ZFS Quotas</title>
 
-	<para>ZFS supports different types of quotas; the
-	  refquota, the general quota, the user quota, and
-	  the group quota.  This section will explain the
-	  basics of each one, and include some usage
-	  instructions.</para>
-
-	<para>Quotas limit the amount of space that a dataset
-	  and its descendants can consume, and enforce a limit
-	  on the amount of space used by filesystems and
-	  snapshots for the descendants.  In terms of users,
-	  quotas are useful to limit the amount of space a
-	  particular user can use.</para>
+	<para>ZFS supports different types of quotas: the refquota,
+	  the general quota, the user quota, and the group quota.
+	  This section explains the basics of each type and includes
+	  some usage instructions.</para>
+
+	<para>Quotas limit the amount of space that a dataset and its
+	  descendants can consume, and enforce a limit on the amount
+	  of space used by filesystems and snapshots for the
+	  descendants.  Quotas are useful to limit the amount of space
+	  a particular user can use.</para>
 
 	<note>
 	  <para>Quotas cannot be set on volumes, as the
-	    <literal>volsize</literal> property acts as an
-	    implicit quota.</para>
+	    <literal>volsize</literal> property acts as an implicit
+	    quota.</para>
 	</note>
 
-	<para>The refquota,
-	  <literal>refquota=<replaceable>size</replaceable></literal>,
-	  limits the amount of space a dataset can consume
-	  by enforcing a hard limit on the space used.  However,
-	  this hard limit does not include space used by descendants,
-	  such as file systems or snapshots.</para>
+	<para>The
+	  <literal>refquota=<replaceable>size</replaceable></literal>
+	  limits the amount of space a dataset can consume by
+	  enforcing a hard limit on the space used.  However, this
+	  hard limit does not include space used by descendants, such
+	  as file systems or snapshots.</para>
 
 	<para>To enforce a general quota of 10 GB for
 	  <filename>storage/home/bob</filename>, use the
@@ -615,9 +588,8 @@ errors: No known data errors</screen>
 
 	<screen>&prompt.root; <userinput>zfs set quota=10G storage/home/bob</userinput></screen>
 
-	<para>User quotas limit the amount of space that can
-	  be used by the specified user.  The general format
-	  is
+	<para>User quotas limit the amount of space that can be used
+	  by the specified user.  The general format is
 	  <literal>userquota@<replaceable>user</replaceable>=<replaceable>size</replaceable></literal>,
 	  and the user's name must be in one of the following
 	  formats:</para>
@@ -626,28 +598,28 @@ errors: No known data errors</screen>
 	  <listitem>
 	    <para><acronym
 		role="Portable Operating System
-	      Interface">POSIX</acronym> compatible name
-	      (e.g., <replaceable>joe</replaceable>).</para>
+	      Interface">POSIX</acronym> compatible name such as
+	      <replaceable>joe</replaceable>.</para>
 	  </listitem>
 
 	  <listitem>
 	    <para><acronym
 		role="Portable Operating System
 		Interface">POSIX</acronym>
-	      numeric ID (e.g.,
-	      <replaceable>789</replaceable>).</para>
+	      numeric ID such as
+	      <replaceable>789</replaceable>.</para>
 	  </listitem>
 
 	  <listitem>
 	    <para><acronym role="System Identifier">SID</acronym> name
-	      (e.g.,
-	      <replaceable>joe.bloggs at example.com</replaceable>).</para>
+	      such as
+	      <replaceable>joe.bloggs at example.com</replaceable>.</para>
 	  </listitem>
 
 	  <listitem>
 	    <para><acronym role="System Identifier">SID</acronym>
-	      numeric ID (e.g.,
-	      <replaceable>S-1-123-456-789</replaceable>).</para>
+	      numeric ID such as
+	      <replaceable>S-1-123-456-789</replaceable>.</para>
 	  </listitem>
 	</itemizedlist>
 
@@ -670,7 +642,7 @@ errors: No known data errors</screen>
 	  privilege are able to view and set everyone's quota.</para>
 
 	<para>The group quota limits the amount of space that a
-	  specified user group can consume.  The general format is
+	  specified group can consume.  The general format is
 	  <literal>groupquota@<replaceable>group</replaceable>=<replaceable>size</replaceable></literal>.</para>
 
 	<para>To set the quota for the group
@@ -680,30 +652,29 @@ errors: No known data errors</screen>
 	<screen>&prompt.root; <userinput>zfs set groupquota at firstgroup=50G</userinput></screen>
 
 	<para>To remove the quota for the group
-	  <replaceable>firstgroup</replaceable>, or make sure that one
-	  is not set, instead use:</para>
+	  <replaceable>firstgroup</replaceable>, or to make sure that
+	  one is not set, instead use:</para>
 
 	<screen>&prompt.root; <userinput>zfs set groupquota at firstgroup=none</userinput></screen>
 
 	<para>As with the user quota property,
 	  non-<username>root</username> users can only see the quotas
-	  associated with the user groups that they belong to, however
-	  a <username>root</username> user or a user with the
+	  associated with the groups that they belong to.  However,
+	  <username>root</username> or a user with the
 	  <literal>groupquota</literal> privilege can view and set all
 	  quotas for all groups.</para>
 
-	<para>The <command>zfs userspace</command> subcommand displays
-	  the amount of space consumed by each user on the specified
-	  filesystem or snapshot, along with any specified quotas.
-	  The <command>zfs groupspace</command> subcommand does the
-	  same for groups.  For more information about supported
-	  options, or only displaying specific options, see
-	  &man.zfs.1;.</para>
-
-	<para>To list the quota for
-	  <filename>storage/home/bob</filename>, if you have the
-	  correct privileges or are <username>root</username>, use the
-	  following:</para>
+	<para>To display the amount of space consumed by each user on
+	  the specified filesystem or snapshot, along with any
+	  specified quotas, use <command>zfs userspace</command>.
+	  For group information, use <command>zfs
+	    groupspace</command>.  For more information about
+	  supported options or how to display only specific options,
+	  refer to &man.zfs.1;.</para>
+
+	<para>Users with sufficient privileges and
+	  <username>root</username> can list the quota for
+	  <filename>storage/home/bob</filename> using:</para>
 
 	<screen>&prompt.root; <userinput>zfs get quota storage/home/bob</userinput></screen>
       </sect3>
@@ -711,9 +682,9 @@ errors: No known data errors</screen>
       <sect3>
 	<title>ZFS Reservations</title>
 
-	<para>ZFS supports two types of space reservations.
-	  This section will explain the basics of each one,
-	  and include some usage instructions.</para>
+	<para>ZFS supports two types of space reservations.  This
+	  section explains the basics of each and includes some usage
+	  instructions.</para>
 
 	<para>The <literal>reservation</literal> property makes it
 	  possible to reserve a minimum amount of space guaranteed
@@ -732,23 +703,22 @@ errors: No known data errors</screen>
 	  not counted by the <literal>refreservation</literal>
 	  amount and so do not encroach on the space set.</para>
 
-	<para>Reservations of any sort are useful in many
-	  situations, for example planning and testing the
-	  suitability of disk space allocation in a new system, or
-	  ensuring that enough space is available on file systems
-	  for system recovery procedures and files.</para>
+	<para>Reservations of any sort are useful in many situations,
+	  such as planning and testing the suitability of disk space
+	  allocation in a new system, or ensuring that enough space is
+	  available on file systems for system recovery procedures and
+	  files.</para>
 
 	<para>The general format of the <literal>reservation</literal>
 	  property is
-<literal>reservation=<replaceable>size</replaceable></literal>,
+	  <literal>reservation=<replaceable>size</replaceable></literal>,
 	  so to set a reservation of 10 GB on
-	  <filename>storage/home/bob</filename>the below command is
-	  used:</para>
+	  <filename>storage/home/bob</filename>, use:</para>
 
 	<screen>&prompt.root; <userinput>zfs set reservation=10G storage/home/bob</userinput></screen>
 
 	<para>To make sure that no reservation is set, or to remove a
-	  reservation, instead use:</para>
+	  reservation, use:</para>
 
 	<screen>&prompt.root; <userinput>zfs set reservation=none storage/home/bob</userinput></screen>
 
@@ -770,24 +740,24 @@ errors: No known data errors</screen>
   <sect1 id="filesystems-linux">
     <title>&linux; Filesystems</title>
 
-    <para>This section will describe some of the &linux; filesystems
+    <para>This section describes some of the &linux; filesystems
       supported by &os;.</para>
 
     <sect2>
-      <title>Ext2FS</title>
+      <title><acronym>ext2</acronym></title>
 
-      <para>The &man.ext2fs.5; file system kernel implementation was
-	written by Godmar Back, and the driver first appeared in
-	&os; 2.2.  In &os; 8 and earlier, the code is licensed under
-	the <acronym>GNU</acronym> Public License, however under &os;
-	9, the code has been rewritten and it is now licensed under
-	the <acronym>BSD</acronym> license.</para>
-
-      <para>The &man.ext2fs.5; driver will allow the &os; kernel
-	to both read and write to <acronym>ext2</acronym> file
-	systems.</para>
+      <para>The &man.ext2fs.5; file system kernel implementation has
+	been available since &os; 2.2.  In &os; 8.x and
+	earlier, the code is licensed under the
+	<acronym>GPL</acronym>.  Since &os; 9.0, the code has
+	been rewritten and is now <acronym>BSD</acronym>
+	licensed.</para>
 
-      <para>First, load the kernel loadable module:</para>
+      <para>The &man.ext2fs.5; driver allows the &os; kernel to both
+	read and write to <acronym>ext2</acronym> file systems.</para>
+
+      <para>To access an <acronym>ext2</acronym> file system, first
+	load the kernel loadable module:</para>
 
       <screen>&prompt.root; <userinput>kldload ext2fs</userinput></screen>
 
@@ -800,11 +770,10 @@ errors: No known data errors</screen>
     <sect2>
       <title>XFS</title>
 
-      <para>The X file system, <acronym>XFS</acronym>, was originally
-	written by <acronym>SGI</acronym> for the
-	<acronym>IRIX</acronym> operating system, and they ported it
-	to &linux;.  The source code has been released under the
-	<acronym>GNU</acronym> Public License.  See
+      <para><acronym>XFS</acronym> was originally written by
+	<acronym>SGI</acronym> for the <acronym>IRIX</acronym>
+	operating system and was then ported to &linux; and
+	released under the <acronym>GPL</acronym>.  See
 	<ulink url="http://oss.sgi.com/projects/xfs">this page</ulink>
 	for more details.  The &os; port was started by Russel
 	Cattelan, &a.kan;, and &a.rodrigc;.</para>
@@ -814,21 +783,19 @@ errors: No known data errors</screen>
 
       <screen>&prompt.root; <userinput>kldload xfs</userinput></screen>
 
-      <para>The &man.xfs.5; driver lets the &os; kernel access
-	XFS filesystems.  However, at present only read-only
-	access is supported.  Writing to a volume is not
-	possible.</para>
+      <para>The &man.xfs.5; driver lets the &os; kernel access XFS
+	filesystems.  However, only read-only access is supported and
+	writing to a volume is not possible.</para>
 
       <para>To mount a &man.xfs.5; volume located on
-	<filename>/dev/ad1s1</filename>, do the following:</para>
+	<filename>/dev/ad1s1</filename>:</para>
 
       <screen>&prompt.root; <userinput>mount -t xfs /dev/ad1s1 /mnt</userinput></screen>
 
-      <para>Also useful to note is that the
-	<filename role="package">sysutils/xfsprogs</filename> port
-	contains the <command>mkfs.xfs</command> utility which enables
-	creation of <acronym>XFS</acronym> filesystems, plus utilities
-	for analysing and repairing them.</para>
+      <para>The <filename role="package">sysutils/xfsprogs</filename>
+	port includes the <command>mkfs.xfs</command> which enables
+	the creation of <acronym>XFS</acronym> filesystems, plus
+	utilities for analyzing and repairing them.</para>
 
       <para>The <literal>-p</literal> flag to
 	<command>mkfs.xfs</command> can be used to create an
@@ -842,11 +809,11 @@ errors: No known data errors</screen>
 
       <para>The Reiser file system, ReiserFS, was ported to
 	&os; by &a.dumbbell;, and has been released under the
-	<acronym>GNU</acronym> Public License.</para>
+	<acronym>GPL</acronym> .</para>
 
-      <para>The ReiserFS driver will permit the &os; kernel to
-	access ReiserFS file systems and read their contents, but not
-	write to them, currently.</para>
+      <para>The ReiserFS driver permits the &os; kernel to access
+	ReiserFS file systems and read their contents, but not
+	write to them.</para>
 
       <para>First, the kernel-loadable module needs to be
 	loaded:</para>


More information about the svn-doc-all mailing list