Подготовив необходимые разделы, перейдем к конфигурированию
журналирования. Нам будет необходимо загрузиться в
однопользовательском режиме, для этого залогинимся пользователем
root
и напечатаем:
#
shutdown now
Нажмите Enter для получения приглашения
командного интерпретатора. Нам необходимо будет размонтировать
разделы, которые подлежат журналированию, в нашем примере это
/usr
и /var
.
#
umount /usr /var
Загрузите модуль ядра, необходимый для журналирования:
#
gjournal load
На данном этапе сверьтесь со своими записями и определите, какие
разделы будут использоваться под какой журнал. В нашем примере
/usr
располагается на
ad0s1f
, а его журнал
будет располагаться на ad0s1g
,
и, по аналогии, для /var
: файловая система
располагается на ad0s1d
,
а ее журнал - на ad0s1h
.
Наберите следующие команды:
#
gjournal label ad0s1f ad0s1g
GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data. GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.#
gjournal label ad0s1d ad0s1h
GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data. GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.
Если последний сектор любого из двух разделов (поставщиков
данных) используется, команда gjournal
возвратит ошибку. Вам необходимо будет использовать флаг
-f
для принудительной перезаписи, например:
#
gjournal label -f ad0s1d ad0s1h
Так как это - новая установка, очень маловероятен факт, что что-нибудь будет действительно переписано.
На данном этапе созданы два устройства:
ad0s1d.journal
и
ad0s1f.journal
. Они
представляют /var
и /usr
соответственно. Перед монтированием, нам необходимо установить флаг
журналирования и снять флаг механизма Soft Updates:
#
tunefs -J enable -n disable ad0s1d.journal
tunefs: gjournal set tunefs: soft updates cleared#
tunefs -J enable -n disable ad0s1f.journal
tunefs: gjournal set tunefs: soft updates cleared
Теперь, смонтируйте новые устройства в соответствующие места
файловой системы (обратите внимание на то, что мы можем использовать
опцию монтирования async
):
#
mount -o async /dev/ad0s1d.journal /var
#
mount -o async /dev/ad0s1f.journal /usr
Откройте /etc/fstab
и исправьте записи для
следующих файловых систем: /usr
и
/var
:
/dev/ad0s1f.journal /usr ufs rw,async 2 2 /dev/ad0s1d.journal /var ufs rw,async 2 2
Убедитесь, что упомянутые выше записи правильные, иначе старт системы будет проблематичным после перезагрузки!
И напоследок, подредактируйте
/boot/loader.conf
: добавьте следующую строку
и модуль gjournal(8) будет загружаться автоматически при старте
системы:
geom_journal_load="YES"
Поздравляем! Журналирование успешно сконфигурировано. Вам
необходимо лишь набрать exit
для возвращения
в многопользовательский режим или перезагрузить систему, чтобы полностью
проверить вашу конфигурацию (рекомендуется). Во время загрузки
вы увидите сообщения, подобные следующим:
ad0: 76293MB XEC XE800JD-00HBC0 08.02D08 at ata0-master SATA150 GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal. GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal. GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data. GEOM_JOURNAL: Journal ad0s1d clean. GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data. GEOM_JOURNAL: Journal ad0s1f clean.
После непредвиденного останова работы системы сообщения будут немного отличаться, например:
GEOM_JOURNAL: Journal ad0s1d consistent.
Это обычно значит, что gjournal(8) воспользовался информацией в журнале для возвращения файловой системы к целостному состоянию.
Процедура, описанная выше, необходима для подключения
журналирования разделов, содержащих данные. Журналирование пустых
разделов немного проще, ввиду того, что поставщик данных и поставщик
журнала могут быть размещены на одном и том же разделе. Например,
предположим, что был установлен новый жесткий диск и был создан новый
раздел /dev/ad1s1d
. Создание
журнала не сложнее набора:
#
gjournal label ad1s1d
Размер журнала - 1 Гб по умолчанию. Однако, вы можете
изменить это значение используя ключ -s
. Значение
можно задавать в байтах, в килобайтах, мегабайтах или гигабайтах
(используя суффикс K
, M
или
G
). Имейте ввиду, что команда
gjournal
не позволит вам создать журнал
недопустимо малого размера.
К примеру, чтобы создать журнал размером в 2Гб, можно использовать следующую команду:
#
gjournal label -s 2G ad1s1d
Далее, вы можете создать файловую систему на новом разделе,
а также разрешить журналирование ключом -J
:
#
newfs -J /dev/ad1s1d.journal
Если вы не желаете загружать geom_journal
как модуль, то можно встроить его функции прямо в ваше
специализированное ядро. Редактируя конфигурационный файл ядра,
убедитесь, что в нем находятся следующие две строки:
options UFS_GJOURNAL # Прим.: Это включено в GENERIC options GEOM_JOURNAL # А эту строку необходимо добавить
Соберите и установите новое ядро следуя указаниям Руководства FreeBSD .
И не забудьте удалить соответствующую строку загрузки модуля
(<<load>>) из /boot/loader.conf
(если на предыдущем этапе она была туда внесена).
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.