Keywords: sag

Next: Which filesystem should be Up: Filesystems Previous: What are filesystems?

## Filesystems galore

Linux supports several types of filesystems. As of this writing the most important ones are:

minix
  The oldest, presumed to be the most reliable, but quite limited in features (some time stamps are missing, at most 30 character filenames) and restricted in capabilities (at most 64 MB per filesystem).
xia
  A modified version of the minix filesystem that lifts the limits on the filenames and filesystem sizes, but does not otherwise introduce new features. It is not very popular, but is reported to work very well.
ext2
  The most featureful of the native Linux filesystems, currently also the most popular one. It is designed to be easily upwards compatible, so that new versions of the filesystem code do not require re-making the existing filesystems.
ext
  An older version of `ext2` that wasn't upwards compatible. It is hardly ever used in new installations any more, and most people have converted to `ext2`.

In addition, support for several foreign filesystem exists, to make it easier to exchange files with other operating systems. These foreign filesystems work just like native ones, except that they may be lacking in some usual UNIX features, or have curious limitations, or other oddities.

msdos
  Compatibility with MS-DOS (and OS/2 and Windows NT) FAT filesystems.
umsdos
  Extends the `msdos` filesystem driver under Linux to get long filenames, owners, permissions, links, and device files. This allows a normal `msdos` filesystem to be used as if it were a Linux one, thus removing the need for a separate partition for Linux.
iso9660
  The standard CD-ROM filesystem; the popular Rock Ridge extension to the CD-ROM standard that allows longer file names is supported automatically.
nfs
  A networked filesystem that allows sharing a filesystem between many computers to allow easy access to the files from all of them.
hpfs
  The OS/2 filesystem.
sysv
  SystemV/386, Coherent, and Xenix filesystems.

The choice of filesystem to use depends on the situation. If compatibility or other reasons make one of the non-native filesystems necessary, then that one must be used. If one can choose freely, then it is probably wisest to use ext2, since it has all the features but does not suffer from lack of performance.

There is also the `proc` filesystem, usually accessible as the `/proc` directory, which is not really a filesystem at all, even though it looks like one. The `proc` filesystem makes it easy to access certain kernel data structures, such as the process list (hence the name). It makes these data structures look like a filesystem, and that filesystem can be manipulated with all the usual file tools. For example, to get a listing of all processes one might use the command

> ``$` ls -l /proc
> `total 0`
> `dr-xr-xr-x 4 root root 0 Jan 31 20:37 1`
> `dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63`
> `dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94`
> `dr-xr-xr-x 4 liw users 0 Jan 31 20:37 95`
> `dr-xr-xr-x 4 root users 0 Jan 31 20:37 98`
> `dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 devices`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 dma`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 filesystems`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 interrupts`
> `-r-------- 1 root root 8654848 Jan 31 20:37 kcore`
> `-r--r--r-- 1 root root 0 Jan 31 11:50 kmsg`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 ksyms`
> `-r--r--r-- 1 root root 0 Jan 31 11:51 loadavg`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 meminfo`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 modules`
> `dr-xr-xr-x 2 root root 0 Jan 31 20:37 net`
> `dr-xr-xr-x 4 root root 0 Jan 31 20:37 self`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 stat`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 uptime`
> `-r--r--r-- 1 root root 0 Jan 31 20:37 version`
> `$``

(There will be a few extra files that don't correspond to processes, though. The above example has been shortened.)

Note that even though it is called a filesystem, no part of the `proc` filesystem touches any disk. It exists only in the kernel's imagination. Whenever anyone tries to look at any part of the `proc` filesystem, the kernel makes it look as if the part existed somewhere, even though it doesn't. So, even though there is a multi-megabyte `/proc/kcore` file, it doesn't take any disk space.

Next: Which filesystem should be Up: Filesystems Previous: What are filesystems?