С выходом FreeBSD 7.0 был реализован долгожданный механизм ведения журналов для файловых систем. Сама реализация этого механизма осуществляется средствами системы GEOM, а конфигурирование выполняется утилитой gjournal(8).
Что такое журналирование? Журналирование сохраняет протокол транзакций файловой системы, то есть: изменения, составляющие логически завершенную операцию записи, сперва вносятся в журнал, а модификация метаданных и данных самого файла выполняется позже. В дальнейшем журнал может быть задействован для повторного выполнения транзакций на файловой системе с целью предотвращения нарушения целостности файловой системы.
Журналирование - это еще одним механизм предотвращения утери данных и нарушения целостности файловой системы. В отличие от механизма Soft Updates, который отслеживает и периодически сохраняет обновления метаданных, и механизма снэпшотов, который создает образ файловой системы, сам журнал хранится в специально отведенном для этой задачи пространстве диска, и, в некоторых случаях, может содержаться целиком на отдельном диске.
В отличие от других реализаций журналирования файловых систем,
метод gjournal
работает на блочном уровне, он
не встроен в файловую систему; это лишь надстройка над системой
GEOM.
Чтобы включить поддержку gjournal
,
в файле конфигурации ядра FreeBSD должна присутствовать следующая опция
(включено по умолчанию для FreeBSD 7.0 и более поздних версий
систем):
options UFS_GJOURNAL
Журналируемым устройствам, монтируемым во время загрузки системы,
также потребуется модуль ядра geom_journal.ko
.
Внесите следующую запись в файл
/boot/loader.conf
:
geom_journal_load="YES"
В качестве альтернативы, функции вышеупомянутого модуля можно встроить в специализированное ядро. Для этого добавьте следующую опцию в файл конфигурации ядра:
options GEOM_JOURNAL
Для создания журнала на новой файловой системе выполните
следующие шаги (здесь и далее подразумевается, что
da4
есть новый SCSI
диск):
#
gjournal load
#
gjournal label /dev/da4
На этом этапе в каталоге /dev
должны присутствовать файлы
устройств /dev/da4
и
/dev/da4.journal
. Теперь необходимо
создать файловую систему:
#
newfs -O 2 -J /dev/da4.journal
Предыдущая команда создаст файловую систему UFS2 на журналируемом устройстве.
Смонтируйте устройство в требуемый каталог файловой системы:
#
mount /dev/da4.journal
/mnt
В случае наличия нескольких слайсов, журнал создается для каждого
из них. Например, если есть два слайса, и они называются
ad4s1
и ad4s2
, то
утилитой gjournal
создаются файлы устройств
ad4s1.journal
и
ad4s2.journal
.
Для увеличения производительности может потребоваться хранение
журнала на отдельном диске. В таких случаях необходимо указать имя
поставщика журнала или устройства хранения после имени устройства,
на котором планируется включение журналирования. Журналирование также
может быть активировано утилитой tunefs
на действующих
файловых системах; однако, всегда создавайте резервную копию перед
попытками изменить настройки файловой системы. В большинстве случаев,
выполнение команды gjournal
завершится ошибкой, если
создание журнала невозможно, в то время как некорректное использование
команды tunefs
не защитит против потери данных.
Также возможно журналирование загрузочного диска системы FreeBSD. За детальными инструкциями по этой возможности обратитесь к статье Настройка журналирования UFS для настольного компьютера.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.