FreeBSD и твердотельные устройства
Пред. |  |

# 5. Стратегии работы с системой для случаев небольших и доступных только для чтения файловых систем

В Разд. 3 было указано, что файловая система `/var`, создаваемая скриптом `/etc/rc.d/var`, и наличие корневой файловой системы, доступной только для чтения, приводят к проблемам при работе многих распространенных программных пакетов, используемых во FreeBSD. В этой статье будут даны рекомендации по настройке нормальной работы cron и syslog, установке портов и веб-сервера Apache.

## 5.1. cron

Во время загрузки содержимое каталогa `/var` формируется скриптом `/etc/rc.d/var` используя данные из `/etc/mtree/BSD.var.dist`, поэтому в нем создается несколько стандартных каталогов, в числе которых — `cron`, `cron/tabs`, `at`.

Однако это не решает проблему с сохранением cron-таблиц между перезагрузками. Когда система перезагружается, то файловая система `/var`, которая располагается в памяти, будет уничтожена, вместе со всеми cron-таблицами, которые вы могли там иметь. Поэтому одним из решений может стать создание cron-таблиц для пользователей, которым они нужны, монтирование вашей файловой системы `/` в режиме чтения и записи, и копирование этих cron-таблиц в безопасное место, например, в `/etc/tabs`, и последующее добавление строки в конец скрипта `/etc/rc.initdiskless` для копирования этих cron-таблиц в каталог `/var/cron/tabs` после его создания во время инициализации системы. Вам может также потребоваться добавить строку, которая изменяет режимы доступа и права на каталоги, которые вы создали, и на файлы, которые вы скопировали в скрипте `/etc/rc.initdiskless`.

## 5.2. syslog

В файле `syslog.conf` задано местоположение некоторых файлов протоколов, которые имеются в каталоге `/var/log`. Эти файлы не создаются скриптом `/etc/rc.d/var` во время инициализации системы. Поэтому где-нибудь в скрипте `/etc/rc.d/var`, после секции, создающей каталоги в `/var`, вам нужно добавить нечто вроде следующего:

    # touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages
    # chmod 0644 /var/log/*

## 5.3. Установка портов

Перед тем, как обсудить изменения, которые нужно сделать для успешного использования дерева портов, необходимо напомнить о том, что ваши файловые системы на флэш-носителях доступны только для чтения. Поэтому вам нужно временно монтировать их в режиме чтения и записи, используя параметры командной строки, как это показано в Разд. 3. Вы всегда должны перемонтировать эти файловые системы в режим только для чтения после окончания работ - излишние записи на флеш носитель могут значительно сократить его срок эксплуатации.

Чтобы можно было войти в каталог с портами и успешно выполнить команду `make` `install`, необходимо создать каталог для пакаджей в файловой системе, не располагающейся в памяти, где будут храниться пакаджи между перезагрузками. Так как для установки пакаджа в любом случае требуется монтирование ваших файловых систем для чтения и записи, имеет смысл выделить область флэш-носителя также и для записи информации о пакадже.

Прежде всего создайте каталог с базой данных о пакаджах. Обычно это каталог `/var/db/pkg`, но мы не можем разместить базу именно здесь, так как она исчезнет после перезагрузки системы.

    # mkdir /etc/pkg

Теперь в скрипт `/etc/rc.d/var` добавьте строку, которая связывает каталог `/etc/pkg` с `/var/db/pkg`. Например:

    # ln -s /etc/pkg /var/db/pkg

Теперь каждый раз при монтировании ваших файловых систем для чтения и записи и установки пакаджа, команда `make` `install` будет работать, а информация о пакадже будет успешно записана в каталог `/etc/pkg` (так как файловая система будет в это время смонтирована для чтения и записи), который всегда будет доступным операционной системе как `/var/db/pkg`.

## 5.4. Веб-сервер Apache

> Замечание: Шаги, описанные в этой части статьи, необходимо выполнить лишь в том случае, если Apache настроен сохранять свой pid или лог файл вне каталога `/var`. С настройками по умолчанию Apache формирует свой pid файл в `/var/run/httpd.pid`, а лог файлы — в `/var/log`.

Далее в статье подразумевается, что Apache сохраняет свои лог файлы в каталог ``apache_log_dir`` вне каталога `/var`. Когда этот каталог расположен на файловой системе, смонтированной в режиме только для чтения, Apache не сможет сохранять лог файлы, что в свою очередь может вызывать проблемы в работе веб-сервера. В таком случае необходимо добавить новый каталог к списку каталогов из `/etc/rc.d/var` для их создания в каталоге `/var` и связать ``apache_log_dir`` с `/var/log/apache`. Нужно также задать права доступа и владельца нового каталога.

Сначала добавьте каталог `log/apache` к списку каталогов, создаваемых скриптом `/etc/rc.d/var`.

Затем добавьте в скрипт `/etc/rc.d/var` после секции создания каталогов такие команды:

    # chmod 0774 /var/log/apache
    # chown nobody:nobody /var/log/apache

И наконец, удалите существующий каталог ``apache_install`/logs` и замените его ссылкой:

    # rm -rf apache_log_dir
    # ln -s apache_log_dir

Пред. | Начало |
Создание файловой системы с нуля |  |

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

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