FreeBSD Man Pages

GJOURNAL(8) FreeBSD System Manager's Manual GJOURNAL(8)
NAMEgjournal -- control utility for journaled devices
SYNOPSISgjournallabel [-cfhv] [-sjsize] dataprov [jprov]
gjournalstop [-fv] name...gjournalsync [-v]
gjournalclear [-v] prov...gjournaldumpprov...gjournallistgjournalstatusgjournalloadgjournalunloadDESCRIPTION
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 gjournalsync command should be
used after calling sync(2). For the best performance possible, soft-
updates should be disabled when gjournal is used. It is also safe and
recommended to use the asyncmount(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
provider.
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
behavior may be forced by using the -f flag, which will
force gjournal to overwrite the last sector.
-h Hardcode provider names in metadata.
-sjsize Specifies size of the journal if only one provider is
used for both data and journal. The default is one
gigabyte. 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
gigabytes 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
provider.
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
Exit status is 0 on success, and 1 if the command fails.
EXAMPLES
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
allows this (i.e., if the last sector is not already used by the file
system):
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
SEE ALSOgeom(4), geom(8), mount(8), newfs(8), tunefs(8), umount(8)HISTORY
The gjournal utility appeared in FreeBSD 7.0.
AUTHORS
Pawel Jakub Dawidek <pjd@FreeBSD.org>
BUGS
Documentation for sysctls kern.geom.journal.* is missing.
FreeBSD 10.1 April 13, 2008 FreeBSD 10.1