Freebsd 7.0 has a new geom extenstion called gjournal. You can easily create a journaled filesystem with gjournal on bsd systems.
First of all, gjournal support has to be built in kernel. It's currently built in 7.x series. The kernel option is called UFS_GJOURNAL
You should disable soft updates on filesystems where gjournal is used. Because journalling takes place and there is no need to use soft updates for data recovery on a crash.
While the filesystem is journalled, the mount option async will boost the performance.
For example, let's say we have a disk called ad1 and it has existing filesystem on it.
All we have to do is create a label.
# gjournal label -f /dev/ad1
notice the -f option. It will force convert operation of an existing file system to journal. Journal device will be separate and called in this example as /dev/ad1.journal.
now it's time to load geom gjournal kernel module.
# gjournal load
now add journalling support to our existing filesystem.
# tunefs -J enable /dev/ad1.journal
it's better now to disable soft updates.
# tunefs -n disable /dev/ad1.journal
now we mount our new journalled filesystem with async option.
# mount -o asyn /dev/ad1.journal /mnt
in our example, we don't have any slices on our disk. In slice case new devices will be created (eg. /dev/ad1s1.journal)