Плагины для nas4free – Самосборный, бюджетный NAS + Nas4Free (XigmaNAS). Продолжение: установка и настройка софта.

Содержание

Волшебная кнопка для расширений nas4free

Камраду crest удалось сильно продвинуться на пути реализации вековой мечты человечества — создания Волшебной Кнопки.

Его расширение OneButtonInstaller (ОднокнопочныйУстановщик) предназначен для установки всех прочих расширений nas4free путём нажатия одной кнопки.

Расширение по словам автора (перевод мой):
— Показывает все известные доступные / установленные расширения / дополнения на одной странице с кратким описанием и ссылками на соответствующие темы форума
— Допускает установку всех известных расширений / дополнений из WebGUI nas4free с единым интерфейсом
— Производит установку в один клик, просто выберите одно или несколько расширений нажмите «Установить»
— Осуществляет предварительные проверки и отображение совместимости расширения с используемыми вами архитектурой / платформой / релизом
— Даёт возможность ручного / автоматического обновления списка расширений с получением обновлённого списка
— Основано на процедуре установки известных в настоящее время расширений
— Работает на всех архитектурах / платформах / релизах
— Не нуждается в jail или pkg_add.
— Добавляет страницы в nas4free WebGUI
— Отличается простотой установки, обновления и удаления конфигурации и расширение управления

Процедура установки
1. Сохранить текущий конфиг в  SYSTEM | BACKUP/RESTORE | Download configuration.

2. Выбрать папку, где будут стоять расширения. Если вы настраивали по этому бложику, то у вас как и у меня это /mnt/Pool/Ext/Extensions. В любом случае эта папка должна быть на диске, который переживёт перезагрузку. При необходимости создайте такую папку.

3. Вариант А. Через ADVANCED | COMMAND выполнить код из из оригинального источника.
    Вариант Б. Через командную строку (обычно putty) выполнить следующие команды
cd /usr/local/www
fetch https://raw.github.com/crestAT/nas4free-onebuttoninstaller/master/OBI.php
mkdir -p ext/OBI
echo '{a href="OBI.php"}OneButtonInstaller{/a}' } ext/OBI/menu.inc && echo -e "\nDONE"

ВАЖНО. ЖЖ не позволяет корректно отобразить html коды, использованные в нижней строке. Поэтому я заменил знак меньше на { а знак больше — на }
Исправьте все пять штук фигурных скобок
Сама строка должна выглядеть как на скриншоте ниже

4. Обновить вебгуй nas4free, откройте в меню EXTENSIONS | OneButtonInstaller, выбрать папку из п 2., нажать  ‘Save’ для завершения установки или  ‘Cancel’ для отказа от установки и удаления установщика из системы.

5. После завершения установки вы можете использовать расширение через  EXTENSIONS | OneButtonInstaller.


После включения расширения система написала, что требуется перезагрузка, я её сделал.

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

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

Разработчику, crest, большой респект. Кажется мне, что долго это расширение не проживёт. Не потому, что плохое. Наоборот, это надо включать в коробочную функциональность.

2gusia.livejournal.com

Нас было семеро. Обзор дистрибутивов для организации NAS-сервера — «Хакер»

Содержание статьи

 

Обзор дистрибутивов для организации NAS-сервера

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

  • Сайт: freenas.org
  • Платформа:FreeBSD 8.3
  • Системные требования: CPU x86/x64, RAM 128+ Мб, HDD 500 Мб
  • Архитектура: x86, x64
  • Русификация интерфейса: да
  • Лицензия: BSD

Дистрибутив FreeNAS (Free NAS Server) построен на базе FreeBSD, при этом номер версии совпадает с номером релиза FreeBSD, на основе которого он создан. Изначально проект развивался под руководством Оливье Кошар-Лаббе (Olivier Cochard-Labbé), затем к нему подсоединилась группа добровольцев, что придало серьезный импульс развитию проекта. Сегодня FreeNAS находится под патронажем компании iXsystems, занимающейся разработкой аппаратных NAS на его основе. Кстати, эта компания поддерживает PC-BSD и способствует развитию ZFS во FreeBSD.

Текущая версия FreeNAS в качестве ФС использует ZFS (пул версии 28), среди особенностей которой: поддержка автоматического распознавания и объединения дубликатов данных, реализация RAID-Z3 (программный RAID 7, ZFS хранит три копии структур, обеспечивающих целостность), возможность разделения отзеркалированного zpool-раздела на несколько раздельных пулов (zpool split), импорт пула в режиме только для чтения, ускорение работы со снапшотами и другое. Например, функция ZFS Snapshots позволяет создать и отправить на удаленную систему снимок локальной ФС (и обновлять в случае изменений), а при сбое быстро восстановить работоспособность.

В релизе FreeNAS 8.3.1 реализовано шифрование ZFS, теперь можно надежно защитить данные без привлечения сторонних решений. Если процессор поддерживает инструкции AES-NI, работа модуля шифрования не будет сказываться на производительности. Управление ключами очень простое, подключить затем такой диск на другом сервере не составит труда.

Для доступа к хранилищу заявлена поддержка iSCSI, FTP/FTPS/TFTP, NFS, Samba, AFP (Apple Filing Protocol), SSH и синхронизация посредством RSYNC. Возможна организация программного RAID (0, 1, 5, 6, 10, 60), RAID-Z1/Z2/Z3, импорт дисков, отформатированных в FAT, NTFS, EXT2/3, UFS RAID. Для авторизации клиентов используется LDAP / Active Directory.

Реализованы и другие полезные функции: SNMP-мониторинг, тест дисков при помощи S.M.A.R.T., отправка журналов на удаленный syslogd и отчетов по электронной почте. Администратор получает наглядные графики использования ресурсов NAS-сервера.

С версии 8.2.0 поддерживаются плагины, которые позволяют легко расширить возможности системы. Аддоны основаны на FreeBSD jails и пакетах PBI с PC-BSD и полностью изолируют дополнения от основной системы. В настоящее время представлены расширения, реализующие поддержку BitTorrent, потокового DAAP-сервера (на основе Firefly) и MiniDLNA.

Файлы конфигурации и пользовательские данные хранятся на отдельном дисковом разделе data, в некоторых конфигурациях это неудобно. Все функции полностью настраиваются через локализованный и интуитивно понятный веб-интерфейс (написан с использованием Django). Также через веб можно подключиться к shell.

FreeNAS распространяется в виде установочных x86/x64 ISO-образов, образов для USB. На странице загрузки доступны и образы обновлений, пакет плагинов. Системные требования, в общем-то, невысоки, но каждая функция ZFS требует дополнительных мощностей и большого количества свободной памяти.

Установщик, как полагается во FreeBSD, текстовый, но работа с ним каких-либо неудобств не вызывает. Необходимо лишь выбрать из списка диск, на который ставить ОС, и согласиться с тем, что данные будут уничтожены, после перезагрузки можно настроить сеть при помощи конфигуратора (/etc/netcli).

Интерфейс FreeNAS позволяет контролировать все аспекты работы сервера
  • Сайт: openmediavault.org
  • Платформа: Debian
  • Системные требования: CPU i486/amd64, RAM 1+ Гб, HDD 2+ Гб
  • Архитектура: x86, x64
  • Русификация интерфейса: да
  • Лицензия: GNU GPL

Проект развивается в рамках FreeNAS и предлагает его реализацию, основанную на пакетной базе Debian (ядро 2.6.32). Считать OpenMediaVault копией нельзя, поскольку это вполне самодостаточное решение со своими особенностями. Так, если FreeNAS ориентирован на максимальное использование возможностей ZFS, то OpenMediaVault нацелен на большую поддержку встраиваемых устройств и простую подсистему установки дополнений и обновлений. Например, для установки плагинов и обновлений используется штатный пакетный менеджер, поэтому вместо смены всей «прошивки» просто ставится новая версия пакета, админ выбирает ее в предложенном списке в GUI, даже не вникая в особенности работы APT.

Система может быть запущена на любом оборудовании, которое будет работать в Debian. В качестве файловой системы используются ext3/ext4/XFS/JFS и NTFS/FAT32 (чтение/запись), поддерживается программный RAID (0, 1, 5, 6, JBOD, 5+0, 5+1, 0+1, 1+0 и другие при помощи mdadm). Для подключения к данным настраиваются SMB/CIFS, FTP/FTPS, TFTP, NFSv3/v4, SSH и RSYNC. Некоторые возможности реализованы при помощи плагинов: LVM, iSCSI Target, поддержка LDAP, доступ AFP, клиент BitTorrent, сервер DAAP, поддержка UPS и антивирус. Возможна организация совместного доступа к ресурсам и разделения привилегий (в том числе ACL) на основе групп и пользователя, настройка квот. Для мониторинга используется SNMP (v1/2c/3), S.M.A.R.T., отслеживается состояние UPS. В случае проблем администратор получает уведомление по email. В отличие от FreeNAS, для хранения настроек создается один смешанный раздел, сочетающий данные и системные файлы.

Для установки доступен образ для x86- и x64-систем, образы для VMware и VirtualBox, репозиторий для Debian. Также можно скачать исходные тексты и собрать все самому, то есть при желании дистрибутив легко затачивается под конкретные условия.

Управляющий веб-интерфейс OpenMediaVault написан на PHP с использованием JavaScript-фреймворка ExtJS, поддержка Ajax позволяет получать данные без перезагрузки страниц. Несмотря на использование других инструментов в создании интерфейса, внешне он очень похож на FreeNAS, хотя несколько проще в использовании (сказываются особенности ФС и системы обновлений).

Программа установки текстовая, но сложностей не вызывает. В процессе предстоит выбрать часовой пояс и установить пароль root. По умолчанию системный диск форматируется в ext4, и повлиять на это никак нельзя. Все остальные системные настройки производятся также через веб — сеть, брандмауэр, обновления, плагины и так далее. Пароль/логин для входа в интерфейс управления — admin/openmediavault.

OpenMediaVault — самодостаточное решение, появившееся в результате переноса идей FreeNAS в DebianОсновная фишка OpenMediaVault — простая установка дополнений
  • Сайт: nas4free.org
  • Платформа: FreeBSD 8.3
  • Системные требования: CPU x86/x64, RAM 256+ Мб, HDD 500 Мб
  • Архитектура: x86, x64
  • Русификация интерфейса: да
  • Лицензия: BSD

NAS4Free был основан на кодах FreeNAS 0.7, когда прародитель (включая название) перешел под крыло iXsystems и началась его коммерциализация. Ориентирован в первую очередь для применения во встроенных системах, хотя не ограничен в возможностях установки на обычный компьютер или виртуальную машину.

Текущая версия построена на базе FreeBSD 9.1, в качестве ФС использует ZFSv28 (включая RAID-Z1/Z2/Z3), UFS, ext2/3, FAT, NTFS, поддерживает программный RAID (0, 1, 5 и другие) и шифрование диска. Обмен данными возможен по протоколам SMB/CIFS, FTP, TFTP, NFS, AFP, iSCSI (initiator и target), SCP (SSH), BitTorrent, HAST, CARP, синхронизация данных посредством RSYNC (клиент/сервер) или Unison. Поддерживает UPnP (на базе Fuppes), сервер iTunes/DAAP (Firefly), протоколы CARP, HAST, VLAN и Wake On LAN. Управление доступом производится на основе пользователей и групп UNIX. Для аутентификации используется внутренняя база и средства Active Directory и LDAP.

