четверг, 13 июня 2013 г.

ESXi Home Server AIO: Часть 5. Nas4Free Jails.

   Nas4Free "из коробки" предоставляет широкий набор сервисов, требуемых от NAS. Но в некоторых случаях даже реализованной функциональности недостаточно, либо выбранное встроенное решение не удовлетворяет потребностям.  В виртуализованной среде эти проблемы можно решить дополнительной виртуальной машиной, существующей только ради этого сервиса, но для мелких прикладных задач такой способ неэффективен. Альтернативой отдельной полноценной операционной системе для таких задач может стать виртуализация средствами FreeBSD, на которой крутится Nas4Free - так называемые Jails.
    Джейл (Jail) - это изолированная часть операционной системы, обладающая своим набором пользователей и процессов, файловой структурой и сетевой подсистемой. Для процессов, выполняемых внутри этой системы, вся она является отдельной чистой копией полноценной FreeBSD, а значит появляется возможность устанавливать любое программное обеспечение, поддерживаемое со стороны этой операционной системы. Подробнее про джейлы тут и тут.
    К плюсам такого подхода для embedded-версии N4F можно добавить  и то, что файловые системы этих джейлов можно (и рекомендуется) размещать на рабочих пулах дисков, а не на локальном хранилище ESXi. Это позволит избежать вообще какой-либо записи на локальный SSD, а также получить все бонусы RAIDZ для информации, хранимой и обрабатываемой внутри джейла.
   Спектр задач, реализуемых с помощью джейлов в N4F широк: тут и ownclowd, и serviio, и virtualbox. В моем случае кандидатом стал MySQL для синхронизации баз данных нескольких XBMC.
   Создать джейл можно вручную по этому руководству, но удобнее будет воспользоваться специальным расширением TheBrig, которое предоставляет массу преимуществ: управление (создание, изменение, удаление, запуск, остановка, импорт и архивирование), мониторинг состояния (включен, выключен, количество запущенных процессов), и все это с интеграцией в вэбморду N4F. Нюанс: каждый раз после создания джейла описанным способом стоит отключить работающий изначально sendmail.
   Установка MySQL внутри джейла тривиальна:
pkg_add -r mysql55-server
echo 'mysql_enable="YES"' >> /etc/rc.conf
   После перезапуска джейла выполняем:
mysql_secure_installation
  Последовательно отвечаем на вопросы интерактивной начальной настройки и все - сервис готов к использованию.
   Также был найден небольшой косяк: при изменении параметров (через GUI) ранее созданного джейла, запустить этот джейл уже не получается. Это касается только джейлов типа thin, а причина в следующем: для данного типа большая часть файловой структуры является разделяемой единичной копией, хранящейся в так называемом basejail, что позволяет значительно  (с 300 до 2 МБ) сократить размер последующих thin-джейлов. При запуске эта часть монтируется к ним read-only через nullfs, и именно директива об этом и пропадает из fstab после изменения настроек. Запуск через командную строку вываливается с сообщением:
jail: exec /bin/sh: No such file or directory
jail: /bin/sh /etc/rc: failed
Лечится просто: в поле fstab необходимо добавить строку о монтировании. Что-то вроде:
/mnt/POOL-BIG/jails/basejail/ /mnt/POOL-BIG/jails/имя_джейла/basejail/ nullfs ro 0 0
   К сожалению, даже широкие возможности джейлов не всегда позволяют добавить отсутствующие функции. Например, в локалке от провайдера существует несколько серверов DirectConnect, иногда удобно выкачивать что-то оттуда. Клиента DC в N4F нет, потому была попытка поставить в джейл mldonkey с управлением через Sancho. Попытка была успешной, но результат не порадовал: плагин DC в mldonkey не реализует всех возможностей этого протокола, а санчо еще больше урезает возможности применения: нет возможности узнать список шар конкретного пользователя, указать папку загрузки для отдельных закачек, есть проблемы с кодировкой. Пользоваться не стал, джейл удалил.
   Думаю, со временем добавлю ownclowd и bittorent sync, пока не крутил.

Комментариев нет:

Отправить комментарий