unraid

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


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


Если тема вам интересна — прошу под кат.


Осторожно — под катом много ссылок на англоязычные ресурсы.


Что за зверь?


unRAID — это операционная система (на основе Slackware), созданная фирмой Lime technology, позволяющая упростить жизнь людям, которые хотят создать свой мини-сервер/NAS/VM-хост и тд.


Особенности unRAID


Что же мы получаем? Примерно следующее:



NAS (Network-Attached Storage)


Тут все просто (с некоторыми оговорками) — поддерживаются диски любого размера (для parity-диска следует выбирать наиболее ёмкий диск).
Основная идея — JBOD который защищен Parity-диском. Сам процесс пемещения данных можно проилюстрировать как-то так (картинка со страницы про nas):
unraid nas


Выглядит несложно, верно? Тогда давайте добавим немного cache. Зачем? Всё дело в скорости и удобстве использования.
Вот наглядный пример скорости передачи данных по сети на NAS (ссылки на youtube) без кэша и с ним.
Данные будут переносится с cache каждый день в установленное время (по умолчанию в 03:00) поэтому cache желательно делать из двух дисков (они будут в RAID 1) для большей надежности:
unraid cache


Объем cache-дисков следуют выбирать по формуле:


Объем данных которые вы прогоняете через NAS за день + место для дисков виртуальных машин + место для docker-образов + место для временных файлов (торренты и тд)

Я не рассказывал о том что делать если вылетает parity диск / диск с данными / один из дисков в cache pool, сколько занимает перестройка дискового массива — это всё обширные темы для отдельной статьи, но хотел бы заметить, что основное отличие unRAID от большинства RAID-систем в том, что unRAID сохраняет данные на отдельные диски и позволяет создавать пользователям свои иерархии папок, использовать любые доступные диски и тд.
Больше об этом можно почитать в секции unRAID Shares по этой ссылке.


Сервер приложений (Application Server)


unRAID поддерживает Docker-контейнеры что открывает двери в дивный мир контейнеризации — писать об этом много не буду — на хабре есть много публикаций, которые отлично раскрывают эту тему. Кроме того есть обширная библиотека плагинов, позволяющие настроить систему как угодно вам. Подключить любой ups, управлять подключёнными дисками вне unRAID, использовать ZFS или поднять OpenVPN сервер.


Виртуализация (Virtualization Host)


Всё как во взрослых системах — KVM с использованием QEMU, libvirt, VFIO*, VirtIO и VirtFS
enter image description here


  • PCI/USB passthrough c использованием Intel VT-d или AMD-Vi (должна быть поддержка
    с стороны процессора
  • i440fx / Q35
  • Поддержка пробрасывания встроенных/дискретных видеокарт

Всё это в конечном счёте даёт практически полную свободу в утилизации ресурсов системы:


  • Хотите высокопроизводительную игрову машину? Без проблем.
  • У вас дома два геймера, а дважды тратиться на мощное железо не хочется? Никаких проблем.
  • У вас мощная система, но вы не используете ее на полную катушку? Это легко исправить.
  • Построили HTPC и захотелось использовать его не только как медиасервер? Вы великолепны.

Продолжать можно практически бесконечно — ограничены вы только бюджетом, желанием и временем на все это.


С чего начать


Окей, допустим я вас заинтересовал. Что делать дальше?


  1. Скачиваем образ или утилиту для создания загрузочной флешки по ссылке с оффициального сайта.
  2. Идём на страницу с мануалом и внимательно читаем/смотрим.
  3. Собираем машину (из того что было) или покупаем с нуля (в следующей части рассмотрим какие у нас варианты)
  4. Запускаем с флешкой
  5. Получаем триал
  6. Осматриваемся в новой системе

О чем стоит помнить:


  • Диски и ssd будут отформатированны — данные на них будут утеряны
  • SSD стоит выбирать согласно тому с камими объемами данных вы будете работать
  • Не стоит экономить на флэшке — вот тут небольшой гайд о выборе.
  • Если будете использовать виртуальные машины — должна быть поддержка Intel VT-d или AMD-Vi с стороны процессора
  • Образы VM размещайте только на SSD
  • Недостаток SATA портов на материнской плате можно восполнить PCI SATA контроллерами. По ссылке вы найдете список протестированных (у устройств на базе *Marvell 88SE92** вроде как есть нерешённые проблемы при использовании виртуальных машин. Наиболее оптимальное решение — использование промышленных (на основе SAS2008*) контроллеров, перешитых в IT-режим).

Комлектующие


Для своего мини-сервера я выбрал следущие железки:


  • Intel Core i7-8700K
  • ASUS ROG Strix Z370-G Gaming (Wi-Fi AC)
  • Corsair Vengeance LPX 2x16GB DDR4 PC4-24000
  • Fractal Fractal Design Node 804
  • Corsair RM850i 850W
  • 2 * Noctua NF-F12 PWM
  • Corsair Hydro Series H100i v2
  • 2 * SSD Samsung 860 Evo 1TB MZ-76E1T0B (зеркалируемый cache)
  • 4 * WD Red 8TB [WD80EFZX]

По прошествии какого-то времени могу сказать что Wi-Fi AC не нужен, а WD Red 8TB заменил бы на 6TB (по личным ощущениям восьмёрки знатно щёлкаю при парковке).
Корпус позволяет впихнуть до 12 3.5" HDD + 2 2.5" SSD, длинную видеокарту, поддерживает mATX/mITX платы, установку водяного охлаждения с двумя 120мм кулерами и хорошо обдувается.


Заключение


Не хотелось бы раздувать статью — ссылок в ней уже слишком много (38). В следующей части мы посмотрим как выглядит unRAID, а так же я расскажу о некоторых трюках связанных с использованием Intel Core i7-8700K (нетривиальное пробрасывание интегрированной видеокарты и звука). Должно быть интересно.


Спасибо за уделенное время. Есть небольшая просьба — обо всех опечатках/ошибках писать в личные сообщения, спасибо.

Комментарии (2)


  1. maxzhurkin
    26.07.2018 21:02

    Что за «JBOD, который защищен Parity-диском»?
    Как именно «parity-диск» защищает данные?
    На нём XOR от содержимого остальных дисков?
    Если так, то все преимущества от неиспользования RAID 5/6 съест необходимость использования отдельных дисков для кеширования


  1. blind_oracle
    26.07.2018 21:09

    Да, ничего не понятно.
    unRAID это какое-то самопальное изобретение?
    Или внутри просто комбинация из dm/mdraid/bcache/zfs/...?
    Тема не раскрыта.