Состояние хардов отслеживается при помощи S.M.A.R.T., реализованы SNMP, отправка сообщений Syslog, контроль состояния UPS. В случае проблем админ получает уведомление по email. Поддерживается весь спектр оборудования, совместимый с FreeBSD. Все это полностью настраивается через веб-интерфейс.

Дистрибутив может быть установлен как на обычный хард, так и на Compact Flash, USB, SSD, также может работать с LiveCD/LiveUSB. Систему не следует устанавливать на диск емкостью более 2 Тб, такой диск можно использовать только для хранения данных.

Все настройки сохраняются в одном XML-файле (config.xml), поэтому их очень просто перенести на другую систему. Такой файл можно поместить на флешку, тогда он подхватится автоматически во время инсталляции, или импортировать через веб-интерфейс.

Работа с NAS4Free во многом напоминает FreeNAS старых версий. Например, по умолчанию устанавливается IP-адрес 192.168.1.250. После загрузки ОС появляется консольное меню, позволяющее сконфигурировать сетевые интерфейсы, сменить IP, установить систему, выйти в shell, сбросить пароль веб-администратора (по умолчанию учетки admin и root имеют пароль nas4free) и так далее. Интерфейс, кроме прочего, предоставляет возможность некоторых системных настроек, имеет редактор файлов, файловый менеджер, возможность отправки команд оболочке, инструменты сетевой диагностики, тестирование пропускной способности сети (при помощи Iperf). По умолчанию все сервисы отключены, администратор самостоятельно запускает и настраивает то, что необходимо.

В Wiki описано, как можно пересобрать дистрибутив под себя, добавив в него нужные приложения.

Управление дисками в NAS4Free
  • Сайт: zfsguru.com
  • Платформа: FreeBSD 9.1
  • Системные требования: CPU x64, RAM 1+ Гб, HDD 2+ Гб
  • Архитектура: x64
  • Русификация интерфейса: нет
  • Лицензия: BSD

Проект относительно молодой и ориентирован в настоящее время скорее на домашних пользователей и небольшие организации. В качестве файловой системы используется ZFSv28, поддерживаются UFS и ext2/ext3 (после установки e2fsprogs). Возможно создание программного RAID (0, 1, 5, JBOD, 5+0, 5+1, 0+1, 1+0 и так далее), RAID-Z1/Z2. Доступ к данным реализуется посредством iSCSI (initiator и Target), SMB/CIFS, NFS, SSH, RSYNC (клиент и сервер) и AFP. Поддерживаются специфические функции ZFS: дедупликация, снапшоты и сжатие, которые можно настроить через интерфейс для каждой ФС. Возможно использование SSD в качестве кеширующего устройства (ZFS L2ARC), позволяя тем самым повысить производительность при операциях чтения. Предусмотрено применение резервных дисков, которые будут активированы автоматически в случае выхода из строя одного из дисков массива.

Поддерживается управление учетными записями пользователей и групп, аутентификация средствами Active Directory и LDAP. Отчеты S.M.A.R.T., монитор I/O и benchmark позволяют контролировать состояние и производительность жестких дисков. Администратор может получать email о критических параметрах (в поставку входит Sendmail), отправку журналов на удаленный syslogd.

Функции легко расширить при помощи пакетов, которые устанавливаются простым щелчком. В настоящее время доступно восемь категорий, в которых насчитывается около 70 приложений — iSCSI-target, OwnCloud, несколько FTP-серверов, BitTorrent, антивирус ClamAV и другие.

Поддерживается весь спектр оборудования, совместимый с FreeBSD 9.1, в том числе многие Wi-Fi сетевые карты и RAID-контроллеры. Для управления используется веб-интерфейс (написан на PHP, в качестве веб-сервера задействован lighttpd), по виду напоминает настольное приложение. Настроек в нем много, они разбросаны по меню и подменю, можно изменить в том числе и некоторые системные параметры, есть веб-консоль для ввода команд оболочки и просмотра файлов на диске. Применение ZFS также накладывает свой отпечаток. Поэтому некоторое время придется потратить, чтобы освоиться. Далее проблем в работе обычно не возникает. Чтобы расшарить ФС, достаточно ее выбрать и нажать соответствующую ссылку, будет показана команда, которую можно тут же подправить.

ZFSguru реализован в виде ISO-образа, поддерживающего установку на жесткий диск, USB или виртуальную машину. Возможна загрузка и работа с LiveCD. Веб-интерфейс доступен отдельным архивом, который можно использовать для установки на FreeBSD. На сайте есть все необходимые инструкции по установке. Таким образом, можно легко собрать NAS-сервер под любые условия, обеспечив удобное управление.

Программа установки несколько отличается от других решений. Образ выгружается в ОЗУ, поэтому желательно наличие 1 Гб памяти, иначе процесс может завершиться с ошибкой. После загрузки доступно меню, позволяющее выйти в shell, узнать IP, сбросить настройки веб. Далее следует подключиться к серверу при помощи веб-браузера и произвести установку, воспользовавшись подсказками визарда, который поможет настроить доступ к серверу NAS, аутентификацию, настроить ZFS pool, отправить в сообщество ZFSguru данные об используемом оборудовании.

Настройка файловой системы в ZFSguru
  • Сайт: openfiler.com
  • Платформа: rPath Linux
  • Системные требования: CPU x64 1,6 ГГц, RAM 2+ Гб, HDD 8+ Гб
  • Архитектура: x64
  • Русификация интерфейса: нет
  • Лицензия: GNU GPL

Первые версии дистрибутива, начало развития которого положено в 2003 году, базировались на CentOS, но впоследствии разработчики остановили выбор на сервисе rBuilder Online дистрибутива rPath. Текущая версия позволяет использовать компьютер в качестве бэкенда VM. Поддерживается Fibre Channel, iSCSI (initiator и target) и GNBD (сетевое блочное устройство).

Обеспечивается возможность простого управления хранением данных, поддержка больших хранилищ 60+ Тб, point-in-time снапшоты. Реализована синхронная и асинхронная поблочная репликация данных между узлами при помощи RSYNC (Remote Block Replication).

Кроме того, поддерживаются все сетевые протоколы, используемые сегодня для передачи файлов: CIFS/SMB (с «теневыми» копиями), NFSv3/v4 (с поддержкой ACL), HTTP/DAV, FTP, программный RAID всех популярных уровней (0, 1, 5, 6 и 10) и LVM2. В качестве файловой системы можно выбрать ext3 и XFS (рекомендуются, форматирование производится через GUI) или ReiserFS и JFS (форматирование вручную).

Чтобы удобнее управлять ресурсами дисков, их объединяют в общий пул (Dynamic Volume Aggregation), который затем «нарезают» по назначению (Logical и PITC Volumes).

Аутентификация пользователей может производиться средствами PAM (настраивается через веб), NIS, LDAP, Hesiod, Active Directory и NT4 домена, причем можно задействовать одновременно несколько механизмов. Политика доступа к ресурсам реализуется на основе членства в группе, IP-адреса или принадлежности к сети. Возможна автоматическая активация персональных (home) ресурсов зарегистрированных пользователей и гостевых каталогов. Дисковые квоты задаются для групп, персонально и отдельно для гостей. Это позволяет реализовать любые варианты. Для быстрой настройки квот используются шаблоны.

Openfiler содержит ряд приложений, выпускаемых под свободными лицензиями, — Apache, Samba, Bacula и другие. Поддерживается управление UPS. Есть возможность объединения нескольких Openfiler в кластер высокой доступности (High Availability).

Все настройки осуществляются через понятный, хотя и не локализованный веб-интерфейс (доступен на 446-м порту) или через SSH. Основные установки сервисов представлены в виде Administrative Tasks, позволяющих выполнить все необходимое поэтапно. После выбора меню внизу открывается подменю, основные пункты выбираются в поле справа. Некоторые продвинутые настройки убраны и открываются дополнительно (Expert View). Для управления настройками используется логин openfiler и пароль password, пользователь root (создается при установке) через веб может только настраивать квоты.

Изначально проект нацелен на коммерциализацию, поэтому внятная документация отсутствует. К счастью, в Сети можно найти ряд руководств, подготовленных пользователями. Поддержка возможна через форум, список рассылки или в IRC-канале. За плату предоставляются официальная поддержка и расширенные возможности.

Официально поддерживается установка в виртуальную среду Citrix XenServer и VMware vSphere. Последний релиз доступен только в виде ISO-образа под x86_64, но в случае необходимости использования оборудования на x86 или виртуальных машин VMware можно обратить внимание на предыдущий релиз. В качестве установщика используется усеченный вариант Anaconda. Сам процесс установки занимает десять минут и понятен даже новичку. Можно выбирать между графическим или текстовым вариантами.

Последний релиз датирован 2011 годом, но то, что есть, вполне актуально на сегодняшний день, и проект по-прежнему считается активным. Однако, учитывая, что rPath канул в Лету, обновить при необходимости компоненты Openfiler будет не просто.

Openfiler: для удобного управления ресурсами дисков их объединяют в общий пул
  • Сайт: nexentastor.org, nexenta.com
  • Платформа: OpenSolaris/Illumos
  • Системные требования: CPU x32 (рекомендуется x64), RAM 1 Гб, HDD 2 × 10+ Гб
  • Архитектура: x86, x64
  • Русификация интерфейса: нет
  • Лицензия: Community Edition EULA / коммерческая

Дистрибутив для создания сетевых хранилищ, который сочетает в себе ядро OpenSolaris и программное окружение Ubuntu 8.04 (в последующем планируется переход на ядро, разрабатываемое в рамках Illumos, и Debian Squeeze). В качестве файловой системы используется ZFS, для работы с пакетами задействован пакетный менеджер APT (штатный ncp3-репозиторий предоставляет более 12 тысяч пакетов). Есть и своя специфика. При работе apt-get создаются контрольные точки, на которые можно при желании откатиться. Также apt-clone позволяет клонировать систему для обновления в отдельный ZFS-пул, после чего переключить рабочую систему в обновленное окружение. Поддерживается все, что присуще ZFS: сжатие и дедупликация, синхронная и асинхронная репликация, поиск в снапшоте, отсутствуют лимиты на размеры файла, на количество снапшотов и copy-on-write клонов. Предусмотрена возможность использования кеша на SSD (Hybrid Storage Pools). Реализована поддержка комплекса технологий VAAI (vStorage API for Array Integration), предназначенного для передачи некоторых операций виртуальных машин по работе с дисками на сторону массива с целью повышения производительности. Подключение возможно как по NAS (NFS, CIFS, WebDAV, FTP), так и по SAN (iSCSI & FC). Реализовано управление квотами на уровне пользователей и групп, возможна интеграция с Active Directory. Управление системой производится через удобный веб-интерфейс (NexentaStor Management Viewer) или с помощью командной строки. Предусмотрена интеграция с внешними приложениями посредством API, возможности расширяются при помощи модулей.

