Настройка журналирования UFS для настольного компьютера.
Пред. |  | След.

# 4. Настройка журналирования

## 4.1. Работа с командой `gjournal`

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

## 4.2. Журналирование новых разделов

Процедура, описанная выше, необходима для подключения журналирования разделов, содержащих данные. Журналирование пустых разделов немного проще, ввиду того, что поставщик данных и поставщик журнала могут быть размещены на одном и том же разделе. Например, предположим, что был установлен новый жесткий диск и был создан новый раздел `/dev/ad1s1d`. Создание журнала не сложнее набора:

    # gjournal label ad1s1d

Размер журнала -- 1═Гб по умолчанию. Однако, вы можете изменить это значение используя ключ `-s`. Значение можно задавать в байтах, в килобайтах, мегабайтах или гигабайтах (используя суффикс `K`, `M` или `G`). Имейте ввиду, что команда `gjournal` не позволит вам создать журнал недопустимо малого размера.

К примеру, чтобы создать журнал размером в 2Гб, можно использовать следующую команду:

    # gjournal label -s 2G ad1s1d

Далее, вы можете создать файловую систему на новом разделе, а также разрешить журналирование ключом `-J`:

    # newfs -J /dev/ad1s1d.journal

## 4.3. Встраивание журналирования в специализированное ядро

Если вы не желаете загружать `geom_journal` как модуль, то можно встроить его функции прямо в ваше специализированное ядро. Редактируя конфигурационный файл ядра, убедитесь, что в нем находятся следующие две строки:

    options UFS_GJOURNAL # Прим.: Это включено в GENERIC

    options GEOM_JOURNAL # А эту строку необходимо добавить

Соберите и установите новое ядро следуя указаниям Руководства FreeBSD═.

И не забудьте удалить соответствующую строку загрузки модуля (''load'') из `/boot/loader.conf` (если на предыдущем этапе она была туда внесена).

Пред. | Начало | След.
Действия, необходимые во время установки FreeBSD | ═ | Устранение неполадок с журналированием

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.