Архив метки: nanobsd

03 — Сервер на флешке. Jails

1. Обновляем коллекцию портов:

2. Обновляем дерево исходных кодов:

3. Добавляем опции в /etc/make.conf:

4. Собираем мир:

5. Редактируем конфиг ezjail.conf:

6. Создаем basejail в ezjail-admin:

7. Разворачиваем шаблоны для jail:

8. Разворачиваем дерево портов в basejail:

9. Создаем jail в ezjail предварительно зацепив IP алиасом:

10. Запускаем джейлы:

 

02 — Сервер на флешке. ZFS

Размечаем дисковое пространство и создаем зеркало ZFS

Я использую для этого формат размещения таблицы разделов GUID Partition Table (GPT).

Для разметки с использованием GPT применяется утилита gpart.

1. Убираем старую схему разметки:

2. Создадим схему GPT на диске:

3. Создаем партиции с ZFS:

4. Создаем zpool mirror:

5. Создаем файловые системы:

01 — Сервер на флешке. NanoBSD

NanoBSD. Начало

NanoBSD — утилита для создания образа FreeBSD для последующего его использования на Flash-картах памяти.

Вкратце, как этим пользоваться.

nanobsd — это скрипт nanobsd.sh, находится здесь: /usr/src/tools/tools/nanobsd/. С помощью этого скрипта и дополнительных файлов кастомизации (или без них) создается образ FreeBSD, который потом заливаем с помощью dd (или pv) на флешку.

После этих манипуляций флешка делится на 3 части по умолчанию:

  • образ NanoBSD #1
  • образ NanoBSD #2
  • партиция конфигурационных файлов, которая монтируется в /cfg директорию.

Эти партиции монтируются в режиме read-only при загрузке системы, с /cfg копируются конфигурационные файлы в /etc, затем /cfg отмонтируется.

/etc и /var директории — это md — (malloc) диски памяти — виртуальные диски в оперативной памяти.

Если в процессе работы необходимо сделать изменения в конфигурационных файлах директории /etc, эти изменения будут работать ровно до перезагрузки сервера, поскольку изменения затрутся файлами из директории /cfg. Чтобы сохранить изменения, нужно смонтировать директорию в режиме read-write, скопировать измененные файлы туда и отмонтировать /cfg. Чтобы автоматизировать данные  действия существует скриптик «wr«.

Минимальный набор команд для создания образа:

Custom configuration file

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

Конфигурационный файл состоит из конфигурационных опций, являющимися переменными по умолчанию.

Наиболее важные следующие:

  • NANO_NAME=MS_9.2.CLANG — Имя, которое вы присваиваете сборке NanoBSD. Это имя NanoBSD использует для присвоения имен рабочим каталогам и файлу образа диска.
  • NANO_SRC=/usr/src — Местоположение дерева исходного кода, который NanoBSD использует для создания образов дисков. Если вам требуется указать другое местоположение, измените этот параметр.
  • NANO_TOOLS=tools/tools/nanobsd — Сценарии и файлы NanoBSD считаются частью исходного кода FreeBSD. Это означает, что при обновлении исходников файлы NanoBSD, естественно, также обновятся. Если вы внесете какие-либо изменения в файлы NanoBSD, они затрутся. При изменении базовых компонентов NanoBSD желательно скопировать каталог NanoBSD куда-нибудь за пределы дерева исходного кода.
  • CONF_BUILD=’ ‘ — Любые параметры, определенные здесь, будут использованы на этапе make buildworld. Полный список параметров, допустимых в вашей версии FreeBSD, вы найдете на странице руководства src.conf(5).
  • CONF_INSTALL=’ ‘ — Любые параметры, определенные здесь, будут использованы на этапе make installworld. Полный список допустимых параметров вы также найдете на странице руководства src.conf(5).
  • CONF_WORLD=’ ‘ — Значение этого параметра используется как ключи в ходе всего процесса сборки.
  • NANO_KERNEL=GENERIC — если захотите собрать нестандартное ядро для своего образа NanoBSDкажите его здесь. Это должно быть имя файла в каталоге /usr/src/sys/i386/conf.
  • NANO_DRIVE=da0 — Нужно указать имя файла устройства, соответствующего flash-диску. Чтобы узнать это, можно загрузить целевое устройство и посмотреть, под каким именем оно видит эту карту.
  • NANO_MEDIASIZE=15665140 — Емкость вашего flash-диска в 512-байтовых секторах.
  • NANO_IMAGES=2 — NanoBSD позволяет создать несколько образов операционной системы на одном flash-диске. Это может упростить обновление, но требует в два раза больше пространства. Поскольку в наши дни flash-диски достаточно емки и способны вместить практически любой образ FreeBSD, который вы можете собрать, можно и не изменять это значение.
  • NANO_CONFSIZE=204800 — Дополнительно NanoBSD создает дисковый участок для хранения конфигурационных файлов, как показано ниже. Данный параметр определяет размер этого участка в 512-байтовых секторах. 204800 секторов эквивалентно 100 МБ.
  • NANO_RAM_ETCSIZE=204800 — Объем дискового пространства в 512-байтовых секторах, выделяемого для каталога /etc.
  • NANO_RAM_TMPVARSIZE=204800 — Объем дискового пространства, выделяемого для каталогов /var и /tmp.
  • NANO_SECTS=63; NANO_HEADS=255 — Здесь определяется геометрия используемого flash-диска.
  • NANO_BOOTLOADER=»boot/boot0″

