old-www/HOWTO/Filesystems-HOWTO-1.html

352 lines
14 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
<TITLE>Filesystems HOWTO: Introduction</TITLE>
<LINK HREF="Filesystems-HOWTO-2.html" REL=next>
<LINK HREF="Filesystems-HOWTO.html#toc1" REL=contents>
</HEAD>
<BODY>
<A HREF="Filesystems-HOWTO-2.html">Next</A>
Previous
<A HREF="Filesystems-HOWTO.html#toc1">Contents</A>
<HR>
<H2><A NAME="s1">1.</A> <A HREF="Filesystems-HOWTO.html#toc1">Introduction</A></H2>
<P>The Filesystems HOWTO is about filesystems and accessing filesystems from
various OS. Although this document has been put together to the best of my
knowledge, it may and probably does contain mistakes. Please if you find some
mistake or outdated information, let me know. I will try to keep this document
up to date and as error free as possible. Any contributions are also welcome, so
if you want to write anything about filesystems, please contact me via e-mail.</P>
<P>Update: Please note that this HOWTO wasn't updated for more than 5 years and
it DOES contain some out of date information. I will try to find some time to
set-up WIKI site for filesystems related information so as anybody can
contribute. For more information see next chapter.</P>
<P>Before you read this HOWTO it's recommended to read
<A HREF="mailto:sgjoen@nyx.net">Stein Gjoen's</A>
Disk-HOWTO (you can obtain it from
<A HREF="http://sunsite.unc.edu/LDP/HOWTO/">http://sunsite.unc.edu/LDP/HOWTO/</A>
). </P>
<P>This HOWTO can be obtained from
<A HREF="http://martin.hinner.info/fs/">http://martin.hinner.info/fs/</A> or
<A HREF="http://metalab.unc.edu/filesystems/howto/">http://metalab.unc.edu/filesystems/howto/</A>.</P>
<P>If you are Japanese user, you might be interested that
<A HREF="mailto:fujiwara@linux.or.jp">FUJIWARA Teruyoshi</A>
translated this HOWTO to Japanese.
It is available at
<A HREF="http://www.linux.or.jp/JF/JFdocs/Filesystems-HOWTO.html">http://www.linux.or.jp/JF/JFdocs/Filesystems-HOWTO.html</A>.
SGML source file can be downloaded from
<A HREF="ftp://ftp.linet.gr.jp/pub/JF/sgml/Filesystems-HOWTO.sgml.gz">ftp://ftp.linet.gr.jp/pub/JF/sgml/Filesystems-HOWTO.sgml.gz</A>.</P>
<H2><A NAME="ss1.1">1.1</A> <A HREF="Filesystems-HOWTO.html#toc1.1">Contacting the author</A>
</H2>
<P>You can contact me at martin@hinner.info. I welcome any suggestions and corrections,
but please before you ask a question, try searching the internet first. You should
also check my homepage (
<A HREF="http://martin.hinner.info/">http://martin.hinner.info/</A>) for any updates or additional information.
Please note that I am very busy with my other projects (like
<A HREF="http://www.auto-diagnostics.info">automotive diagnostics</A>,
<A HREF="http://www.arm-development.com">ARM-based microprocessors development tools</A>)
and I have a full time job (I am working for
<A HREF="http://www.secons.com">SECONS Ltd.</A> and
<A HREF="http://www.fintera.com/">Fintera Ltd.</A>), so my time to answer e-mails is very limited.</P>
<H2><A NAME="ss1.2">1.2</A> <A HREF="Filesystems-HOWTO.html#toc1.2">HOWTO Maintenance</A>
</H2>
<P>If you want to contribute to this HOWTO or take over the maintenance, please
look at author's website (
<A HREF="http://martin.hinner.info/">http://martin.hinner.info/</A>) and
contact him.</P>
<P>I will also try to set-up a wiki-style website for filesystems related information so as anyone can contribute
and this website will be later merged with this HOWTO. All of these activities depend on my free time.</P>
<H2><A NAME="ss1.3">1.3</A> <A HREF="Filesystems-HOWTO.html#toc1.3">Copyright</A>
</H2>
<P><B>The Filesystems HOWTO, Copyright (c) 1999-2000 Martin Hinner
&lt;
<A HREF="mailto:martin@hinner.info">martin@hinner.info</A>&gt;.</B></P>
<P>This HOWTO is free document; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.</P>
<P>This HOWTO is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.</P>
<P>You should have received a copy of the GNU General Public License
along with this document or GNU CC; if not, write to the:
Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
USA.</P>
<H2><A NAME="ss1.4">1.4</A> <A HREF="Filesystems-HOWTO.html#toc1.4">Filesystems mailing-list</A>
</H2>
<P>You may want to join Filesystems mailing list. It's intended to be a good
source of information for both end-users and developers. So if you have
anything to do with filesystems, join ;-) To subscribe send email to
&lt;
<A HREF="mailto:majordomo@penguin.cz">majordomo@penguin.cz</A>&gt;
and in the BODY (not the subject) of the email message put (without quotes):
"<B>subscribe fs-l</B>".</P>
<H3>Linux kernel filesystems mailing-list</H3>
<P>To join Linux kernel filesystems mailing list
<A HREF="mailto:linux-fsdev@vger.rutgers.edu">linux-fsdev@vger.rutgers.edu</A>,
send e-mail to
<A HREF="mailto:listserv@vger.rutgers.edu">listserv@vger.rutgers.edu</A>. Put <CODE>"subscribe linux-fsdev"</CODE>
in message body.</P>
<H3>FreeBSD filesystems mailing-list</H3>
<P>To join techical FreeBSD filesystems mailing list
<A HREF="mailto:freebsd-fs@FreeBSD.org">freebsd-fs@FreeBSD.org</A>,
send e-mail to
<A HREF="mailto:majordomo@FreeBSD.org">majordomo@FreeBSD.org</A>. Put
<CODE>"subscribe freebsd-fs"</CODE> in message body.</P>
<H2><A NAME="ss1.5">1.5</A> <A HREF="Filesystems-HOWTO.html#toc1.5">Filesystems collection at metalab.unc.edu</A>
</H2>
<P>Filesystems collection is FTP/WWW site providing useful information about
filesystems and filesystem-related programs and drivers. It lives at
<A HREF="http://metalab.unc.edu/filesystems/">http://metalab.unc.edu/filesystems/</A>, or FTP-only at
<A HREF="ftp://metalab.unc.edu/pub/docs/filesystems/">ftp://metalab.unc.edu/pub/docs/filesystems/</A>.</P>
<H2><A NAME="ss1.6">1.6</A> <A HREF="Filesystems-HOWTO.html#toc1.6">Credits</A>
</H2>
<P>The original "Filesystems access HOWTO" was written by Georgatos Photis
(see his homepage at
<A HREF="http://students.ceid.upatras.gr/~gef/">http://students.ceid.upatras.gr/~gef/</A>).
This HOWTO contains a lot of information from his webpage. Thanks, Gef.</P>
<P>FUJIWARA Teruyoshi &lt;fujiwara@linux.or.jp&gt; translated this HOWTO
to Japanese.</P>
<P>Other people who have contributed or helped me (directly or indirectly)
with this HOWTO are, in alphabetical order:
<UL>
<LI> Mariusz Borkowski &lt;borkowsm@ii.pw.edu.pl&gt; - ISO9660/RR info</LI>
<LI> Remy Card &lt;card@masi.ibp.fr&gt; - Ext2 filesystem introduction</LI>
<LI> Peter A. Dinda &lt;pdinda@cs.cmu.edu&gt; - HFS filesystem description</LI>
<LI> Alfonso De Gregorio &lt;adg@speedcom.it&gt; - TCFS filesystem info</LI>
<LI> Radek Machacka &lt;radekm@sco.com&gt; - Thanks for SCO UnixWare
and SCO OpenServer</LI>
<LI> Andrey Shedel &lt;andreys@cr.cyco.com&gt; - Misc. updates</LI>
<LI> Peter Todd &lt;retep2@home.com&gt; - SFS filesystem info</LI>
<LI> Theodore Ts'o &lt;tytso@mit.edu&gt; - Ext2 filesystem introduction</LI>
<LI> Stephen Tweedie &lt;sct@dcs.ed.ac.uk&gt; - Ext2 filesystem introduction</LI>
</UL>
Many thanks to the above people. If I have forgotten anyone, please let me know.</P>
<H2><A NAME="ss1.7">1.7</A> <A HREF="Filesystems-HOWTO.html#toc1.7">Filesystems accessibility map</A>
</H2>
<P>This is filesystem accessibility "map", alphabetically ordered by operating
system. You may find this list a little bit chaotic. It's because Linux
sgmltools don't know tables.</P>
<P><B>YOU SEE THAT THIS `MAP' IS NOT STILL COMPLETE.
I WILL TRY TO FINISH IT IN THE NEAR FUTURE.</B></P>
<P><B>FreeBSD:</B>
<A HREF="Filesystems-HOWTO-9.html#ffs">BSD FFS</A> |
<A HREF="Filesystems-HOWTO-6.html#ext2">Ext2</A> |
<A HREF="Filesystems-HOWTO-4.html#hpfs_freebsd">HPFS</A> |
<A HREF="Filesystems-HOWTO-5.html#ntfs_freebsd">NTFS</A></P>
<P><B>Linux:</B>
<A HREF="Filesystems-HOWTO-9.html#affs">AFFS</A>|
<A HREF="Filesystems-HOWTO-9.html#befs_linux">BeFS</A>|
<A HREF="Filesystems-HOWTO-9.html#bfs_linux">BFS</A>|
<A HREF="Filesystems-HOWTO-6.html#ext2">Ext2 FS</A>|
<A HREF="Filesystems-HOWTO-9.html#ffs">BSD FFS</A>|
<A HREF="Filesystems-HOWTO-4.html#hpfs_linux">HPFS</A>|
<A HREF="Filesystems-HOWTO-9.html#qnx4">Qnx4 FS</A>|
<A HREF="Filesystems-HOWTO-9.html#xia">Xia</A></P>
<P><B>NetBSD:</B>
<A HREF="Filesystems-HOWTO-9.html#ffs">BSD FFS</A> |
<A HREF="Filesystems-HOWTO-3.html#fat">FAT12/16</A> |
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO9660</A></P>
<P><B>NetWare 2.x:</B>
<A HREF="Filesystems-HOWTO-9.html#nwfs286">NWFS-286</A></P>
<P><B>NetWare 3.x, 4.x:</B>
<A HREF="Filesystems-HOWTO-9.html#nwfs386">NWFS-386</A> |
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO9660</A></P>
<P><B>NetWare 5.x:</B>
<A HREF="Filesystems-HOWTO-9.html#nwfs386">NWFS-386</A> |
<A HREF="Filesystems-HOWTO-9.html#nss">NSS</A> |
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO9660</A></P>
<P><B>OpenBSD:</B>
<A HREF="Filesystems-HOWTO-9.html#ffs">BSD FFS</A> |
<A HREF="Filesystems-HOWTO-3.html#fat">FAT12/16</A></P>
<P><B>OS/2:</B>
<A HREF="Filesystems-HOWTO-6.html#ext2_os2">Ext2 FS</A> |
<A HREF="Filesystems-HOWTO-3.html#fat">FAT12/16/32</A> |
<A HREF="Filesystems-HOWTO-4.html#hpfs">HPFS</A> |
<A HREF="Filesystems-HOWTO-4.html#hpfs">HPFS</A> |
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO 9660</A> |
<A HREF="Filesystems-HOWTO-9.html#jfs">JFS</A> |
<A HREF="Filesystems-HOWTO-3.html#vfat">VFAT</A></P>
<P><B>QNX 4:</B>
<A HREF="Filesystems-HOWTO-3.html#fat">FAT12/16</A> |
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO 9660</A> |
<A HREF="Filesystems-HOWTO-9.html#qnx4">Qnx4 FS</A></P>
<P><B>SCO OpenServer:</B>
<A HREF="Filesystems-HOWTO-9.html#afs">AFS</A>|
<A HREF="Filesystems-HOWTO-9.html#dtfs">DTFS</A>|
<A HREF="Filesystems-HOWTO-9.html#eafs">EAFS</A>|
<A HREF="Filesystems-HOWTO-9.html#htfs">HTFS</A>|
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO 9660</A> |
<A HREF="Filesystems-HOWTO-9.html#s51k">S51K</A></P>
<P><B>SCO UnixWare:</B>
<A HREF="Filesystems-HOWTO-9.html#bfs">BFS</A>|
<A HREF="Filesystems-HOWTO-9.html#dtfs">DTFS</A>|
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO 9660</A> |
<A HREF="Filesystems-HOWTO-9.html#s5">System V</A>|
<A HREF="Filesystems-HOWTO-9.html#vxfs">VxFS</A></P>
<H2><A NAME="contiguous"></A> <A NAME="ss1.8">1.8</A> <A HREF="Filesystems-HOWTO.html#toc1.8">Introduction to contiguous allocation filesystems</A>
</H2>
<P>Some contiguous filesystems:
<A HREF="Filesystems-HOWTO-9.html#bfs">BFS</A>,
<A HREF="Filesystems-HOWTO-8.html#iso9660">ISO9660 and extensions</A>.</P>
<H2><A NAME="ss1.9">1.9</A> <A HREF="Filesystems-HOWTO.html#toc1.9">Introduction to linked-list allocation filesystems</A>
</H2>
<H2><A NAME="ss1.10">1.10</A> <A HREF="Filesystems-HOWTO.html#toc1.10">Introduction to FAT-based filesystems</A>
</H2>
<P>(todo)</P>
<P>Some FAT filesystems:
<A HREF="Filesystems-HOWTO-3.html#fat">FAT12/16/32, VFAT</A> and
<A HREF="Filesystems-HOWTO-9.html#nwfs">NetWare filestem</A>.</P>
<H2><A NAME="ss1.11">1.11</A> <A HREF="Filesystems-HOWTO.html#toc1.11">Introduction to Inode filesystems</A>
</H2>
<P>(todo)</P>
<H2><A NAME="ss1.12">1.12</A> <A HREF="Filesystems-HOWTO.html#toc1.12">Introduction to extent filesystems</A>
</H2>
<P>(todo)</P>
<P>Some 'extent' filesystems:
<A HREF="Filesystems-HOWTO-9.html#efs">EFS</A> and
<A HREF="Filesystems-HOWTO-9.html#vxfs">VxFS</A>.</P>
<H2><A NAME="btree"></A> <A NAME="ss1.13">1.13</A> <A HREF="Filesystems-HOWTO.html#toc1.13">Introduction to filesystems using balanced trees</A>
</H2>
<P>(todo)</P>
<P>Some filesystems which use B+ trees:
<A HREF="Filesystems-HOWTO-7.html#hfs">HFS</A>,
<A HREF="Filesystems-HOWTO-9.html#nss">NSS</A>,
<A HREF="Filesystems-HOWTO-9.html#reiserfs">Reiser FS</A> and
<A HREF="Filesystems-HOWTO-9.html#spiralog">Spiralog filesystem</A>.</P>
<H2><A NAME="journal"></A> <A NAME="ss1.14">1.14</A> <A HREF="Filesystems-HOWTO.html#toc1.14">Introduction to logging/journaling filesystems</A>
</H2>
<P>File systems update their structural information (called
metadata) by synchronous writes. Each metadata update may require many
separate writes, and if the system crashes during the write sequence, metadata
may be in inconsistent state.</P>
<P>At the next boot the filesystem check utility (called fsck) must walk
through the metadata structures, examining and repairing them.
This operation takes a very very long time on large filesystems.
And the disk may not contain sufficient information
to correct the structure. This results in misplaced or removed files.</P>
<P>A journaling file system uses a separate area called a log or journal.
Before metadata changes are actually performed, they are logged to this separate
area. The operation is then performed. If the system crashes during
the operation, there is enough information in the log to "replay" the log
record and complete the operation.</P>
<P>This approach does not require a full
scan of the file system, yielding very quick filesystem check time on
large file systems,
generally a few seconds for a multiple-gigabyte file system. In addition,
because all information for the pending operation is saved, no removals
or lost-and-found moves are required. Disadvantage of journaling filesystems
is that they are slower than other filesystems.</P>
<P>Some journaling filesystems:
<A HREF="Filesystems-HOWTO-9.html#befs">BeFS</A>,
<A HREF="Filesystems-HOWTO-9.html#htfs">HTFS</A>,
<A HREF="Filesystems-HOWTO-9.html#jfs">JFS</A>,
<A HREF="Filesystems-HOWTO-9.html#nss">NSS</A>,
<A HREF="Filesystems-HOWTO-9.html#spiralog">Spiralog filesystem</A>,
<A HREF="Filesystems-HOWTO-9.html#vxfs">VxFS</A> and
<A HREF="Filesystems-HOWTO-9.html#xfs">XFS</A>.</P>
<H2><A NAME="other_features"></A> <A NAME="ss1.15">1.15</A> <A HREF="Filesystems-HOWTO.html#toc1.15">Other filesystem features</A>
</H2>
<H3><A NAME="quota"></A> Quota</H3>
<H3><A NAME="snapshot"></A> Snapshot</H3>
<H3><A NAME="acl"></A> ACLs</H3>
<HR>
<A HREF="Filesystems-HOWTO-2.html">Next</A>
Previous
<A HREF="Filesystems-HOWTO.html#toc1">Contents</A>
</BODY>
</HTML>