НАЗВАНИЕ
gjournal - программа управления журналируемыми устройствами
СИНТАКСИС
gjournal label [-cfhv] [-s размер_журнала] поставщик_данных
[поставщик_журнала]
gjournal stop [-fv] имя ...
gjournal sync [-v]
gjournal clear [-v] поставщик ...
gjournal dump поставщик ...
gjournal list
gjournal status
gjournal load
gjournal unload
ОПИСАНИЕ
Утилита gjournal используется для конфигурации журнала на заданном
поставщике GEOM. Журнал и данные могут храниться как на одном постав-
щике, так и на двух разных. Журналирование осуществляется на уровне бло-
ков, а не файловой системы. Это значит, что протоколируется абсолютно
всё, например, для файловых систем gjournal журналирует и данные, и мета-
данные. GEOM-класс gjournal способен взаимодействовать с файловыми
системами, что позволяет использовать gjournal для журналирования файло-
вых систем и поддержания их в целостном состоянии. В настоящий момент
поддерживается только файловая система UFS.
Чтобы сконфигурировать журналирование на файловой системе UFS посредством
gjournal, необходимо вначале создать GEOM-поставщика gjournal, используя
утилиту gjournal, а затем запустить newfs(8) или tunefs(8) с ключом -J,
который заставляет UFS взаимодействовать с GEOM-поставщиком gjournal.
Существуют важные отличия в работе UFS с журналом и без него. Наиболее
существенно то, что системные вызовы sync(2) и fsync(2) работают не так,
как ожидается. Чтобы гарантировать, что данные были сохранены на постав-
щике данных, после системного вызова sync(2) должна быть вызвана команда
gjournal sync. Для оптимизации производительности при использовании
gjournal следует отключать soft-updates. Также безопасна и рекомендуется
к использованию опция async команды mount(8).
Когда gjournal сконфигурирован поверх поставщиков gmirror(8) или
graid3(8), они также поддерживаются в целостном состоянии, поэтому авто-
матическая синхронизация после сбоя питания или отказов системы может
быть на этих поставщиках отключена.
Утилита gjournal хранит всю необходимую информацию в метаданных на диске,
в последнем секторе поставщика. Это может стать проблемой при преобразо-
вании существующей файловой системы для использования с gjournal.
Первый аргумент gjournal указывает действие, которое будет выполнено:
label Конфигурирует gjournal на указанном поставщике (поставщиках).
Если указан только один поставщик, данные будут храниться на
одном поставщике вместе с журналом. Если указаны два поставщика,
первый будет использован для данных, а второй -- для журнала.
Дополнительные опции:
-c Защищать записи журнала контрольной суммой.
-f Может быть использована для преобразования существующей
файловой системы для использования с gjournal, но только
в том случае, если журнал будет сконфигурирован на
отдельном поставщике, и последний сектор поставщика дан-
ных не используется файловой системой. Если утилита
gjournal обнаружит, что последний сектор занят, она отка-
жется от записи в него данных и вернёт ошибку. Подобное
поведение можно обойти, используя флаг -f, который заста-
вит gjournal перезаписать последний сектор.
-h Зафиксировать имена поставщиков в метаданных.
-s размер_журнала
Задаёт размер журнала в случае, если один и тот же
поставщик используется для хранения как данных, так и
журнала. По умолчанию один гигабайт. Размер должен
выбираться исходя из загруженности поставщика, а не его
размера. Не рекомендуется использовать gjournal для
небольших файловых систем (например, размером всего в
несколько гигабайт).
clear Очищает метаданные на указанных поставщиках.
stop Останавливает указанного поставщика.
Дополнительные опции:
-f Останавливает данного поставщика, даже если он открыт.
sync Вызывает переключение журнала и принудительную отправку данных к
поставщику данных.
dump Выводит метаданные, хранящиеся на указанных поставщиках.
list Смотрите geom(8).
status Смотрите geom(8).
load Смотрите geom(8).
unload Смотрите geom(8).
Дополнительные опции:
-v Более подробный вывод.
СТАТУС ЗАВЕРШЕНИЯ
Утилита gjournal возвращает 0 в случае успешного завершения и 1 в случае
возникновения ошибки.
ПРИМЕРЫ
Создать основанную на gjournal файловую систему UFS и смонтировать её:
gjournal load
gjournal label da0
newfs -J /dev/da0.journal
mount -o async /dev/da0.journal /mnt
Сконфигурировать журналирование на существующей файловой системе, но
только если это позволяет gjournal, т.е. если последний сектор ещё не
использован файловой системой:
umount /dev/da0s1d
gjournal label da0s1d da0s1e && \
tunefs -J enable -n disable && \
mount -o async /dev/da0s1d.journal /mnt || \
mount /dev/da0s1d /mnt
СМОТРИ ТАКЖЕ
geom(4), geom(8), mount(8), newfs(8), tunefs(8), umount(8)
ИСТОРИЯ
Утилита gjournal появилась во FreeBSD 7.0.
ПРОБЛЕМЫ
Отсутствует документация к sysctl kern.geom.journal.*.


