Осторожно! Многобукафф!

Это первая часть длинного повествования об одном исследовании, цели которого:

1. Автоматизация процесса установки и переустановки.

2. Определение оптимального разбиения диска.

3. Определение оптимальной процедуры установки.

Здесь рассматривается планирование установки.

 

1. Преамбула.

Однажды приказал долго жить домашний сервер (NAS) на FreeBSD. Возникла необходимость переустановки, причем жесткий диск остался жив, но система была скомпилирована на определенное железо с включением в ядро поддержки только нужных устройств. Поэтому задача была в установке новой системы с сохранением старых настроек. Поиск в сети соответствующих инструкций и примеров дал неожиданный результат. Вернее, не дал никакого результата. Мало того, обнаружилось, что многие базовые вопросы остаются за рамками обсуждения сообщества. Для одних они являются сами собой разумеющимися, другим — неитересны.

Например:

- Что представляет собой физически процесс установки FreBSD?

- Что представляет собой установочный диск FreeBSD?

- Как оптимально разбить диск? (и масса вопросов по выбору файловой системы, которые обсуждаются в сети, но не имеют определенного решения, хотя бы методологического).

- и т. д.

Поэтому для начала расставим точки над «и».

1.1. Установочный диск FreeBSD – это по сути LiveCD. Собственно, сама система из коробки запускается и работает практически на любом железе без каких-либо настроек. Единственное, при компиляции системы явно указывается архитектура процессора, поэтому имеются отдельные диски для 32-х и 64-х разрядных систем, ARM процессоров и т. д. В остальном FreeBSD достаточно универсальна.

На установочном диске в каталоге /USR/FREEBSD_DIST лежат сжатые (zip-tar) архивы, содержащие файлы новой системы:

BASE.TXZ — собственно система, та её часть, что не зависит от архитектуры;

DOC.TXZ — документация;

GAMES.TXZ — игры (куда же без них);

KERNEL.TXZ и LIB32.TXZ — та часть системы (ядро и библиотеки), которая зависит от архитектуры процессора;

PORTS.TXZ — порты (исходные тексты программного обеспечения);

SRC.TXZ — исходные тексты системы.

Для FreeBSD 10.1 все это занимает чуть больше 300 Мб. Остальные 300 Мб на диске — сам LiveCD.

1.2. Процедура установки FreeBSD включает в себя так или иначе только две основные части: разбиение диска (создание файловой системы) и распаковка выбранных архивов.

1.3. Для анализа занимаемого места мы провели небольшой эксперимент. Сразу отмечу, что с появлением zfs этот вопрос потерял былое значение. Поэтому я бы рекомендовал при установке FreeBSD использовать эту файловую систему. У amd64 нет проблемы с адресацией памяти при использовании zfs, на i386 требуются дополнительные настройки.

Каталог /usr/ports в нашем случае занимает от 1,2 Гб до 1,9 Гб (где-то по-разному поставил крестики при компиляции, в результате были установлены разные наборы ПО). В любом случае, 6 Гб должно хватить (см. про установку десктопа).

Каталог /usr/obj после компиляции можно вычистить, отметим только, что для компиляции нам понадобилось до 4 Гб места.

После установки серверов имеем совсем немного в /tmp, объем в /var увеличился до 295 метров, а выделенные по умолчанию в zfs подкаталоги var практически пустые, но они будут заполняться в процессе работы серверов, логи и почтовые могут вырастать до гигабайтов, с этим придется бороться отдельно, подкаталог /var/db будет расти в соответствии с наполнением баз данных, его массивность будет зависеть от размера Ваших баз.

При расчете места под web-сервер надо иметь в виду:

1. Планируемое места по собственно www, по умолчанию это /usr/local/www. Можно ему даже создать отдельную файловую систему, либо отрезать под каждый хост по файловой системе. Обычно здесь немного данных, если только у Вас не медиа-портал. Средний сайт занимает до 200-300 Мб, но размер сильно зависит от используемого ПО, организации сайта и контента.

2. Планируемый размер баз данных. Для обычных веб-серверов также используется небольшой объем, но лучше предусмотреть пару Гб, как минимум.

3. Логи растут. Их надо периодически архивировать и убирать с боевых файловых систем, чтоб не засорять место. Большие логи тормозят работу сервера, оставьте 1Гб и разработайте систему периодической архивации и очистки каталога.

4. Папки /tmp практически не используются, под них оставьте 1Гб, вдруг какое-то ПО захочет там что-то поворочать.

5. Root может иметь 2 Гб пространства, этого ему хватит, если Вы отделили все растущие каталоги и ПО. /usr удовлетворится двумя Гб.

6. Все вышесказанное относится к среднему серверу, в каждом конкретном случае необходимо учитывать все особенности. Или на всякий случай оставить несколько Гб нераспределенного места.

При проектировании системы типа NAS (домашний сервер, файлопомойка и т. п.):

1. Размер root тот же.

2. При установке ПО внимательно настраивайте его. Например, transmission при запуске проверяет доступность каталогов из конфигурации. Если по какой-то причине отведенная под торренты файловая система оказалась недоступна, он начнет использовать свой каталог в /usr/local, куда закачает все торренты, заняв чужое место.

3. Под /usr отведите места побольше, с расчетом на установку какого-то незапланированного ПО.

4. Непременно все файловые ресурсы (место под торренты, файлообменники, файлопомойки) должны укладываться на отдельные файловые системы.

5. Как правило, ПО на NAS также пишет логи и использует базы данных. Можно отделить их от root, оставив по 1-2 Гб.

При установке рабочей станции (с графическим интерфейсом) отведите места в корне и /usr побольше, так как устанавливается огромное количество ПО и библиотек.

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

Итак для нашей системы

zfs set quota=500M zroot/tmp

zfs set quota=3G zroot/usr/ports

zfs set quota=1G zroot/var/log

zfs set quota=1G zroot/var/mail

zfs set quota=500M zroot/var/tmp

 FreeBSD0

Так можно ограничить все файловые системы или их часть, неограниченные могут вырастать до размера самого пула. Таким образом, мы можем установить систему, посмотреть, что где и как растет, а потом установить квоты. Позже любые квоты можно переопределить.

You have no rights to post comments