Date: Mon, 11 Feb 2013 14:58:34 +0000 (UTC) From: Dru Lavigne <dru@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r40947 - head/en_US.ISO8859-1/books/handbook/filesystems Message-ID: <201302111458.r1BEwYW7034821@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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@example.com</replaceable>).</para> + such as + <replaceable>joe.bloggs@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@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@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>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201302111458.r1BEwYW7034821>