Один из серверов домашней лаборатории - домашний NAS / сервер виртуализации который должен работать всегда. На нём работают необходимая тройка контейнеров и парочка виртуальных машин. В качестве операционной системы в данный момент используется дистрибутив Unraid.
Unraid — это платный дистрибутив домашнего файлового сервера с обязательной для всех поддержкой контейнеров и виртуализации. Основное отличие этого дистрибутива в проприетарной технологии защиты от выхода из строя дисков (вместо RAID). В данной ОС не предусмотрено использование RAID поэтому видимо и было выбрано название unRAID.
Список возможностей на словах выглядит внушающее:
Основное хранилище в данной системе представлено группой, назовем её unRAID группа, потому что именно она реализует фирменный функционал. Наличие данного уровня хранения хоть и можно обойти, но именно по нему лицензируется продукт и именно на нем создаются файловые шары. Основные характеристики:
ОС поддерживает следующие дополнительные к unRAID группе способы хранения:
Лицензируется только количество дисков в unRAID группе. На 2022 год существует 3 вида лицензий:
Лицензия приобретается одноразово, подписки нет, техподдержка сообществом. Лицензия привязывается к GUID флеш-диска с которого система загружается, поддерживается смена GUID лицензии при гибели флешки. Есть пробный период, и возможность докупить лицензию до более высокого уровня за разницу в цене.
Функционал многоуровневого хранения поддерживает использование выделенных пулов для ускорения операций записи (подразумевается, что это будут быстрые диски, хотя никто вас не ограничивает в выборе) и фиксации определенных папок в данном пуле.
В системе данный функционал называется “Cache Pool” и реализован он достаточно просто:
mover
- модифицированная версия rsync которая прозрачно переносит файлы с SSD на HDD;Основные характеристики пула в таблице, в Enterprise-терминах:
Параметр | Значение |
---|---|
Уровни хранения | 2 |
Тип кэш-дисков | Любой |
Емкость кэш-дисков добавляется к хранилищу | Да |
Кол-во кэш-дисков на шару | до 30 |
Уровень RAID кэш-дисков | RAID0 / RAID1 |
Как данные попадают в кэш | При записи в шару |
Какие данные покидают кэш | По расписанию |
Система поддерживает до 35 именных пулов, каждый из которых может состоять из 30 дисков. В пуле работает файловая система BTRFS и штатно поддерживается либо Stripe либо Mirror.
Для каждой шары (так тут называются системные папки, даже если к ним нет общего доступа) поддерживается установка трёх режимов работы с пулом:
Существуют плагины-надстройки, которые позволяют тонко настраивать параметры команды mover
но они вносят нестабильность в процесс работы и достаточно топорно выполнены, хотя позволяют перемещать, например только файлы старше определенного возраста или размера.
Встроенная в unraid технология защиты от выхода из строя дисков обладает не только преимуществом объединения дисков любой ёмкости но и очень существенным недостатком - это низкая производительность и высокий расход ресурсов сервера.
Среди множества технологий и подходов по-настоящему кроссплатформенной схемой объединения дисков в NAS системах SOHO уровня является ZFS. Пулы собранные в TrueNAS, XigmaNAS, OMV, PVE или просто в Linux везде работают, импортируются и позволяют менять дистрибутив без необходимости миграции данных.
Из коробки Unraid не поддерживает ZFS, но компания ведет разработку в данном направлении. Уровень с которым ZFS будет встроен в Unraid предмет отдельных дискуссий.
На текущий момент пользователь может использовать ZFS пулы в системе, но с помощью стороннего плагина ZFS for unRAID 6. В нем содержатся все необходимые компоненты для поддержки файловой системы на уровне ядра ОС. Все администрирование производится из командной строки, а интеграция со стороны NAS полностью отсутствует.
При работе с ZFS следует иметь ввиду ряд следующих ограничений:
Встроенные шары не могут быть созданы на ZFS, а если изменить файл smb.conf он будет возвращен в исходное состояние при перезапуске массива. Для сохранения изменений необходимо внести раздел с требуемой общей папкой в SMB Extras.
Settings > SMB > SMB Extras
Синтаксис обычный для smb.conf файла, пример ниже.
[share] path = /mnt/tank/share comment = browseable = yes # Public public = yes writeable = no vfs objects = catia fruit streams_xattr case sensitive = auto preserve case = yes short preserve case = yes
[private] path = /mnt/tank/private comment = browseable = yes # Private writeable = no read list = write list = username,username2 valid users = username,username2 case sensitive = auto preserve case = yes short preserve case = yes vfs objects = catia fruit streams_xattr fruit:encoding = native
Этот пост я сразу решил оформить в качестве записи на wiki, потому что в первую очередь тематика данного ресурса база знаний и не личный блог. В будущем постараюсь не нарушать баланс.