Подготовив необходимые разделы, перейдем к конфигурированию журналирования. Нам будет необходимо загрузиться в однопользовательском режиме, для этого залогинимся пользователем 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,