Exploring the ext3 Filesystem
What is Journaling?

Bill von Hagen
Friday, April 5, 2002 09:53:55 AM
Running fsck on a number of large filesystems can take quite a bit of
time, which is not a good thing given today's high-availability
assumptions. The reason that inconsistencies may exist in a filesystem
that is not cleanly unmounted is that writes to the disk may have been
in progress when the system went down. Applications may have been
updating the data contained in files and the system may have been
updating filesystem metadata, which is "data about filesystem data" -
on other words, the information about which blocks are allocated to
which files, which files live in which directories, and so
on. Inconsistencies in file data are bad enough, but inconsistencies
in filesystem metadata are the stuff of which lost files and other
operational nightmares are made.
In order to minimize filesystem inconsistencies and minimize system
restart time, journaling filesystems keep track of the changes that
they will be making to the filesystem before they actually make them
to the filesystem. These records are stored in a separate part of the
filesystem, typically known as the "journal" or "log". Once these
journal records (also commonly known as "log" records) are safely
written, a journaling filesystem applies those changes to the
filesystem and then purges those entries from the log. Journal records
are organized into sets of related filesystem changes, much like
changes made to a database are organized into transactions.
Journaling filesystems maximize filesystem consistency because log
records are written before filesystem changes are made, and because
the filesystem saves these records until they have been safely and
completely applied to the filesystem. When rebooting a computer that
uses journaling filesystems, the mount program can guarantee the
consistency of the filesystem by simply checking the log for pending
changes that are not marked as being done and applying them to the
filesystem. In most cases, the system doesn't have to check filesystem
consistency, meaning that computers using journaling filesystems are
available almost instantly after rebooting them. The chances of losing
data due to filesystem consistency problems are similarly reduced.
There are a number of journaling filesystems available for Linux. The
best known of these are XFS, a journaling filesystem originally
developed by Silicon Graphics but now released as open source, the
ReiserFS, a journaling filesystem developed especially for Linux, JFS,
a journaling filesystem originally developed by IBM but now released
as open source, and the ext3 filesystem, developed by Dr. Stephen
Tweedie at Red Hat and a host of other contributors.
Next: The Linux ext3 Filesystem »