Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
GJOURNAL(8)		  BSD System Manager's Manual		   GJOURNAL(8)

     gjournal -- control utility for journaled devices

     gjournal label [-cfhv] [-s	jsize] dataprov	[jprov]
     gjournal stop [-fv] name ...
     gjournal sync [-v]
     gjournal clear [-v] prov ...
     gjournal dump prov	...
     gjournal list
     gjournal status
     gjournal load
     gjournal unload

     The gjournal utility is used for journal configuration on the given GEOM
     provider.	The Journal and	data may be stored on the same provider	or on
     two separate providers.  This is block level journaling, not file system
     level journaling, which means everything gets logged, e.g.	for file sys-
     tems, it journals both data and metadata.	The gjournal GEOM class	can
     talk to file systems, which allows	the use	of gjournal for	file system
     journaling	and to keep file systems in a consistent state.	 At this time,
     only UFS file system is supported.

     To	configure journaling on	the UFS	file system using gjournal, one	should
     first create a gjournal provider using the	gjournal utility, then run
     newfs(8) or tunefs(8) on it with the -J flag which	instructs UFS to coop-
     erate with	the gjournal provider below.  There are	important differences
     in	how journaled UFS works.  The most important one is that sync(2) and
     fsync(2) system calls do not work as expected anymore.  To	ensure that
     data is stored on the data	provider, the gjournal sync command should be
     used after	calling	sync(2).  For the best performance possible, soft-up-
     dates should be disabled when gjournal is used.  It is also safe and rec-
     ommended to use the async mount(8)	option.

     When gjournal is configured on top	of gmirror(8) or graid3(8) providers,
     it	also keeps them	in a consistent	state, thus automatic synchronization
     on	power failure or system	crash may be disabled on those providers.

     The gjournal utility uses on-disk metadata, stored	in the provider's last
     sector, to	store all needed information.  This could be a problem when an
     existing file system is converted to use gjournal.

     The first argument	to gjournal indicates an action	to be performed:

     label   Configures	gjournal on the	given provider(s).  If only one
	     provider is given,	both data and journal are stored on the	same
	     provider.	If two providers are given, the	first one will be used
	     as	data provider and the second will be used as the journal

	     Additional	options	include:

	     -c	       Checksum	journal	records.

	     -f	       May be used to convert an existing file system to use
		       gjournal, but only if the journal will be configured on
		       a separate provider and if the last sector in the data
		       provider	is not used by the existing file system.  If
		       gjournal	detects	that the last sector is	used, it will
		       refuse to overwrite it and return an error.  This be-
		       havior may be forced by using the -f flag, which	will
		       force gjournal to overwrite the last sector.

	     -h	       Hardcode	provider names in metadata.

	     -s	jsize  Specifies size of the journal if	only one provider is
		       used for	both data and journal.	The default is one gi-
		       gabyte.	Size should be chosen based on provider's
		       load, and not on	its size.  It is not recommended to
		       use gjournal for	small file systems (e.g.: only few gi-
		       gabytes big).

     clear   Clear metadata on the given providers.

     stop    Stop the given provider.

	     Additional	options	include:

	     -f	 Stop the given	provider even if it is opened.

     sync    Trigger journal switch and	enforce	sending	data to	the data

     dump    Dump metadata stored on the given providers.

     list    See geom(8).

     status  See geom(8).

     load    See geom(8).

     unload  See geom(8).

     Additional	options	include:

     -v	 Be more verbose.

     Exit status is 0 on success, and 1	if the command fails.

     Create a gjournal based UFS file system and mount it:

	   gjournal load
	   gjournal label da0
	   newfs -J /dev/da0.journal
	   mount -o async /dev/da0.journal /mnt

     Configure journaling on an	existing file system, but only if gjournal al-
     lows this (i.e., if the last sector is not	already	used by	the file sys-

	   umount /dev/da0s1d
	   gjournal label da0s1d da0s1e	&& \
	       tunefs -J enable	-n disable da01sd.journal && \
	       mount -o	async /dev/da0s1d.journal /mnt || \
	       mount /dev/da0s1d /mnt

     geom(4), geom(8), mount(8), newfs(8), tunefs(8), umount(8)

     The gjournal utility appeared in FreeBSD 7.0.

     Pawel Jakub Dawidek <>

     Documentation for sysctls kern.geom.journal.* is missing.

BSD				April 13, 2008				   BSD


Want to link to this manual page? Use this URL:

home | help