Перед установкой следует свериться со списком поддерживаемого оборудования. NexentaStor делится на две версии: Enterprise и Community Edition. Последняя бесплатная, построена на Illumos/Debian и имеет ограничение максимального размера хранилища в 18 Тб, также отсутствует ряд модулей (например, для HA-кластера). Кроме установочного, доступны образы для быстрого развертывания в VMware и Citrix Xen.

Сам процесс установки довольно прост, все необходимые настройки производятся при помощи мастера. Интерфейс не локализован, но сложным его назвать нельзя.

 

Особенности ZFS v28 в FreeBSD

Файловая система ZFS не является «родной» для FreeBSD, поддержка долгое время существовала в виде патча, затем код был интегрирован в основную ветку FreeBSD 8.3 и 9.0. В настоящее время обеспечивается:

  • Поддержка автоматического распознавания и объединения дубликатов данных, которые будут сохранены на физический носитель только один раз. Это позволит существенно уменьшить занимаемое дисковое пространство и повысить производительность. Но нужно помнить, что на каждый блок ФС ZFS использует примерно 512 байт в памяти для таблицы дедупликации, если задать маленький размер блока, то ресурс быстро исчерпается и ZFS будет тормозить.
  • Поддержка RAID-Z3 — варианта RAIDZ с хранением трех копий, отвечающих за обеспечение целостности структур. Это позволяет значительно повысить надежность хранения по сравнению с RAID-режимами с двойным дублированием — RAID–6 и RAID-Z2, так как обеспечивается целостность данных при одновременном выходе из стоя сразу трех дисков.
  • Поддержка команды zpool split, предназначенной для разбиения отзеркалированного zpool-раздела на несколько раздельных пулов. Позволяет упростить клонирование данных, когда к зеркалу добавляется несколько дисков, производится синхронизация и диски исключаются из пула. С использованием zpool split очень просто исключить диск из пула и создать на его основе новый пул.
  • Ведение счетчика ссылок на снапшот для более гибкого управления удалением неиспользуемых снапшотов. Увеличив счетчик, пользователь может пометить, что снапшот используется и его нельзя удалять.
  • Импорт пула в режиме только для чтения.
  • Утилита zfs diff отображает различия между двумя ZFS-снапшотами или между снапшотом и текущим состоянием ФС.
  • Команда zpool import -F позволяет «перемотать» поврежденный пул к состоянию, соответствующему более ранней группе транзакций.
  • Сайт: http://lime-technology.com/unraid-server
  • Платформа: Slackware
  • Системные требования: CPU x32, RAM 512 Мб, HDD 1+ Гб
  • Архитектура: x86, x64
  • Русификация интерфейса: нет
  • Лицензия: GNU GPL / коммерческая

Дистрибутив, базирующийся на фирменной технологии, разработанной Lime technology LLC. От стандартных RAID ее отличает то, что в единый массив можно объединять диски SATA и PATA, диски разных объемов и скоростей. Для этого применяется отдельный диск для контрольной суммы (четности), данные между дисками не чередуются. Предусмотрена возможность динамического добавления дисков в массив.

Предлагается три версии: Basic (бесплатная), Plus и Pro. Лицензия привязывается к GUID диска, на которую установлена система. В Basic используется обычный RAID и установлено ограничение в три диска (Plus — 7, Pro — 25). Старшие версии поддерживают возможность разграничения доступа и интеграцию с Active Directory.

Основой unRAID Server является дистрибутив Slackware. Управление производится при помощи веб-интерфейса или стандартных команд UNIX. Дистрибутив нетребователен к мощности CPU и ориентирован прежде всего на встроенные системы, может устанавливаться и работать с USB-носителя. Система плагинов позволяет легко расширять штатные возможности. При знании основ Linux все нужное можно добавить самостоятельно. Поддерживаются все присущие NAS и SAN протоколы.

Перед установкой рекомендуется свериться со списком Hardware Compatibility. Сам процесс развертывания можно назвать нестандартным, но он хорошо описан в документации. По умолчанию диски форматируются в ReiserFS v3.6 (рекомендуемой), поддерживаются и другие ФС, в том числе NTFS.

 

WARNING

При использовании ZFS нужно следить за доступным свободным местом: когда его остается меньше 10%, производительность сильно падает.

Выбор готовых решений, как видишь, очень большой, посоветовать что-то одно довольно сложно. Все зависит от конкретных условий использования и личных предпочтений касательно ОС и основной файловой системы. Сторонники Linux наверняка остановятся на OpenMediaVault, а BSD’шники будут мучительно выбирать между FreeNAS и NAS4Free. Если ты хочешь полностью оценить возможности ZFS, попробуй начать с NexentaStor.

 

INFO

Релиз FreeNAS 8.3.0, построенный на базе FreeBSD 8.3, стал самой популярной версией дистрибутива.

Количество загрузок FreeNAS превысило 500 тысяч.

Сейчас ведется разработка FreeNAS версии 9.1, пока находится в статусе бета.

Автор OpenMediaVault — Фолькер Тайле (Volker Theile), один из основных разработчиков FreeNAS.

xakep.ru

FreeNAS vs NAS4FREE или позор на IXsystems

Как известно, для задач домашнего NAS есть несколько продуктов, помимо обсуждающегося здесь nas4free. В частности — FreeNAS. Когда-то, во времена, когда мне прихотелось иметь дома NAS продукт был сырой до убожества вплоть до того, что не мог импортировать zfs пулы. Но с годами подтянулся до вполне приличного уровня. В каждой избушке свои погремушки, некоторые отличия у двух близких продуктов есть — например актуальная версия FreeNAS не поддерживает 32-разрядные процессоры, а потому не годится для старых компов. Понемногу пишет в процессе работы на системную флешку, потому её постепенно точит. Зато умеет root-on-zfs, то есть можно две системные флешки, к примеру, поставить как зеркало и пользовать всю магию снимков файловой системы на системном диске. Ну и так далее и тому подобное.

Была, впрочем, дурнопахнущая история, когда отжавшая торговую марку FreeNAS конторка IX Systems пыталась старый продукт удушить, ибо он тогда назывался FreeNAS. Тогда, собственно, и пришлось придумать новое имя nas4free. C другой стороны, дело было давно, в 2009, и вонь как-то постепенно улетучилась и забылась. Оба продукта существуют, выбирай любой, при желании платить бабло — у FreeNAS есть платные варианты.

Но вот тут-то собака и порылась. Бабло всегда побеждает зло и тов. из IXsystems полностью бесплатный аналог так видать не нравится, что кушать не могут. По коему случаю выпустили таблицу сравнения. Что само по себе дело полезное, вон к примеру годовалой давности независимое сравнение. Оно небезупречное, автор во многом не разобрался, но честное — автор пишет то, во что сам верит. Например

Я был уже довольно хорошо знаком с FreeNAS к тому времени, когда я начал эту статью (сделал около 10 установок), но я ранее никогда не видел NAS4Free. И сразу же нашел простой интерфейс NAS4Free более привлекательным — он чистый и интуитивно понятный, в частности, в отличие от интерфейса FreeNAS.

Но, как говорится, кому нравится поп, кому попадья, а кому и попова дочка. Нравится-нет — это вопрос вкуса. Реальная проблема — когда кто-то начинает лгать и передёргивать, хваля свой продут, на котором делает деньги и обливая грязью продукт чужой. И это как раз про собственное сравнение от IXsystems.

Так что придётся по вранью пройтись. Хотя ещё раз — против самого продукта FreeNAS я ничего особо не имею, впрочем — и не использую.

Железо. nas4free может работать на очень слабом, x86 или amd64 железе, с гигабайтом памяти — и с zfs. В бете порт на ARM, включая малинку. Доступна бета на freebsd 10.1

freenas в текущей версии требует 6Gb памяти и 64 разрядный процессор. Потому, что без ZFS работать не может, а 32x версию zfs парни поддерживать не хотят. Может и правильно, но экономную до ресурсов UFS тоже перестали поддерживать. Ибо лень.

Об этом в сравнении либо умалчивается, либо даётся искажённое впечатление.

Проект. Пишут, что у freenas гораздо больше разработчиков. Думаю — правда. Просто потому, что без малого полмиллиона строк кода тянуть куда как труднее, чем 80 тыс. Пришлось ведь сделать в 10 раз больше исправлений! Вот только стесняюсь спросить — при примерно равном функционале двух систем какой продукт лучше написан — на 450 000 строк или на 78 000? И стоит ли так уж гордиться тем, что за год в код внесено 3800 исправлений, а не 370?

Функционал. Вот тут то передёргивание переходит в прямую и наглую ложь. В отличие от написанного, для nas4free доступны
— «визуальные отчёты» — ср расширение RRDGraph
— апгрейд через вебгуй
— механизм расширений с графическим интерфейсом в том числе (на выбор — extensions, Бриг, против отдалённо подобного Бригу механизма расширения через клетки-плагины) плюс есть Finch действительно из командной строки — богатство выбора явно в чью пользу
— zfs снимками можно управлять из вебгуя. В том числе настроить автоматическое изготовление и удаление старых через месяц, например.
— как можно было не заметить embedded установку — я вообще теряюсь

А уж когда в конце списка дошла речь до возможных расширений — так вообще оторопь берёт. Ладно ребята могут не знать, как прикрутить медиабраузер или plex (хоть в официальных форумах описано). Но хвастаться наличием торрент клиента как плагина перед продуктом, в котором он же доступен из коробки — это уже беспредел какой-то.

Так что, хоть деньги и не пахнут, воняет от IXsystems отвратительно. С таким маркетингом впору тухлой рыбой торговать, благо акулий плавник на фавиконе. Стыдоба.

2gusia.livejournal.com

Plex как расширение nas4free — 2gusia aka mikemac — LiveJournal

Я уже достаточно давно и с удовольствием использую медиасервер Plex на nas4free. Но тот вариант установки, который я использую, требует достаточно серьёзных телодвижений, начиная с установки chroot окружения. Но с тех пор прошло много времени и камрад JoseMR написал несколько последовательных версий расширения для Plex для nas4free. А камрад crest — OneButtonInstaller aka УстановщикОднойКнопкой для установки расширений nas4free для домохозяек. Сегодня мы эти два инструментаи применим.

NB ВАЖНО. Если у вас исполняется Plex в chroot, НЕ НУЖНО одновременно ставить расширение Plex. Будет конфликт. В принципе, при желании можно снести chroot инсталляцию, сохранив файлы базы данных медиа. И потом скормить их новой инсталляции. Я это делал при переходе от jail установки в chroot и описывал — так что по аналогии. Но я сам пока не планирую на своей системе менять и продолжу пользовать вариант с chroot установкой.

0. Предполагается, что менеджер расширений OneButtonInstaller установлен как ранее описывалось, сконфигурирован и обновлён до актуальной версии.

