An In-Depth Look at Reiserfs

Included in the Linux kernel

January 22, 2001

By
Scott Courtney

Reiserfs will soon become the first journaled file system to be bundled
as part of the standard Linux kernel tree. What is a journaled file
system, how does Reiserfs fit into that category, and why should you care
that it's about to become part of the Linux core?

Let's start with a discussion of filesystems in general. If you are coming
to Linux from a Windows or DOS environment, then you have been using
filesystems already -- you just haven't called them that. A filesystem can
mean either a specific disk drive or partition, or it can mean, in a more
general way, the internal format of how the data is organized on a mass
storage device. For example, you have a root filesystem on your Linux
machine and perhaps another filesystem for /home, and another for
/opt, and so on. Each of these corresponds to a partition on a
disk drive. Other directories that are undeneath these may not necessarily
have their own disk partition, so they aren't filesystems.

On the other hand, we use the term "filesystem" to represent the particular
way that the data is stored and how the operating system keeps track of it.
Information such as the date of a file's creation and last modification,
which user and group own it, what permissions are granted for reading and
modifying the file, how large it is, and where it is located on the drive
or partition, are all part of the responsibility of the filesystem. If the
file itself is "data" then all these other items are "data about the data"
and they are collectively called "metadata." So any filesystem must manage
all the files and all of their metadata.

In Windows, the most common filesystems are File Allocation Table (FAT)
and its newer flavors such as FAT32 and VFAT. FAT is a holdover from the
dark ages of DOS and is very primitive internally. To be fair, it was
created in the days of 8- and 16-bit computers and single-tasking operating
systems, and it was as complex as the systems of the day could really support.
Windows NT introduced a much more sophisticated filesystem called NTFS which
is more reliable, faster, and capable of supporting extremely large drives
and partitions. NTFS, by the way, is quite similar to its ancestor, the
High Performance File System (HPFS) from IBM's OS/2 operating system.

FAT and its variants support essentially no user-level security, and they are
extremely vulnerable to data corruption after a system crash. Given the poor
reliability of Windows 95 and 98, the fact that their filesystems don't do
a good job of recovering from crashes is a recipe for disaster! The problem
isn't so much that the files may get corrupted, but rather that the metadata
about those files can be corrupted.