Также в конфигурационный файл можно добавлять свои функции (например, функция add_port (), представленная в нижеследующем примере).

Пример конфигурационного файла nanobsd.conf.custom:

Каталог сборки NanoBSD

Для сборки NanoBSD используется подкаталог каталога /usr/obj, имя которого задано параметром NANO_NAME. NanoBSD использует файлы, имена которых начинаются с _., как маркеры, протоколы и временные каталоги. Несмотря на лаконизм сообщений, наблюдаемых в процессе сборки, в действительности NanoBSD не скрывает вывод используемых команд, просто он перенаправляется в другие файлы (_.bk — лог процесса сборки ядра, _.bw — лог процесса сборки мира etc).

Лог создается для каждого действия, выполненного скриптом — например, про установку порта ftp/wget можно узнать из файла _.cust.add_port_ftp_wget.

_.disk.full — полученый образ системы.

Если после завершения работы скрипта вы не увидите в папке /usr/obj/имя_образа образа _.disk.full, значит процесс сборки потерпел неудачу. Причину нужно искать в логах.

 

Некоторые моменты

Часто, особенно на первых порах, мы создаем образ и забываем добавить некоторые порты или конфиги. Потом редактируем файл кастомизации и запускаем сборку снова. Но процесс сборки ядра, а еще больше мира занимает много времени. Да и зачем мучать систему работой, а себя ожиданием, если необходимо сделать маленькую поправку.

В nanobsd.sh есть пара ключей, которые могут упростить нам жизнь, пропуская ресурсоемкие задачи:

  • -k — пропустить процесс сбоки ядра
  • -w — пропустить процесс сбоки мира
  • -b — пропустить процесс сбоки и ядра, и мира

 

Спасибо следующим сайтам за предоставленную информацию:

http://freebsd.org
http://freebsdguide.ru

00 — Сервер на флешке. Дано

Дано:

Hardware:
Dell PowerEdge R210
Processor: Intel Xeon X3430 2.40GHz
Hard: 2 x WDC WD1003FZEX-00MK2A0 1ТБ
RAM: DDR3 2 x 2048 MB
Network: 2 x Broadcom NetXtreme II BCM5716 1000Base-T

Flash card:
JetFlash Transcend 8GB

Ожидаемый результат:

  • Базовая система FreeBSD на флешке;
  • Зеркальный массив (zpool mirror) с двух дисков (по 1ТБ каждый), файловая система ZFS;
  • Виртуализация представлена jail’ами, реализация с помощью ezjail; каждый jail под определенную задачу (mail, hosting etc.)