1. Открываем OneButtonInstaller в меню Extensions, ставим галочку против Plex Media Server. Нажимаем внизу кнопку Install.

2. Система немного думает и, в случае успешной установки, сообщает

Это, собственно, всё. 🙂

В результате Plex устанавливается в подпапку папки, указанной для установки расширений в OneButtonnstaller, затем запускается а в System|Advanced|Command Scripts вносится вызов PostInit скрипта, который берёт на себя всю машинерию по обеспечению работы Plex в хост системе для embedded nas4free.

3. Теперь надо обратиться к запущенному серверу Plex через браузер. Идём по адресу http://ip-nas:32400/web — например, http://192.168.1.30:32400/web
(Обратите внимание — на этапе настройки http, а не https. После первоначальной настройки можно и по https, но на сертификат у меня браузер ругается. Я добавил в исключения.)
Итак, видем в браузере предложение войти или зарегистрироваться</ip-nas>

Для регистрации нужна электронная почта, придётся придумать логин и пароль. Если уже есть — вводим старые — одному пользователю даже бесплатной версии можно иметь несколько Plex серверов.

4. Дальше вам предлагают простейший мастер минимальной настройки — выбрать название и указать, где лежат медиафайлы.

Имя у меня n44bacula  — чисто случайно. Просто я ставил на виртуалку, где параллельно с бакулой экспериментирую. Выберите удобное для себя.

Галочка внизу  Allow me to access… по умолчанию стоит. Это переводится Дать мне доступ к моему медиа из-за пределов дома. Я как параноик отключил, но в принципе — функциональность полезная — смотреть собственное видео, слушать аудио по интернет.

Дальше выбираем папки, где лежат медиафайлы и указываем их Plex. Кстати, папки можно добавлять и изменять и позже. Не буду писать мануал по настройке, но надо понимать, что папки у Plex бывают нескольких видов — Кино, Сериалы (они же ТВ-шоу), Фото, Домашнее видео. Прочих видов медиа (образы и папки DVD и BD дисков, игры, книги, музыкальные видеоклипы и пр) Plex не понимает. По крайней  мере без бубна.

Если после добавления папки Plex в ней ничего не видит — 99 шансов из 100, что у него нет к папке доступа на чтение.
К примеру, дать годный доступ (rwx,r-x,r-x) к медиафайлам в папке /mnt/Pool/Media можно командой

chmod -R 755 /mnt/Pool/Media

Язык папкам я ставлю русский. Но может быть смысл каким-то давать английский или даже другие, например французский для французского кино (si vous parlez français)

5. Наконец, бросим взгляд на интерфейс самого расширения Plex

Тут всё просто — кнопками можно Plex (слева направо) Запускать, Останавливать, Рестартовать, Обновлять и Бекапить.

Нижняя часть — для удаления расширения. Если поставить галочку против Plexdata, то удалится не только расширение и софт, но и созданные вами в процессе эксплуатации базы данных медиа.

6. Приживляем Кинопоиск

2gusia.livejournal.com

Флэш-память для загрузки FreeNAS и прочих embedded OS / Habr

Аннотация

Анализ ошибок и технических сбоев — традиционно наименее раскрытая и наиболее интересная тема, которая как раз и показывает, насколько удачная была инженерная идея. Построив некоторое время назад сервер NAS из старого железа, мы начинаем анализ происходивших с ним отказов. В этой статье речь пойдет об отказах из-за загрузочной флэшки и их вероятных причинах. Даны рекомендации по выбору флэш-памяти. Отчасти применимо и к другим встраиваемым системам, например, бытовым видеорегистраторам.
Еще один NAS своими руками, часть 2: хорошие воспоминания*

*Рекламный слоган одного известного производителя памяти звучит «Good memories start here».

Практически все специалисты рекомендуют при выборе загрузочной флэшки не экономить и не использовать популярный бренд noname. Несмотря на корневую файловую систему FreeNAS версии 9 в режиме read-only, потребительские USB-флэшки компактного дизайна за полгода отказывали дважды, в обоих случаях примерно спустя пару месяцев эксплуатации. Причем оба использованных бренда, по мнению некоторых опрошенных представителей отрасли, вполне адекватные и уважаемые, в поставке откровенного брака незамеченные.


На фото: два вполне адекватных представителя крохотных флэшек на 8Гб и 16Гб

В чем же дело? Бесконечен ли ресурс чтения флэш-памяти? Попробуем разобраться.

Как это было

Система на базе FreeNAS работала хорошо в среднем два месяца. Затем переставали приходить ежесуточные отчеты по email, за ними отваливался веб-интерфейс администратора. Но сервер так просто не сдавался: SSH работал, и сервисы сетевых папок для пользователей мужественно держались до последнего, продолжая обслуживать Бизнес. Похвальная устойчивость.
Пока не отвалился доступ по SSH, в поисках причин отказа веб-интерфейса я по «ругани» в журналах веб-сервера нашел проблемную страницу (скрипт на языке python), где достаточно разборчиво увидел замены отдельных букв в тексте. Это трудно описать словами, но будто через строго одинаковые интервалы символов палец программиста проваливался между клавиш. Затем программист как будто съезжал с катушек окончательно, или же в панике выдергивал из клавиатуры свой застрявший палец, но осмысленный скрипт обрывался и перерастал в случайный набор байтов. Неужели bit flip? Оказалось, что другие пользователи наблюдали очень похожую картину. Перезаливка флэшки проходила без единой ошибки, скрывала дефект, и многочасовое тестирование утилитой им. Михаила никаких ошибок не выявляло. Ну просто идеальная флэшка. Самое обидное, что образец испорченных данных я таким образом затер, о чем сильно сожалею. Чертовщина какая-то.
Кто виноват?

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

«Кто виноват?» — роман в двух частях Александра Ивановича Герцена.

Что такое флэшка

Эту тему неплохо раскрыл популяризатор и Автор хабра Tiberius в статье Взгляд изнутри: Flash-память и RAM. Кто не читал — это действительно взгляд изнутри, браво! Я же попробую компактно изложить чуть с другого угла. Есть и менее инвазивные способы проникнуть внутрь флэшки, см., например, ресурс http://flashboot.ru/iflash/.
Итак, совремемнная бытовая флэшка — это крохотный компьютер, со своим процессором (микроконтроллером), небольшим объемом ОЗУ и ПЗУ, шинами данных, интерфейсом ввода-вывода и, собственно флэш-памятью типа NAND, обычно на отдельных микросхемах.
Микроконтроллер общается с хостом по шине USB, считывает, стирает, записывает блоки («секторы»), умеет вычислять контрольные суммы блоков, управляет износом своего хозяйства NAND-чипов (см. wear leveling) и делать массу других вещей, о которых мы, простые смертные, и близко понятия не имеем.
оффтоп про микроконтроллерыВолшебный мир микроэлектроники рынок микроконтроллеров, кстати, широко шагнул за последние годы к любителям и энтузиастам, чего только стоит платформа Arduino или челябинский проект им. DI HALT, дай Бог им здоровья. Так что те, кому надоели машинки-кораблики, могут попробовать новые игрушки, с эдаким запахом промэлектронной брутальности;-)
Что делает производитель флэшек

На мой взгляд, это очень простой вопрос: производитель собирает описанный выше «компьютер» из комплектующих, готовит софт (прошивку микроконтроллера), ставит на готовое изделие свое клеймо (бренд) и продает на рынке. Надежность флэшки зависит как от качества комплектующих, так и от прошивки. Иногда используются комплектующие собственного производства, иногда — стороннего (есть очень крупные заводы). Фирма веников не вяжет, как говорили когда-то. Но фирма очень дорожит своей репутацией, и потому веники микросхемы все-таки проверяет.
Есть расхожая версия, что производители микросхем (комплектующих) делят производимую продукцию одного типа на разные классы качества, именуемые на жаргоне «корзинами». Условно для развитых рынков и условно для всех остальных. Или для бизнеса и для потребительского использования. Или еще как-нибудь, но очень важно для потребителя (как дома, так и бизнеса) то, что изделие одного и того же вендора с одним и тем же кодом не обязательно означает одни и те же «внутренности». Поэтому покупать электровеники на eBay (вслушайтесь) за полцены — это риск получить товар с микросхемами для рынков «третьего мира», несмотря на полное совпадение всех наружных кодов. По крайней мере, такого мнения придерживаются местные продавцы электровеников, вынужденные конкурировать с глобальной Интернет-торговлей.
Какая бывает флэш-память

Данную тему раскрывал пользователь alexzeynikov в своей статье Краткий экскурс в историю флэш-памяти, также можно посмотреть переводной пост 2007г. RAM, ROM, NAND, NOR — что значат эти заглавные буквы.
Бытовые флэшки используют память NAND. Если очень бегло взглянуть на рынок NAND флэш-памяти, то можно выделить следующие основные типы производства микросхем (в хронологическом порядке вывода на рынок): одноуровневые ячейки SLC (хранят в каждой ячейке 1 бит), многоуровневые MLC (наиболее популярные, хранят 2 бита, используя 4 уровня) и набирающие популярность TLC (3 бита, 8 уровней заряда). Это уплотнение информации за счет использования нескольких условных уровней заряда в одном микроэлектронном элементе (ячейке), чтобы втиснуть побольше хранимых битов в тот же физический объем и, главное, с примерно той же себестоимостью изготовления. Чтобы зря не ломать копья на расшифровке MLC и TLC, рекомендую русскоязычную статью Википедии: Флеш-память, SLC- и MLC-приборы (благодарю a5b). На подходе 16-уровневая технология, так что можно пока разминать интерфейсы и кабели.
Понятное дело, за плотность приходится платить надежностью хранения, а значит, и более сложными методами работы с ошибками. Что ж, в теории порой проще давить ошибки мощной «математикой», все зависит от параметров системы.


Кусок эволюции бытовой флэш-памяти. Слева направо: 2Гб, 8Гб, 16Гб, 32Гб

По сфере использования можно различить память для промышленных систем (космос, энергетика, высокотехнологичное вооружение и т.п.), для бизнеса (серверы, профессиональное оборудование) и бытовую (игры, музыка и прочие фотки на смартфоне). Кстати, автомобильные видеорегистраторы и профессиональные фото- и видеокамеры — это почти промышленное использование из-за практически непрерывной записи в довольно широких температурных диапазонах (но, к счастью, в основном без радиации). Так что не гонитесь слепо только за объемом флэшки для своего видеорегистратора, это не магнитола, но потенциально аргумент в суде, со всеми вытекающими. Возьмите профессиональное или промышленное изделие.

Какой ресурс перезаписи у флэш-памяти

Про флэш-память NAND хорошо известно, что она подвержена электрическому износу и обладает конечным ресурсом по циклам записи. Для качественной памяти SLC адекватным считается ресурс 100 тыс. циклов записи, его мы и видим у промышленных продуктов. Однако за все приходится платить, и объем хранимых данных у SLC невелик по сравнению с MLC и TLC при тех же габаритах и стоимости. Вот тут и начинается самое интересное: производители активно выводят на рынок все более ёмкие продукты, но как-то темнят по поводу их реальной электрической износостойкости, ведь это вредит продажам. При этом никто не отрицает, что ресурс у MLC меньше, чем у SLC, но больше, чем у TLC.
Так на сколько же? Кто-то называет следующие цифры.

