Journaling Bits
Volume Number: 21 (2005)
Issue Number: 6
Column Tag: Programming
Journaling Bits
A Look At The OS X "Personal Diary"
by Brad Belyeu
Welcome
My typical work day is filled with interruptions. Phones constantly ringing; people asking questions, etc.
Everyone wants a piece of my time. Interruptions are not only a major hit to productivity and effective time
management; but when you're trying to replace a PowerBook logic board, it can mean bigger problems. They
sometimes leave me wondering, "Where did I set my screwdriver?", or "Where does this screw go again?" Now
imagine having a secretary that follows you around all day recording what you do. Whenever you finish a task,
it is scratched off a list; and whenever you start a new task, it is added to a list. Anytime you had an
interruption, you could simply ask your secretary what you were doing before the interruption. That would be
amazing! This is what Apple's software engineer's were thinking when they introduced file system journaling.
Meet The Secretary
To understand why file system journaling is important, we need to understand file systems & take a look at
OS X systems prior to journaling. File systems are like library cataloging systems. Library catalogs can
tell you an exact name & location of any book in the library; just like file systems can tell you the exact
name & location of a piece of data on a drive. Both systems regulate naming & location conventions for what
they store. If a file system gets corrupted, it would be like trying to read a library catalog in a language
you can't understand. Journaling was introduced into OS 10.2.2 Server edition and into the client in
10.3. In previous OS versions, when you have any of these failures, they leave your system volume in an
unknown state because there is no record of where the disk was interrupted. The OS then had to do a data
integrity check of the entire disk. Interruptions can also damage system files rendering the boot volume
unusable. This is usually when you restart and are presented with a folder and the infamous flashing question
mark because the computer can't find a disk to startup. But when journaling is enabled, the computer tracks
file system operations and immediately logs them in a journal. When restarting after a failure, the operating
system can use the journal to return the files system to its previous state. This eliminates the need to
check the entire drive for inconsistencies. Instead, when the computer is restarted, it takes a look at its
journal, reads to find out what it was doing, and picks up right where it left off. File system journaling is
a major advancement in protecting the file system from power outages, hardware failures, or software crashes.
The Good
A system continuity failure interrupts the read & write processes of a hard drive. These interruptions
create discrepancies between the file system (library catalog) and the actual location of the stored files
(location of books in library). In a journaled file system the OS has a record of disk activity, preventing
the disk from becoming unusable (most of the time) which also prevents repairs that cost both time & money.
It also cuts down on the time it takes to restart the computer after one of these failures because the entire
disk doesn't have to be checked for inconsistencies block-by-block. Although a multi-gigabyte hard drive only
takes several minutes to check, the original idea in introducing file system journaling was to minimize
down-time for servers because a multi-terabyte disk could take hours to check. A journaled file system takes
just a few seconds to return to operating condition no matter what the size of the drive is.
File system journaling was developed by Apple to be an extension to the current file system. This is good
news because it lets you enable/disable journaling without reformatting the disk! The Mac OS Extended volume
format (HFS+) can change between journaled and non-journaled without any data loss. The advantages of this
will become clear later in the article as we discuss reasons you may not want to use file system journaling.
Because the journal works at the system level, it is invisible to the applications on the drive. Other
than some disk utilities, all applications and network setups are compatible with journaling. Most 3rd party
disk utilities will also work with journaling. Just in case you were wondering, finished actions are removed
from the journal so the journal file doesn't become too large. Just like that the secretary crosses completed
tasks off your list and throws them in the trash.
Journaled file systems are backward compatible with the regular HFS+ file systems. Meaning that computers
using an older Mac OS can have full access to journaled volumes. This is great news for external hard drive
users with multiple computers. That way you can use journaling on your hard drive and all your Macs can use
the drive whether they are running OS 10.3 or an earlier version.
The Not So Good
Journaling doesn't come without its cost, which happens to be performance. But fortunately, the
performance hit only comes when the system is writing to the disk and not when it is reading from the disk.
I've never been able to actually tell the difference in speed on drives running journaled verses non-journaled
drives. Supposedly, if you have a client version of the OS, the performance hit can be up to 20%, but the
server version of the OS comes with a buffered version of journaling. If you have enough RAM, the server
version is only supposed to take a 2-3% hit on hard drive performance.
Here's my general opinion on two occasions when you shouldn't use journaling. If you have a drive that is
primarily set up to be read-only access, you don't need journaling. For example, if you have a hard drive
that you keep your applications on (or just the OS), but not your actual documents or working files on, then
you probably don't need file system journaling. This is because you are just pulling data off the drive 99%
of the time and are rarely saving data back to the drive. If your system fails, your drive probably wasn't in
the middle of writing data. Or if you have a file server disk that is always under heavy speed demands AND
you back it up on at least a daily basis, I would consider disabling file system journaling. This might be
the case if you are storing large data files containing audio or video that are accessed frequently.
Although file system journaling will help you save data that has already been journaled to your drive; you
may still lose data in the event of a failure that is in the buffer before it is written to the drive. So
file system journaling definitely needs to be complimented by a battery backup system.
The last drawback to consider is the failure of some 3rd party disk utilities to work with file system
journaling. Make sure you check compatibility on a manufacturer's website before using a 3rd party utility on
a journaled file system. Many of the vendors released updates specifically for their product to work with a
journaled file system. I've heard nightmares of people losing all their data by running an incompatible disk
utility with a journaled file system.
File system journaling has its limitations and is not a fix-all answer to your data problems. According to
Apple, file system journaling is one of several measures you should take to avoid data loss. File system
journaling should be coupled with RAID (redundant array of indexed disks) storage, a continuous backup
strategy, and an uninterrupted power source (UPS) for maximum protection of you digital assets.
Enabling/Disabling
You can enable or disable file system journaling using Disk Utility (located in the Applications/Utilities
folder). Select a volume in Disk Utility (figure 1).
Figure 1.
If you want to enable journaling, you can simply click 'Enable Journaling' from the pane. This will enable
journaling without erasing data on the disk. If you'd like to disable journaling, you can select the volume
and then click File-Disable Journaling from the menu bar.
You can also enable or disable file system journaling using the command line version of Disk Utility,
diskutil. To have sufficient privileges you'll have to use sudo (super user do) with diskutil. To enable
file system journaling on the root directory type:
sudo diskutil enableJournal /
and then type in your administrator password. If you'd like to disable file system journaling on the root
directory use:
sudo diskutil disableJournal /
followed by your administrator password. To enable or disable on volumes other than the startup disk
replace / with /Volumes/(VolumeName).
Repairing Journaled Drives
To repair an ailing journaled drive you can once again use Disk Utility. The trick is that you can't
repair the disk you booted from; so if you want to repair your startup volume with Disk Utility, you have to
startup to a CD or another drive. Once you have Disk Utility open, select the drive that you want to repair
and then click 'Repair Disk'. If you don't have another drive you can startup from you'll be better off using
a 3rd party utility or the command line.
If you don't want to spend the money on a 3rd party disk utility, try using the command line utility
fsck_hfs. To force fsck_hfs to check a journaled volume you need to use the argument -f. Also, if you just
want to verify status of the drive, use the -n flag; but if you want to repair the drive, use the -y flag.
There are a number of excellent 3rd party disk utilities. My favorite are DiskWarrior X & TechTool Pro.
There are also a number of shareware & freeware applications to be found just by searching versiontracker.com
or macupdate.com.
Wrapping up Journaling
Using file system journaling is a great idea for most users. There are the occasions to disable it, but
for the most part it makes our lives easier. That is where the analogy leaves the library catalog. File
system journaling is done automatically, but looking up a book in a library can sometimes be challenging. I'm
just glad file system journaling keeps track of everything without my lifting a finger. But remember, file
system journaling does not excuse you from needing a regular system backup!
Brad Belyeu is the President of ABConsulting based out of Oklahoma City, OK. He is an Apple
Certified Technician and a certified member of the Apple Consultant Network. Most importantly, he is happily
married.