Unix Filesystem: From Wikipedia, The Free Encyclopedia
Unix Filesystem: From Wikipedia, The Free Encyclopedia
Unix Filesystem: From Wikipedia, The Free Encyclopedia
The rest of this article uses Unix as a generic name to refer to both the
original Unix operating system and its many workalikes.
1 Principles
1.1 File types
2 Conventional directory layout
3 See also
4 References
Principles
The filesystem appears as one rooted tree of directories.[1] Instead of addressing separate volumes such as disk
partitions, removable media, and network shares as separate trees (as done in DOS and Windows: each drive
has a drive letter that denotes the root of its file system tree), such volumes can be mounted on a directory,
causing the volume's file system tree to appear as that directory in the larger tree.[1] The root of the entire tree is
denoted /.
In the original Bell Labs Unix, a two-disk setup was customary, where the first disk contained startup programs,
while the second contained users' files and programs. This second disk was mounted at the empty directory
named usr on the first disk, causing the two disks to appear as one filesystem, with the second's disks contents
viewable at /usr.
Unix directories do not contain files. Instead, they contain the names of files paired with references to so-called
inodes, which in turn contain both the file and its metadata (owner, permissions, time of last access, etc., but no
name). Multiple names in the file system may refer to the same file, a feature termed a hard link.[1] The
mathematical traits of hard links make the file system a limited type of directed acyclic graph, although the
directories still form a tree, as they typically may not be hard-linked. (As originally envisioned in 1969, the
Unix file system would in fact be used as a general graph with hard links to directories providing navigation,
instead of path names.[2])
File types
The original Unix file system supported three types of files: ordinary files, directories, and "special files", also
termed device files.[1] The Berkeley Software Distribution (BSD) and System V each added a file type to be
used for interprocess communication: BSD added sockets,[3] while System V added FIFO files.
BSD also added symbolic links (often termed "symlinks") to the range of file types, which are files that refer to
other files, and complement hard links.[3] Symlinks were modeled after a similar feature in Multics,[4] and
differ from hard links in that they may span filesystems and that their existence is independent of the target
object. Other Unix systems may support added types of files.[5]
The details of the directory layout have varied over time. Although the file system layout is not part of the
Single UNIX Specification, several attempts exist to standardize (parts of) it, such as the System V Application
Binary Interface, the Intel Binary Compatibility Standard, the Common Operating System Environment, and
Linux Foundation's Filesystem Hierarchy Standard (FHS).[12]
/ The slash / character alone denotes the root of the filesystem tree.
Stands for binaries and contains certain fundamental utilities, such asls or cp, that are needed to
/bin mount /usr, when that is a separate filesystem, or to run in one-user (administrative) mode when
/usr cannot be mounted. In System V.4, this is a symlink to/usr/bin.
Contains all the files needed for successful booting process. InResearch Unix, this was one file rather
/boot
than a directory.[13]
Stands for devices. Contains file representations of peripheral devices andpseudo-devices. See also:
/dev
Linux Assigned Names and Numbers Authority
Contains system-wide configuration files and system databases; the name stands for et cetera.[13]
/etc Originally also contained "dangerous maintenance utilities" such asinit,[14] but these have typically
been moved to /sbin or elsewhere.
Contains user home directories on Linux and some other systems. In the original version of Unix,
/home home directories were in/usr instead.[15] Some systems use or have used different locations still: OS
X has home directories in/Users, older versions of BSD put them in/u, FreeBSD has
/usr/home.
Originally essential libraries: C libraries, but not Fortran ones.[13] On modern systems, it contains the
/lib shared libraries needed by programs in/bin, and possibly loadable kernel moduleor device drivers.
Linux distributions may have variants/lib32 and /lib64 for multi-architecture support.
/media Default mount point for removable devices, such as USB sticks, media players, etc.
Stands for mount. Empty directory commonly used by system administrators as a temporary mount
/mnt
point.
Contains locally installed software. Originated inSystem V, which has a package manager that installs
/opt [16]
software to this directory (one subdirectory per package).
The home directory for thesuperuser root - that is, the system administrator. This account's home
directory is usually on the initial filesystem, and hence not in /home (which may be a mount point for
/root another filesystem) in case specific maintenance needs to be performed, during which other filesystems
are not available. Such a case could occur, for example, if a hard disk drive suffers physical failures
and cannot be properly mounted.
Stands for "system (or superuser) binaries" and contains fundamental utilities, such asinit, usually
/sbin
needed to start, maintain and recover the system.
In some Linux distributions, contains a sysfs virtual filesystem, containing information related to
/sys hardware and the operating system. On BSD systems, commonly a symlink to the kernel sources in
/usr/src/sys.
A place for temporary files not expected to survive a reboot. Many systems clear this directory upon
/tmp
startup or use tmpfs to implement it.
The Unix kernel in Research Unix andSystem V.[13] With the addition of virtual memory support to
/unix
3BSD, this got renamed /vmunix.
Stores the development headers used throughout the system.Header files are mostly used by the
/include
#include directive in C language, which historically is how the name of this directory was chosen.
/lib Stores the needed libraries and data files for programs stored within/usr or elsewhere.
Holds programs meant to be executed by other programs rather than by users directly . E.g., the
/libexec Sendmail executable may be found in this directory.[18] Not present in the FHS until 2011;[19] Linux
distributions have traditionally moved the contents of this directory into/usr/lib, where they also
resided in 4.3BSD.
Resembles /usr in structure, but its subdirectories are used for additions not part of the operating
/local system distribution, such as custom programs or files from aBSD Ports collection. Usually has
subdirectories such as/usr/local/lib or /usr/local/bin.
Architecture-independent program data. On Linux and modern BSD derivatives, this directory has
/share
subdirectories such asman for manpages, that used to appear directly under/usr in older versions.
Stands for variable. A place for files that may change often - especially in size, for example e-mail sent
/var
to users on the system, or process-IDlock files.
The place where all incoming mails are stored. Users (other thanroot) can access their own mail
/mail
only. Often, this directory is asymbolic link to /var/spool/mail.
/spool Spool directory. Contains print jobs, mail spools and other queued tasks.
The /var/tmp directory is a place for temporary files which should be preserved between system
/tmp
reboots.
See also
Btrfs JFS (file system)
ext2 Unix File System
ext3 Veritas File System
ext4 ZFS
Filesystem Hierarchy Standard
HAMMER
JFS (file system)
References
This article incorporates material from the Citizendium article "Unix filesystem", which is licensed under
the Creative Commons Attribution-ShareAlike 3.0 Unported License but not under the GFDL.
1. Ritchie, D.M.; Thompson, K. (July 1978). "The UNIX Time-Sharing System" (https://archive.org/details/
bstj57-6-1905). Bell System Tech. J. USA: AT&T. 57 (6): 1905–1929. doi:10.1002/j.1538-
7305.1978.tb02136.x (https://doi.org/10.1002%2Fj.1538-7305.1978.tb02136.x). Archived from the
original (http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6770404) on 19 January 2013.
2. Ritchie, Dennis M. (1979). The Evolution of the Unix Time-sharing System (http://cm.bell-labs.com/cm/c
s/who/dmr/hist.html). Language Design and Programming Methodology Conf.
3. Leffler, Samuel J.; McKusick, Marshall Kirk; Karels, Michael J.; Quarterman, John S. (October 1989).
The Design and Implementation of the 4.3BSD UNIX Operating System. Addison-Wesley. ISBN 0-201-
06196-1.
4. McKusick, Marshall Kirk; et al. "A Fast Filesystem for Unix" (https://docs.freebsd.org/44doc/smm/05.fa
stfs/paper.pdf) (PDF). Freebsd.org. CSRG, UC Berkeley. Retrieved 16 November 2016.
5. stat(2) (http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html) – Linux
Programmer's Manual – System Calls
6. "hier(7) man page for OpenBSD" (http://www.openbsd.org/cgi-bin/man.cgi?query=hier). Retrieved
14 September 2013.
7. "hier(7) man page for FreeBSD" (http://www.freebsd.org/cgi/man.cgi?query=hier).
8. "hier(7) man page for 2.9.1 BSD" (http://www.freebsd.org/cgi/man.cgi?query=hier&manpath=2.9.1+BS
D).
9. "hier(7) man page for ULTRIX 4.2" (http://www.freebsd.org/cgi/man.cgi?query=hier&manpath=ULTRI
X+4.2).
10. "hier(7) man page for SunOS 4.1.3" (http://www.freebsd.org/cgi/man.cgi?query=hier&manpath=SunOS+
4.1.3).
11. "hier(7) man page for Linux" (http://linux.die.net/man/7/hier).
12. George Kraft IV (1 November 2000). "Where to Install My Products on Linux?" (http://www.linuxjourna
l.com/article/4121). Linux Journal. Retrieved 13 November 2014.
13. Kernighan, Brian W.; Pike, Rob (1984). The UNIX Programming Environment. Prentice-Hall. pp. 63–65.
14. hier(7) in the Seventh Edition Unix manual (http://cm.bell-labs.com/7thEdMan/).
15. Ritchie, Dennis. "Unix Notes from 1972" (http://cm.bell-labs.com/cm/cs/who/dmr/notes.html). Retrieved
4 October 2012.
16. System V Application Binary Interface (http://www.sco.com/developers/devspecs/gabi41.pdf) Edition 4.1
(1997-03-18)
17. M. D. McIlroy (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual,
1971–1986 (http://www.cs.dartmouth.edu/~doug/reader.pdf). CSTR 139, Bell Labs.
18. "Chapter 7. sendmail" (http://docs.cray.com/books/S-2341-22/html-S-2341-22/z1028736068smg.html).
UNICOS/mp Networking Facilities Administration. Cray. Retrieved 14 September 2013.
19. "fhs-spec revision 44" (http://bzr.linuxfoundation.org/loggerhead/lsb/devel/fhs-spec/revision/44).