Оценка ресурса перезаписи у различных типов NAND-памяти

Технология Ресурс перезаписи, циклов
SLC 34нм 100,000
MLC 34нм 10,000
MLC 24нм IMFT 5,000
MLC 20нм 3,000
TLC 20нм 1,000
Т.е. у суперкомпактной TLC (именно ее я ожидаю в microSD объемом 32Гб, но лучше уточнить у Dr. X-Ray) можно ожидать «всего-навсего» порядка 1000 циклов перезаписи. Однако читателю не стоит сразу паниковать, для хранения музыки и фоток на смартфоне обычно хватает и этого. Микроконтроллер любой современной флэшки должен распределить износ равномерно, так что «запиленных» и «упоротых» блоков не будет не должно быть, независимо от типа файловой системы. В теории, чтобы «сточить в ноль» флэшку 8Гб с ресурсом 1000 циклов, надо записать на нее суммарно порядка 8Тб информации. На практике, конечно, она помрет раньше, но если использовать хорошие бренды с качественными чипами и не заражать смартфон злым вирусом-убийцей флэшек, то все будет хорошо и долго.
Вот вам и инженерный парадокс: в теории старая, крупногабаритная флэшка на 2Гб (наверняка SLC) даже остатком(!) своего ресурса по надежности может заткнуть за пояс совершенно новую суперкомпактную «кроху» на 16Гб (наверняка изготовленную по MLC или TLC технологии). Хотя я бы не стал проверять этот довод на «боевом» сервере.
(FreeNAS || NAS4free) && NAND

Внимательный читатель, конечно, спросит: а какое это вообще имеет значение для FreeNAS, если его корневая файловая система монтируется read-only? Не в бровь, а в глаз.
Загрузчик FreeNAS требует 2Гб, из которых примерно 1Гб занимает корневая система, действительно монтируемая read-only. Кроме нее на той же флэшке создается небольшой (порядка 20Мб) раздел /data (read-write) для хранения настроек и полезной системной статистики, собираемой collectd (чтобы при перезагрузке не «забывать», скажем, историю расхода ОЗУ за месяц). Еще 1Гб не используется.
Кстати, родственник FreeNAS NAS4free работает немного по-другому. Он создает единый корневой раздел, где держит и систему, и настройки (предлагая при этом создать на флэшке еще и swap, но ненавязчиво). Системная статистика у NAS4free достаточно рудиментарная и при перезагрузках уже не выживает (да и нечему там особо выживать, но для многих это не критическое условие). Более важно то, что настройки (в виде XML) у NAS4free хранятся на read-only разделе, и при их сохранении требуется перемонтаж всей корневой файловой системы из read-only в read-write и затем обратно в read-only. Довольно неуклюже, но работает.
Промежуточный итог

  • С учетом конечного ресурса флэш-памяти оба проекта FreeNAS и NAS4free — это хороший выбор, из-за файловой системы в read-only.
  • Флэшки 2Гб для FreeNAS точно хватит с запасом, и никаких других разделов на флэшке создавать по дизайну нельзя (у NAS4free можно).
  • У FreeNAS из-за сохранения статистики регулярная запись на флэшку все-таки ведется, хотя и малыми порциями (порядка 1Мб каждый час однократно, или около 8Гб в год, но это очень приближенная оценка).
  • У NAS4free никакой регулярной записи на флэшку не ведется, но за счет кастрированной системной статистики и совмещения ОС с настройками на одном корневом разделе (со всеми вытекающими: старт в read-only — в read-write — сохранение настроек — и снова в read-only, вплоть до необходимости перезагрузки).
  • По внешним признакам непохоже, что наши отказы произошли вследствие износа флэшки записью, хотя это первое, что обычно приходит в голову. Застрявшие пальцы программиста испорченный веб-скрипт, расположенный на read-only разделе, как-то не очень увязывается с «упоротым» результатом записи.
  • Одно можно сказать достаточно определенно: при прочих равных, чем мельче габариты флэшки, тем меньше ее ресурс и надежность.
Миф о бесконечном ресурсе чтения флэш-памяти

Принято считать, что количество циклов чтения у флэшек бесконечно, однако в случае с памятью NAND это не совсем так, хотя бы в силу эффекта read disturb, описанного Jim Cooke в докладе The Inconvenient Truths of NAND Flash Memory (прямая ссылка; неудобный документ постоянно куда-то перекладывают, но поисковик должен выдать по названию доклада; см. слайды 19-20). Правда, данный эффект является электрически обратимым и должен устраняться совершенно прозрачно встроенным микроконтроллером, с помощью коррекции ошибок (см. далее) и переноса блоков. Меня насторожила фраза:
Disturbed bits are effectively managed with ECC

Это означает, что bit flip в NAND является ожидаемым и может исправляться «на лету» корректирующими кодами, но паниковать пока рано, ведь то же самое давно происходит в шпиндельных дисках, устройствах связи и не только.
Интересно, что в соответствии с тем же докладом, память NAND SLC имеет порядка 1 млн. циклов чтения, а MLC — 100 тыс. циклов. Микроконтроллер должен это учитывать и заблаговременно копировать рисковый блок на новое место, убирая эффект возмущения и освобождая старый блок. Контроль ошибок при этом должен следить за сохранностью информации, и если порча блока превышает возможности используемой схемы коррекции — флэшка должна выдавать ошибку чтения.
По ряду причин в этой статье я намеренно избегаю явного описания «полновесных» дисков SSD, но предполагаю, что в них происходит нечто подобное, на других скоростях, с накрученной логикой и нафаршированной периферией. И, раз уж затронули SSD, напомню про пресловутые 25% свободного места (Вещи, которые не нужно делать с твердотельным накопителем (SSD), или Exploring the Relationship Between Spare Area and Performance Consistency in Modern SSDs).
Тем не менее, лично у меня напрашивается только одно объяснение синдрома застрявших пальцев программиста bit flip, описанного выше: а мог ли это быть как раз эффект read disturb, прорвавшийся сквозь контроль четности из-за бага в прошивке микроконтроллера или чрезмерного упрощения логики? Это и есть наиболее провокационный вопрос данной статьи.

Кстати:

Кому интересно знать устройство SSDКоллеги, скиньтесь на предмет исследования и отдайте его Tiberius’у; возможно, он отложит свои дела, расщепит предмет на атомы и напишет еще одну потрясную статью. Только для диска это будет точно билет в один конец:)
Кто и как контролирует ошибки

Внимание: ECC иногда расшифровывается как Elliptic Curve Cryptography, но в данной статье это Error Correction Code.
Целостность данных — забота микроконтроллера, он использует для этого специальные алгоритмы кодирования. Как известно, разрядность (длина) контрольной суммы влияет на максимальное количество выявляемых (и иногда исправляемых) ошибочных битов. Вспомним RS232: один дополнительный бит четности может обнаружить, был ли в блоке один ошибочный бит. Но два ошибочных бита уже пройдут незамеченными, для них нужно больше контрольных битов и более умный алгоритм. И так далее: чем умнее алгоритм и чем больше «запасных» битов закладывается в сообщение, тем лучше способность системы к устранению ошибок без пересылки (копирования) всего сообщения. На помехозащищенном кодировании стоит, как говорится, весь наш информационный мир.
Обратимся к документу TN-29-17: NAND Flash Design and Use Considerations (ссылка) одного из производителей микросхем NAND, найдем рекомендацию разработчикам флэшек (т.е. «сборщикам», которые эти чипы потом используют в качестве комплектующих):
Use More Powerful ECC:
Use a more robust ECC algorithm than is specified by the NAND Flash data sheet and set a threshold for the maximum number of bits allowed to go bad under the ECC correctable limit. When the threshold is met, move the data to another block within the NAND Flash device and begin reading from the new location.

Т.е. как обычно, есть минимальные и рекомендованные требования производителя чипов к сложности (дороговизне) микроконтроллера, выбор между которыми делает разработчик на основе, понятное дело, режима использования памяти. Например, для промышленных задач нужно делать дорогую логику с длинным кодом ECC, а для бытовых задач можно обойтись и кодом попроще, и чипами подешевле.
Находим наугад еще один документ, это вики-страничка Texas Instruments Raw NAND ECC, в которой для MLC рекомендуется использовать 4-, 8- или 16-битные контрольные суммы на каждый 512-байтный блок:
Why is ECC required for NANDs?
Data stored in NANDs can get corrupted (randomly). There is an upper limit on the number of error per byte depending on the NAND process and the technology. SLC NANDs have less ECC requirements than MLC NANDs. The NAND datasheet gives the ECC requirement for the NAND device. For SLC NANDs, 1/4bits per 512 bytes are common currently. For MLC, devices with 4/8/16 bits per 512 bytes ECC requirements are in the market.

Там же и ссылки на популярные алгоритмы: однобитные ошибки «лечатся» кодами Хамминга, с мультибитными ошибками принято бороться с помощью кодов Боуза-Чоудхури-Окенгема (БЧХ), а где-то посередине находятся популярные в индустрии хранения данных коды Рида-Соломона (это частный случай БЧХ). Вот еще один найденный наугад документ на эту тему: What Types of ECC Should Be Used on Flash Memory? (ссылка).
Но не будем слишком долго витать в облаках абстрактной алгебры, нам пора на твердую землю инженерии. Если в блоке оказалось слишком много «упоротых» битов, если производитель памяти сэкономил и использовал более дешевый микроконтроллер, более простой алгоритм коррекции ошибок или менее квалифицированных разработчиков, то шансы «тихой» порчи данных (т.е. без явных отказов чтения) в теории возрастают. Не забываем, что не Боги горшки обжигают пишут код прошивки.
Я использовал бытовую флэшку для размещения системы встраиваемого типа, которая может читать определенные блоки очень интенсивно (особенно при дефиците ОЗУ, как у меня). Однако потеря данных в результате эффекта read disturb — это слишком серьезное обвинение, которое требует более тщательного исследования. А пока я могу вывести еще один критерий оценки надежности флэшки: при прочих равных чем длиннее ECC, тем лучше.
Что делать?

Ответ на вопрос №2 русской интеллигенции, как ни странно, оказалось найти проще.
оффтоп к вопросу №2

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


Спрашивается, почему произошло два идентичных отказа? После первого отказа возникло сильное желание сразу перейти на промышленную флэш-память (надо-то всего 2Гб, из которых используется половина), но найти ее с привычным разъемом USB оказалось непросто: в продаже оказались либо штырьковые (например, Transcend TS2GUFM-V), либо Compact Flash, либо вообще Disk-on-Module с интерфейсом IDE. И поскольку мой квест на промышленную флэш-память ушел в неверном направлении, я и на третий раз купил потребительскую USB-флэшку, но уже не «кроху», а «стандартного» размера с брендом Kingston.
Прикидывая другие варианты, на всякий случай я даже решил подготовиться к переходу на промышленный Compact Flash, по канонам практик Крепсондо загрузив систему в тестовом режиме с кардридера (читатель, будь осторожен, он может глючить сам по себе). И, кстати, если уж говорить про диски SSD, то для простого загрузчика это относительно дорого и тоже, как ни странно, не панацея.


Вверху: кроха на 8Гб; внизу: Kingston на 8Гб

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

Знакомьтесь: промышленная память


Представитель промышленной памяти TS2GUFM-V

В итоге оказалось (ссылка), что штырьковый интерфейс «мама» у того самого промышленного изделия TS2GUFM-V является двухрядным 10-контактным разъемом с шагом 2.54мм (1/10″), пригодным в т.ч. для посадки в разъем «фронтальных» USB-портов на вполне бытовой материнской плате (используется 4 из 10 контактов). Ура, мой квест завершился.


Разъемы «фронтального» USB-кабеля и флэшки изображены с позиционным соответствием

Итак, TS2GUFM-V — это модуль 2Гб промышленной флэш-памяти с вертикальным корпусом (буква V), снабженный даже защелками от выпадания из разъема при ударах и вибрациях. Так что если читателю вдруг понадобится встраивать ОС в самонаводящийся молоток с ЧПУ, то это неплохой вариант. Есть, правда, горизонтальное исполнение TS2GUFM-H, но оно еще более брутальное (бескорпусное и крепится уже тремя болтами), в продаже встречается реже, а сажать его на обычную материнскую плату еще сложнее. Конечно, нет ничего невозможного, все зависит от желания, смекалки и конструкции корпуса.

Характеристики изделий TS512M~4GUFM-V

Параметр Значение
Технология SLC
Объем от 512Мб до 4Гб
Ресурс записи 100,000 циклов
Скорость чтения до 33Мб/с
Скорость записи до 20Мб/с
Разрядность ECC 8
Год вывода на рынок 2006
Цена около €25

Изделие, как можно увидеть, совсем не новое, но для промышленных вариантов и 10 лет порой не возраст, а цена со временем может упасть с военных до почти бытовых значений (напомню, что за те же деньги я истратил впустую две обычных флэшки, как в известной пословице). Для сравнения: у бюджетных бытовых флэшек скорость записи всего около 5Мб/с, и TS2GUFM со своими 20Мб/с — отличное решение по канонам философии Крепсондо. Круче только Compact Flash для профессиональных фотокамер: когда они «стреляют» очередями RAW-формата, мало точно не покажется. TS2GUFM-V, правда, закрывает сразу два разъема USB, используя при этом один, но это при желании поправимо с помощью переходников.
Для получения полетного задания заливки образом загрузчика надо подключить этого жесткого вояку к сисадминскому ноутбуку, разъемы USB которого промышленной суровостью не отличаются. Читатель может использовать любой удобный вариант (попробуйте поискать картинки по строке «переходник USB 10pin», узнаете много нового). Но по странному стечению обстоятельств в моем старом сисадминском сундучке обнаружились клещи-кримпер (видимо, что-то такое ими я уже раньше делал, только не помню, что). Кримпером я и обжал штыревой низковольтный переходник из кабеля-инвалида, пострадавшего от наезда колесного офисного кресла. Кстати

Если заметили у Бизнеса кабель с торчащими из-под изоляции потрохами, немедленно изымайте, пока Бизнес чего-нибудь им сам себе не отжег:)


Зачистим и обожмем кримпером


Защитим термоусадкой


Возьмем штыревой разъем 2.54мм (хотя можно и скрепкой)


Проверим, как сидит


Флэшка на кабеле готова к заливке

Залив образ FreeNAS обычным способом, установим нашу промышленную флэшку в разъем для «фронтальных» USB-портов на материнской плате. Не перепутайте контакты, на изделии нет «защиты от дурака». Контакт №9 должен попасть на место «спиленного» штырька.


«Распиновка» разъема

ВНИМАНИЕ: габариты нашего сурового изделия TS2GUFM-V могут затруднить его посадку в разъем из-за электронных деталей, проводов и других разъемов, торчащих там и сям даже в весьма просторных корпусах «башенного» типа. Например, протиснуть TS2GUFM-V в разъем USB4_5 на материнской плате ASRock P4i65G между бортовыми аудио и LAN без разрушения оных оказалось никак невозможно, поэтому отправляем ее на запасной разъем USB67. Но и там пришлось уворачиваться от банки конденсатора и штекера корпусной пищалки, торчащих почти вплотную к заветным штырькам.
Поэтому читателю, особенно при использовании компактных корпусов (например, известной марки Харлампий-Панкрат MicroServer), надлежит внимательно изучить сам факт наличия 10-штырьковых «посадочных» разъемов, а также окружающую их обстановку. В случае чего принять меры в виде переходников (google на картинки «переходник USB 10pin»). Или выбрать другую флэшку.


Флэшка села в разъем и заработала

Выводы
  1. Электрофизические процессы, происходящие внутри твердотельных накопителей, далеко не так однозначны и просты, как кажется снаружи (спасибо, Капитан Очевидность).
  2. Надежность флэш-памяти зависит как от технологии изготовления памяти NAND (SLC, MLC, TLC и т.д.), так и от сложности микроконтроллера, а при производстве можно экономить как на первом, так и на втором.
  3. Грубо оценить надежность флэшки можно и по длине контрольной суммы (ECC, если производитель ее публикует): при прочих равных чем она длиннее, тем лучше.
  4. Для систем, которые ведут интенсивную запись, требуется флэш-память промышленного типа.
  5. Для серверных задач не следует использовать суперкомпактные флэшки-крохи, изготовленные по технологиям MLC (TLC) с повышенной плотностью.
  6. Использование дешевых флэшек малоизвестных брендов для загрузки ОС противопоказано в принципе.
  7. Для FreeNAS подойдут «полноразмерные» флэшки хороших брендов, а еще лучше — промышленные изделия на микросхемах SLC емкостью от 2Гб.
Продолжение следует

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

Другие части истории про Ещё один NAS своими руками:
часть 1: из того, что было
часть 2: хорошие воспоминания (Флэш-память для загрузки FreeNAS и прочих embedded OS)
часть 3: приключения в старой башне
часть 4: призрак Чернобыля

Ссылки

www.wikipedia.org/wiki/Flash_memory#NAND_flash
www.wikipedia.org/wiki/Wear_leveling
www.wikipedia.org/wiki/Single-level_cell
www.wikipedia.org/wiki/Multi-level_cell
www.wikipedia.org/wiki/Triple-level_cell
ru.wikipedia.org/wiki/%D0%A4%D0%BB%D0%B5%D1%88-%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C#SLC-_.D0.B8_MLC-.D0.BF.D1.80.D0.B8.D0.B1.D0.BE.D1.80.D1.8B
www.wikipedia.org/wiki/Error_detection_and_correction
www.wikipedia.org/wiki/BCH_code
www.pcper.com/reviews/Editorial/Taking-Accurate-Look-SSD-Write-Endurance
collectd.org
www.transcendusa.com/support/dlcenter/EDM/UFM-EDM.pdf
www.micron.com/-/media/Documents/Products/Presentation/flash_mem_summit_jcooke_inconvenient_truths_nand.pdf
pt.slideshare.net/Flashdomain/tn2917-nand-flash-design-and-use-considerations
processors.wiki.ti.com/index.php/Raw_NAND_ECC
www.spansion.com/Support/Application%20Notes/Types_of_ECC_Used_on_Flash_AN.pdf
forums.freenas.org/threads/data-corruption-on-usb-flash-drive.15505/#post-80954
forums.freenas.org/threads/intel-passed-power-loss-protected-ssd-tests.17168
mikelab.kiev.ua/index_en.php?page=PROGRAMS/chkflsh_en
lifehacker.ru/2013/06/26/veshhi-kotorye-ne-nuzhno-delat-s-ssd
www.anandtech.com/show/6489/playing-with-op
flashboot.ru/iflash

habr.com

Настройка жёстких дисков в zfs пул на nas4free, вариант для новичков

NB Это вариант для nas4free 10. В более ранних версиях на базе 9.x настройка ZFS чуть другая

Мы подключили новый диск и включили nas4free. Создадим на нём zfs пул через вебгуй.
Текст предназначен для новичков. Гораздо подробнее, чем привыкли постоянные читатели — не обессудьте 😉

1) Определяем новый диск для nas4free — идём в Disks|Management

Замечание 1. Диски FreeBSD нумерует по порядку портов, а не в том порядке по времени, в котором вы их подключали. И вновь подключённый диск запросто может оказаться ada0, а бывший ada0 стать ada1. Вообще-то вся затея с zfs на GPT метках и придумана чтобы при такой перетасовке дисков с пулами ровным счётом ничего не происходило — имена-то остаются неизменными!

Замечание 2. Любые ваши действия в Disks|Management (но это не обязатено так в других вкладках) изменяют инфу, занесённая в конфиг nas4free. Перед началом её правки НАСТОЯТЕЛЬНО советую в System|Backup/Restore сохранить этот конфиг (Download configuration).  Потом его можно восстановить. А с  самими дисками операции в ЭТОЙ вкладке ничего не делают.

Чтобю добавить диски по-одному есть плюс в правом нижнем углу диалога (отмечен галкой)
Альтернативно есть кнопка Clear Config and Import Disks. По её нажатии кнопки Система сама определяет какие диски подключены и какой у них формат. Но в этом случае всё равно придётся потом нажать гаечный ключ у каждого из дисков и установить второстепенные параметры.

2) Устанавливаем параметры диска

При нажатии серого плюса или гаечного ключа открывается диалог параметров диска

Самое важное поле — первое, Disk. Важно не перепутать с учётом замечания выше. Остальные поля я заполняю как указано (для реальных дисков, конечно, не для виртуальных как на картинке)

Description — необязательное описание диска.
Transfer mode — оставляем Auto, если у вас нет веских причин для иного
Hard disk standby time — через сколько врем5ени после последнего обращения диск остановится. Остановка диска снижает шум и электропотребление на ватт-другой. Но есть мнение, что остановки отрицательно влияют на срок жизни диска. Верно ли мнения — я не уверен, но IMHO — верно. Поэтому свои диски я не торможу — пусть крутятся
Advanced Power Management (APM) — управление энергопотреблением. Я ставлю 128 — минимум, при котором диски не тормозятся. Вы — как пожелаете.
Acoustic Level — уровень шума. Как всегда меньше шума — меньше производительность. Очень многие современные бытовые диски этот параметр игнорируют.
SMART — самоконтроль дисков. Для HDD и SSD стоит поставть галку. Для флешек — галку снять, они всё равно не понимают SMART
Preformatted file system — файловая система, которая будет значиться за диском в конфиге. Если вы подключаете диск с данными — её стоит указать правильно. Если пустой — поставить не форматировано.

3) Сохраняем
Жмём кнопку Apply — возвращаемся к предыдущему диалогу, но он изменился

Как видите, появилась запись о новом диске и кнопка сверху Apply Changes (применить изменения). Закончите настройку для всез дисков — тогда её и нажмите.

4) Форматируем диск для ZFS пула — Идём в Disks|Format

Выбираем диск и zfs — диалог соответвенно меняется. Очень советую поставить галку на GPT Partition. Это нововведение, о котром говорилосб вначале.

ВАЖНО. После того как вы нажмёте кнопку  Format инфа на диске будет стёрта. НЕ ошибитесь. В крайнем случае — выключите NAS и временно отключите все диски с важными данными, а затем продолжайте.

5) Описываем виртуальное устройство.

NB Какие они бывают, в чём достоинства и недостатки

Замечание 3 Для простоты я создам страйп (stripe) из единственного диска. Если вам нужно зеркало (mirror) — понадобится 2 или три (для тройного зеркала) диска. Для raidz (аналог RAID5) — от 3 до 8 дисков (можно больше, но не рекомендуется). Хороший пример — 3 или 5. Для raidz2 (аналог RAID6) — от 4 до 8 дисков. Напр. 4, 6 или 8. Для raidz3 — от 5 до 9 дисков. Отформатируйте каждый из этих дисков аналогично.

Идём в Disks|ZFS
Нажимаем кнопку Virtual Device

У меня одно уже создано, у вас может быть пусто.
Жмём серый плюс внизу-справа
Открывается диалог описания виртуального устройства.

Введите уникальное имя из английских букв (обычно главный пул я называю Pool, но у каждого свой вкус)
Тип — страйп, зеркало или raidz — по вашим потребностям.
Devices — выделите мышкой все устройства, которые войдут в этот vdev (напомню — не менее 2 для зеркала, не менее 3 для raidz…)
ВАЖНО — на картинке видно, что будем использовать GPT разделы — ada2p1, a не сырые диски ada2. Если это не так — вернитесь в пункт Format и поставьте галочку на GPT partition.
4KB Wrapper нажимать НЕ надо — в 10 и так всё работает.

Жмём кнопку Add
и, в новом диалоге — Apply changes

Замечание 4. Для понимания происходящего. Мы информировали nas4free о наших желаниях, и они записаны в конфиг. Диски (кроме форматирвания) пока не трогали. vdev потому и виртуальные устройства, что существовать помимо пула НЕ могут. А пул нам ещё предстоит создать.

6) Создание пула

Мы сейчас в Disks|ZFS|Pools|Virtual device. Жмём кнопку Management, попадаем в очень похожий на предыдущий диалог, озаглавленный Disks|ZFS|Pools|Management.
Жмём серый плюс внизу-справа

Введите уникальное имя из английских букв (обычно главный пул я называю Pool, но у каждого свой вкус)
Выберите мышкой одно (или больше) виртуальных устройств для создания пула. (Обычно у новичков — одно, но можно сделать, к примеру пул из двух и более зеркал — аналог RAID10 или из двух и более  raidz2 — аналог RAID60. vdev можно добавить к пулу и в будущем. Но vdev нельзя удалить из пула)

Остальное заполнять не обязательно.

Уточню про галку Force use. Если без неё не получается — скорее всего есть ВЕСКАЯ ПРИЧИНА и вы можете СИЛЬНО ПОЖАЛЕТЬ о потерянных данных. Семь раз проверьте, прежде чем её ставить. Но если убеждены что надо — ставьте.

Жмём Add
Затем Apply Changes

БИНГО — пул готов, смонтирован в /mnt/TestPool и активен. Как нибудь вскоре мы займёмся его лёгким улучшением — заменим пул на номерах GPT разделах на пул на GPT метках. Но это потребует командной строки. Хорошая новость в том, что это можно сделать и позже. В отличие от пулов на сырых дисках, которые «превратить» нельзя — только убить и создать по новой.

Есть одна сложность для новичка — права доступа. Созданный пул доступен root — административному пользователю. По FTP, SMB, торрентом вы ничего туда не положите. Можно дать все права на доступ к этому пулу всем пользователям (если у вас нет политики разграничения прав доступа)
chmod -R 777 /mnt/TestPool
Команду лучше дать через ssh http://2gusia.livejournal.com/4691.html — придётся настраивать, но это ОЧЕНЬ полезно.
На худой конец — через Advanced|Execute command

PS В принципе, всё прекрасно работает. Но если добавите дисков — имена могут съехать. Поэтому когда немного освоитесь с командной строкой советую выполнить
процедуру из Превращаем zfs пул на номерах разделов в пул на GPT метках

2gusia.livejournal.com

Proxmox + OpenMediaVault или ещё одна идея для домашнего NAS / Habr

Астрологи объявили месяц статей о домашних NAS на Хабре, так что поделюсь и своей историей успеха…

Не так давно я попробовал новый FreeNAS Coral. Понравилось мне в нем если не все, то очень многое: это и новый гипервизор bhyve, и повсеместное использование 9P для проброса файловой системы на гостя, а так же идея с docker и многое другое.

Кроме того я ещё больше влюбился в ZFS со всеми её плюшками, такими как дедупликация и сжатие на лету.

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

В статье так же будет немного рассказано про Docker и автоматический прокси с автоматическим получением сертификатов Letsencrypt.


Для начала расскажу что же мне все таки не понравилось в FreeNAS Corral:


  • Не готов для production. (недавно этот релиз вообще отозвали)
  • Работа с docker удобна только в случае единичных контейнеров, в случае когда контейнеров много управление через веб-морду становится крайне неэффективным.
  • Контейнеры запускаются внутри виртуальных машин с Linux, а порты проксируются через хост, что в принципе не плохо, но подразумевает некий оверхед в сравнении если бы они запускались прямо на хосте.
  • Гипервизор bhyve пока не поддерживает live-snapshots.
  • Нет возможности создавать виртуальные машины не из шаблонов. (по крайней мере в GUI)
  • Система установленая на флешку ужасно тормозила.

В принципе со всем этим можно было бы жить, но как я говорил флешка с системой сдохла и теперь у меня есть новые идеи:


  • Систему нужно устанавливать на жёсткий диск, пусть даже самый простой, но на диск, а не на флешку.
    Идея с установленной системы отдельно от данных хороша, но сколько я флешек не перепробовал (включая USB 3.0) всё равно работает очень плохо и безбожно тормозит. Так что ставить будем на отдельный HDD.


  • ZFS в качестве основанной файловой системы. ZFS позволяет не думать как мне распределять ресурсы хранилища между файловыми системами и виртуальными машинами, она поддерживает моментальные снимки (снапшоты), дедупликацию и сжатие на лету, а также известный RAIDZ.


  • Proxmox в качестве системы управления виртуализацией. Здесь есть все что необходимо: это поддержка как полной так и контейнерный виртуализации, снапшоты, автоматические бекапы и многое другое, а главное ZFS тут предлагается по умолчанию и работает прямо из коробки.
    Proxmox целиком и полностью управляется через современный веб-интерфейс на ExtJS:


Proxmox так-же позволяет подключаться к консоли виртуальной машины через веб-интерфейс:

для этого используется HTML5 клиент noVNC


  • OpenMediaVault в качестве системы управления хранилищем.

При выборе хранилища основным критерием была поддержка ZFS и работа на linux, а не на FreeBSD т.к. его хотелось установить на хостовую систему вместе с Proxmox а не на отдельную виртуальную машину.

Я рассматривал несколько софтин на эту роль, пробовал даже openATTIC — к сожалению поддержка ZFS там оказалась довольно слаба и на данный момент многих опций там просто нет, хотя я уверен что с CEPH дело предстоит несколько иначе.

В поисках я наткнулся на замечательный плагин добавляющмй поддержку zfs для OpenMediaVault — он даёт полный контроль над ZFS. Вместе с самим OpenMediaVault он полностью реализует все те функции, чего я так долго хотел получить от хранилища.
OpenMediaVault, как и Proxmox, целиком и полностью управляется через современный веб-интерфейс на ExtJS:

Proxmox и OpenMediaVault будут составлять ядро нашей системы, в результате чего мы получим многофункциональный комбайн продвинутой системы хранилища и продвинутой системы виртуализации в одной коробке, все данные при этом, как и диски виртуальных машин будут храниться на ZFS.
В случае если понадобится развернуть какой то новый сервис, всегда можно создать отдельную
виртуальную машину или контейнер для этого. Об этом я раскскажу чуть позже.

Обе системы поставляются и работают на Debian, что с одной стороны должно существенно упростить задачу, но с другой стороны обе системы несут в себе огромное количество пакетов и зависимостей, которые периодически могут пересекаться и конфликтовать между ссобой.
И специально для вас я написал небольшую инструкцию о том как сделать это.



Установка Proxmox

Вам понадобится установочный диск, взять его можно на официальном сайте:


Установка проста и интуитивно понятна, так что думаю, не вызовет у вас лишних вопросов.
Скажу только что желательно иметь отдельный физический диск под систему, чтобы в случае чего её всегда можно было бы безболезненно переустановить, не затрагивая при этом диски с данными.

При установке Proxmox можно так же выбрать файловую систему ZFS или даже настроить програмный RAID.

После установки, не забудьте прописать pve-no-subscription для репозитория Proxmox, чтобы иметь возможность устанавливать из него пакеты.

cat /etc/apt/sources.list.d/pve-enterprise.list 
deb http://download.proxmox.com/debian jessie pve-no-subscription

Установка OpenMediaVault

Установим репозитроий OpenMediaVault 3.0 Erasmus:

echo "deb http://packages.openmediavault.org/public erasmus main" > /etc/apt/sources.list.d/openmediavault.list 

Как я говорил ранее, пакет openmediavault имеет некоторые неразрешимые зависимости с компонентами Proxmox, в часности это качается пакета watchdog, который в Proxmox начиная с версии 4.0 является fencing-демоном по умолчанию. В нашем случае он установлен по умолчанию как зависимость от proxmox-ve, но мы его не используем т.к. не используем кластеризацию.

В любом случае эти зависимости нам нужно как-то разрешить, и поэтому мы пересоберем deb-пакет для openmediavault.

Подготовим окружение для сборки:

apt install build-essential

Скачаем исходники OpenMediaVault 3.0 Erasmus, и перейдем в директорию для сборки:

wget https://github.com/openmediavault/openmediavault/archive/3.x.tar.gz -O - | tar xzvf -
cd openmediavault-3.x/deb/openmediavault

Эта команда покажет нам необходимые зависимости, которые мы должны установить в системе перед сборкой пакета:

dpkg-checkbuilddeps

Исходя из вывода предыдущей команды установим необходимые пакеты:

apt install debhelper fakeroot gettext dh-systemd doxygen

Теперь нам нужно удалить watchdog из зависимостей, для этого отредактируем debian/control и удалим оттуда watchdog.
Также необходимо удалить требование версии для doxygen:

vim debian/control
# remove: watchdog
# remove version: doxygen (>= 1.8.9.1)

Проверим зависимости для сборки еще раз:

dpkg-checkbuilddeps

И запустим саму сборку:

dpkg-buildpackage -us -uc 

После сборки вы получите готовый deb-пакет, который мы и установим в систему:

cd ..
dpkg -i openmediavault_*.deb

Теперь установим остальные зависимости, для этого запустим:

aptitude -f install

Теперь можно запустить скрипт для начальной конфигурации, поменять пароль администратора / порт веб-сервера и что-нибудь еще:

omv-firstaid

Установка плагина ZFS:

Плагин openmediavault-zfs устанавливается отдельно от OpenMediaVault и так как он тоже имеет неразрешимые зависимости мы тоже соберем его вручную:

Скачаем исходники, и перейдем в директорию для сборки:

wget https://github.com/OpenMediaVault-Plugin-Developers/openmediavault-zfs/archive/master.tar.gz -O - | tar xzvf - 
cd openmediavault-zfs-master

Подправим зависимости, удалим zfs-dkms так-как в Proxmox начиная с версии 4.0, ZFS уже идет в комплекте с ядром, до кучи за ненадобностью удалим так же linux-headers-* / pve-headers :

vim debian/control
# remove: zfs-dkms
# remove: linux-headers-amd64 | pve-headers | linux-headers-3.16.0-4-all

Проверим зависимости для сборки:

dpkg-checkbuilddeps

Запустим сборку:

dpkg-buildpackage -us -uc 

После сборки установим полученный пакет и зависимости для него:

cd ..
dpkg -i openmediavault-zfs_*.deb
aptitude -f install

Если возникнут трудности со сброкой пакетов, в документации Debian есть неплохая статья на русском языке:


На этом пожалуй все, теперь вы имеете Proxmox и OpenMediaVault установленные на одной системе, самое время перейти в GUI создать и настроить пулы ZFS и подключить их в Proxmox.
Как это сделать я описывать не буду, об этом и так полно информации в интернете.


Что дальше?

Дальше самое интересное, теперь можно приступить к настройке дополнительных сервисов.
Из них я хочу показать как настроить:


  • WordPress — это один из самых простых и распространненых движков для построения сайтов.
  • Nextcloud — ваше личное облако и интерфейс для доступа к файлам.
  • Deluge — на мой взгляд лучшая торрентокачалка.
  • Emby — свободный медиа сервер, позволяет стримить мультимедиа прямо в браузере или через DLNA.
  • nginx-proxy — который будет автоматически генерировать конфиг и все эти сервисы проксировать.
  • nginx-proxy-companion — будет получать и обновлять сертификаты в автоматическом порядке.

Каждый из этих сервисов будет доступен на субдомене и защищен SSL, с валидным сертификатом от Letsencrypt. На помощь нам придет Docker, думаю что это гораздо проще чем вы могли бы себе это представить.

Я полагаю вы уже настроили хранилище ZFS и подключили его в интерфейс Proxmox.

В моем конкретном случае есть два пула:


  • rpool — это тот что создал proxmox при установке
  • tank — это RAIDZ пул из трех дисков с данными

Также я создал четыре основных датастора:


  • tank/pve — для виртуальных машин Proxmox
  • tank/docker — здесь будут храниться данные сервисов запущенных в docker
  • tank/cloud — для данных nextcloud
  • tank/data — основная файлопосойка, внутри есть еще несколько датасторов, таких как Music, Photos, Movies, каждый со своими настройками, например для Music и Photos включена дедупликация, так как у меня большое количество повторяющихся файлов, которые я неизвсестно когда разгребу…

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

lxc.aa_profile: unconfined
lxc.cap.drop:
mp0: /tank/data,mp=/data
mp1: /tank/cloud,mp=/cloud
mp2: /tank/docker,mp=/docker

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

Стоит обратить ваше внимание на то, что если внутри подключаемых в контейнер zfs-датасторов вы имеете другие, то их так же необходимо добавить в конфигурацию контейнера, иначе рискуете получить несколько неприятных багов. Приведу пример:

mp0: /tank/data,mp=/data
mp3: /tank/data/Music,mp=/data/Music
mp4: /tank/data/Pictures,mp=/data/Pictures

Внутри контейнера нам необходимо установить docker и docker-compose, а после этого я покажу как у меня все организованно.


Docker

В директории /docker у меня созданы директории для каждого отдельного сервиса:

# ls /docker/
deluge  emby nextcloud  nginx-proxy wordpress

В каждой директории лежит отдельный docker-compose.yml файл и данные каждого отдельного контейнера.

К примеру так выглядит docker-compose.yml:


для nginx-proxy и nginx-proxy-companion
nginx-proxy:
  restart: on-failure:5
  image: jwilder/nginx-proxy:alpine
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./certs:/etc/nginx/certs:ro
    - ./vhost.d:/etc/nginx/vhost.d
    - ./html:/usr/share/nginx/html
    - /var/run/docker.sock:/tmp/docker.sock:ro
  labels:
    - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"

nginx-proxy-companion:
  restart: on-failure:5
  image: jrcs/letsencrypt-nginx-proxy-companion
  volumes:
    - ./certs:/etc/nginx/certs:rw
    - /var/run/docker.sock:/var/run/docker.sock:ro
  volumes_from:
    - nginx-proxy

Вы можете зайти в директорию с nginx-proxy и выполнив docker-compose up вы проучите готовый запущенный сервис, это очень удобно!


  • Контейнер nginx-proxy в двух словах работает следующим образом, он запускается слушает docker.sock и в случае если обраружит запущенный контейнер с переменной VIRTUAL_HOST, то сгенерирует конфиг для этого виртуального хоста, с проксированием на виртуальный ip контейра.
  • Контейнер nginx-proxy-companion работает схожим образом, если обнаруживает запущенный контейнер с переменной LETSENCRYPT_HOST он автоматически получает для него сертификат.

Для более подробной информации совертую обратиться к официальной страничке проектов:


  • nginx-proxy — который будет автоматически генерировать конфиг и все эти сервисы проксировать.
  • nginx-proxy-companion — будет получать и обновлять сертификаты в автоматическом порядке.

Сразу должен предупредить, nginx-proxy не работает с Compose file version 2, т.к. требует чтобы между контейнерами была одна общая сеть.
Так что необходимо использлвать только Compose file version 1, либо держать все сервисы в одном конфиге.

Теперь сами конфиги:


для WordPress:
mysql:
  restart: on-failure:5
  image: mariadb:10.0
  hostname: mysql
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./mysql:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=seekac7aexoh3eithut6sie1eYaeNgei
    - MYSQL_DATABASE=example_org
    - MYSQL_USER=example_org
    - MYSQL_PASSWORD=imieth7iev4dah6eeraik6Ohz6oiVup7

wordpress:
  restart: on-failure:5
  image: wordpress
  hostname: example.org
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./wordpress:/var/www/html
  links:
    - mysql:mysql
  environment:
    - "VIRTUAL_HOST=example.org,www.example.org"
    - "LETSENCRYPT_HOST=example.org,www.example.org"
    - "[email protected]"

для Nextcloud:
nextcloud:
  restart: on-failure:5
  image: nextcloud
  hostname: cloud
  domainname: example.org
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./nextcloud:/var/www/html
    - /cloud:/cloud
    - /data:/data
  links: 
    - mysql:mysql
    - redis:redis
  environment:
    - "VIRTUAL_HOST=cloud.example.org"
    - "LETSENCRYPT_HOST=cloud.example.org"
    - "[email protected]"

redis:
  restart: on-failure:5
  image: redis
  hostname: redis
  volumes:
    - /etc/localtime:/etc/localtime:ro

mysql:
  restart: on-failure:5
  image: mariadb:10.0
  hostname: mysql
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./mysql:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=ei8aiWaeDaeDoo8aida0woaNaiy8deer
    - MYSQL_DATABASE=nextcloud
    - MYSQL_USER=nextcloud
    - MYSQL_PASSWORD=rahGhied8lei6ogh3keitie1chaiheex

для Deluge:
deluge:
  restart: on-failure:5
  image: linuxserver/deluge
  hostname: torrent
  domainname: example.org
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./config:/config
    - /data:/data
  ports: 
    - 53160:53160
    - 53160:53160/udp
    - 8112:8112
    - 58846:58846
    - 6881:6881
  expose:
    - 8112
  environment:
    - PUID=33
    - PGID=33
    - "VIRTUAL_HOST=torrent.example.org"
    - "VIRTUAL_PORT=8112"
    - "LETSENCRYPT_HOST=torrent.example.org"
    - "[email protected]"

для Emby:
emby:
  restart: on-failure:5
  image: emby/embyserver
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./config:/config
    - /data:/data
  environment:
    - APP_UID=33
    - APP_GID=33
  net: host

Для emby я использлвал net: host — это означает что контейнер будет использовать хостовую сеть вместо виртуальной сети для docker. Этот шаг необходим для работы DLNA-сервера. По той же причине не указанны VIRTUAL_HOST и LETSENCRYPT_HOST переменные.

Но стойте, как же быть? — как добавить такой контейнер к nginx-proxy?
А как быть если я хочу иметь доступ к веб-интерфейсам Proxmox и OpenMediaVault снаружи? — а они запущены вообще не в docker и даже не на этом хосте.

Решение не заставило себя долго искать, для подключений такого типа можно создать еще один отдельный прокси контейнер:


docker-compose.yml
nginx-local:
  restart: on-failure:5
  image: nginx
  expose:
    - 80
  environment:
    - "VIRTUAL_HOST=media.example.org,pve.example.org,nas.example.org"
    - "LETSENCRYPT_HOST=media.example.org,pve.example.org,nas.example.org"
    - "[email protected]"
  volumes:
    - ./local-config:/etc/nginx/conf.d

С таким конфигом:


local-config/default.conf
# If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the
# scheme used to connect to this server
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
  default $http_x_forwarded_proto;
  ''      $scheme;
}

# If we receive X-Forwarded-Port, pass it through; otherwise, pass along the
# server port the client connected to
map $http_x_forwarded_port $proxy_x_forwarded_port {
  default $http_x_forwarded_port;
  ''      $server_port;
}

# Set appropriate X-Forwarded-Ssl header
map $scheme $proxy_x_forwarded_ssl {
  default off;
  https on;
}

access_log off;
# HTTP 1.1 support
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
# Mitigate httpoxy attack (see README for details)
proxy_set_header Proxy "";

server {
        server_name _; # This is just an invalid value which will never trigger on a real hostname.
        listen 80;
        return 503;
}

# media.example.org
server {
        server_name media.example.org;
        listen 80 ;
        location / {
                proxy_pass http://192.168.100.20:8096/;
        }
}

# pve.example.org
server {
        server_name pve.example.org;
        listen 80 ;
        location / {
                proxy_pass https://192.168.100.10:8006/;
        }
}

# nas.example.org
server {
        server_name nas.example.org;
        listen 80 ;
        location / {
                proxy_pass http://192.168.100.10:8080/;
        }
}

На этом все, теперь у вас есть NAS с виртуализацией и несколько отличных сервисов, защищенных SSL по последнему писку моды:


  • https://example.org
  • https://cloud.example.org
  • https://torrent.example.org
  • https://media.example.org
  • https://nas.example.org
  • https://pve.example.org

Спасибо за внимание и удачи в экспериментах 🙂

habr.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *