Мой новый домашний сервер, часть 2: выбор софта
Вторая часть истории про мой новый домашний сервер — о выборе софта на замену старой системе. Что было, что хотелось получить и что было выбрано в итоге.
Картинка же повествует о том, что любое облако — это чужой компьютер. Это к вопросу о том, что «не нужны никакие домашние сервера, давайте всё хранить в облаках».
Было
Стоял простой Windows Server. В целом, не было ничего такого, для чего нужен был бы конкретно сервер — вполне подошла бы и десктопная Windows. Но у меня была свободная лицензия сперва на 2008, потом на 2012 обломилась — так что грех было не использовать. Потом, правда, поставил 2019 потестировать — и до сих пор тестировал. Хотя вполне мог бы и обратно на 2012 откатиться, ничего не потерял бы. А новые возможности 2019 можно было бы и в виртуалке смотреть. Ну или вообще на работе, благо он есть в продакшне.
Используемые сервисы
Файлопомойка
Стандартные расшареные папки Windows, тут расписывать нечего. Для дома это стандарт, да и не только для дома.
Отказоустойчивость
При моей нелюбви к RAID’ам и любви использовать диски разного размера, для соединения их в одно целое и обеспечения защиты файлов использовался Stablebit Drivepool. Я как его поставил на сервер восемь лет назад — так он молча и работал, без глюков и вопросов.
На десктопе иногда бывают вопросы с незакрытыми файлами от каких-то программ, которые на массиве установлены — приходится разлогиниваться или перезагружаться, чтобы они освободились. Но это два-три раза в год бывает, потому не раздражает.
Дублирование папок по разным дискам за всё время использования понадобилось только один раз — когда из системы молча вывалился восьмитерабайтник. Он потом нашелся (в контактах дело было) и даже информацию всю вытащить удалось, но всё важное, что на нём хранилось, было продублировано на других дисках и не пропало бы даже в случае смерти диска.
Ещё один раз просто посыпался один из дисков, но он это сделал не резко, потому Drivepool, заметив проблемы, начал переносить информацию со сбойного диска на другие (сообщив мне об этом):
StableBit Scanner
S.M. A.R.T. Warning on «RAINBOW» running at «home».One or more disks are suspect:
ST4000DM000–1F2168 — 2 warnings
There are currently 8 unstable sectors on the hard disk. An unstable sector is a sector that can’t be read. The drive will automatically swap the bad sector for a good one whenever new data is written to it, however, the original data may be lost.
There are currently 8 uncorrectable sectors on the drive. An uncorrectable sector is counted when the drive cannot read or write to a sector. This can indicate mechanical or solid state drive trouble.
Я по пути с работы зашел в магазин, купил новый диск, дождался переноса и просто заменил начавший сыпаться.
Качалка торрентов
Vuze (Azureus). Пользовался из-за того, что он штатно поддерживал многопользовательский режим (с плагином AzSMRC). У других клиентов я простой реализации подобного не видел. Автоматику на скачивание новинок я не прикручивал — хотя бы потому, что предпочитаю сам выбирать, что смотреть, а не копаться в накачаном.
Сам клиент вполне пристойный, главное — не включать «современный» интерфейс, иначе будет задалбывать рекламой. Классический вариант интерфейса вполне функционален, тем более, что я в него заглядываю раз в неделю — удалить скачанные торренты. Обычно же просто закидываю торрент-файл в папку на скачивание, потом забираю результат из папки с завершенными закачками.
Медиасервер
Plex. Каталогизатор видео и музыки, транскодинг для слабых каналов и клиентов — я нередко смотрел/слушал что-то с домашнего сервера извне. Дома, впрочем, чаще просто из расшареных папок смотрел и слушал, так мне проще было. Транскодинг, по-моему, только для старого ipad’а включался. Ну и для вебклиентов. Учитывая железо сервера, транскодинг был программный, хотя у меня и имеется подписка.
Виртуальные машины
Когда-то Vmware Workstation (пиратка), потом, как VirtualBox возмужал и перестал рэндомно виснуть, перешел на него. Бесплатно, функционально, не особо глючно. Может и не оптимум по скорости, но меня более-менее устраивало. Даже прикручивал к нему веб-интерфейс, хотя так и не привык его использовать.
Сами виртуалки применялись либо для развлечения с ретро-софтом (это к железу нетребовательно), либо для развёртывания виндовых доменов для каких-то опытов, которые было интересно погонять дома, а не на работе. Это уже было ощутимо тяжелее и тут серверу не хватало памяти, приходилось подключать десктоп. Впрочем, была пара-тройка и постоянно работающих — к примеру, простенькое удалённое рабочее место для приятеля, который по чужим странам ездит, а свой сервер поднимать не хочет (да и негде особо) — чтобы он мог получать доступ к некоторым местным ресурсам. VPN я ему тоже предлагал, но он всё же предпочитал виртуалку. Хотя и не злоупотреблял. Но 4 гига ОЗУ из 16 на сервере оно потребляло регулярно.
Сервер бэкапов
С локальных компьютеров по SMB бэкапы заливались на сервер в расшареную папку (с дублированием через drivepool), а оттуда при помощи duplicati запихивались в облако (onedrive) в шифрованных архивах с поддержкой версий. Для удобства я заливал в облако не всё одним большим куском, а разбивал на задания поменьше. И закачивать быстрее, и восстанавливать тоже попроще.
Onedrive использую из-за того, что у него достаточно низкая цена в сравнении с другими предложениями, устраивающие меня объёмы и нет никаких правил скачивания и закачивания файлов, которые любят накладывать специализированные сервисы для бэкапа.
Образы компьютеров делал через Veeam Backup и в облако не заливал, ибо настройки ОС — это не самое важно в жизни.
Файлы с компьютеров разным софтом синхронизировались — где-то просто скрипты с robocopy, где-то Cobian Backup (давно не обновлялся, но до сих пор нормально работает), где-то Goodsync (хорошая программа, но денег хочет, потому я только одну копию покупал, на свой десктоп). Бесплатная версия у них формально есть, но там такие зверские ограничения, что её проще демкой считать.
Удалённое рабочее место
Просто RDP. Иногда требовалось поработать на чужом компьютере, но не хотелось оставлять там следы. Да и просто своё окружение было приятно иметь. Вышеупомянутого товарища я держал в виртуалке из-за того, что на сервере ему делать было совсем нечего. Хотя технически и можно было.
Хостинг
Тут мелочи всякие, в основном какие-то тестовые сервера, которые было удобнее крутить дома, ничего постоянного. Просто пробрасывал порты в виртуалку с линуксом. Для постоянных веб-сервисов у меня есть снаружи сервера. Хотя дома и работал у меня относительно посещаемый сайт когда-то, но, по-моему, с переходом на gen7 как раз и ушел от этого, вынеся его на провайдерскую площадку.
Когда-то сервер ещё занимался рулением домашними интернетами с переключением каналов, но эту задачу я переложил на MikroTik где-то в районе покупки gen8. Всё же сервер периодически надо перезагружать, и оставаться на это время без интернета совсем не хотелось. Да и сетью проще рулить на специально предназначенном для этого устройстве. Конечно, можно было бы поднять ту же routerOS или pfsense в отдельной виртуалке, но это не спасает от пропажи интернета во время перезагрузки сервера.
Почему захотелось поменять
На самом деле, насущной необходимости менять ОС не было. Вполне можно было бы остаться и с Windows, а все задачи, которые неудобно гонять на хосте, распихать по виртуалкам. Но Windows Server как ОС для виртуалок — это очень большой оверхед, если Hyper-V не использовать. А Hyper-V я использовать не хочу из-за того, что у неё туго с пробросом устройств, что мне периодически приходится делать. Да и вообще, давно было желание поставить какой-нибудь гипервизор и разнести разные задачи по разным VM.
Плюс сейчас стало модно использовать докер. Я долго терпел, но недавно всё же принудили начать разбираться с этим делом. А докер в Windows хоть и можно, но в линуксах он всё же лучше работает.
Что рассматривал
Учитывая то, что основные задачи для домашнего сервера — это файлопомойка плюс виртуалки, хотелось основного удобства именно по ним. То есть универсальные ОС, типа Windows или Linux в качестве хоста использовать уже не хотелось.
Потому основных вариантов было два — либо ставить гипервизор и потом уже на нём поднимать файлопомойку в одной из виртуалок, либо ставить ОС для NAS, а на неё уже прикручивать нужные сервисы в контейнерах и виртуалках.
Гипервизоры
Основные — это ESXi, XenServer (XCP-ng), Proxmox VE, Hyper-V.
ESXi — точнее, vSphere Hypervisor — это довольно капризное к железу решение энтерпрайзного уровня. Для дома я считаю её перебором. На работе, впрочем, использую на одном из серверов. Но там и железо соответствующее. Когда-то пробовал на микросервере, но мне не удалось нормально прокинуть жесткие диски в виртуальную машину.
Proxmox VE мне не особо нравится в плане интерфейса. Приятно, что там внутри debian, но не особо приятно то, как он выглядит. Может и неплохая вещь, но пару раз пытался поставить — как-то не срослось.
XCP-ng (открытый форк Citrix XenServer) — это у меня, пожалуй, любимый из гипервизоров. Удобный, стабильный, не капризный к железу, под капотом обычный линукс (centos), давно пользуюсь, стоит на паре хостов и жрать не просит. Но домой не хотелось, он несколько дубовый и непоследовательный в управлении. Какие-то вещи делаются через виндового клиента, какие-то — через веб-интерфейс, а какие-то только через командную строку. В сценарии «поставил-настроил-работает» он себя показывает хорошо, но вот регулярно в нём копаться быстро устанешь.
Hyper-V Server — решение от Microsoft на базе Windows Server. Местами использую, даже кластер на нём делал несколько лет назад, но мне очень не нравится то, что практически нет возможности работать с реальным железом. Даже usb внутрь не пробросить.
Ну и мне всё же не слишком нравится идея иметь файлохранилище в виртуальной машине, я предпочитаю, чтобы данные жили максимально близко к железу, без лишних слоёв абстракции. А то сделаешь raid на уровне ядра гипервизора, потом сам гипервизор там свой storage устроит, потом для виртуальных машин создаст виртуальные же диски, которые те отформатируют в свою файловую систему… Это неплохо работает для небольших виртуалок, но когда размеры дисков идут на терабайты, дома это становится сложновато обслуживать (бэкапы и т.п.). Если же диски полностью пробрасывать в файлопомойку, то у самого гипервизора дисков не останется. Мне предлагали как-то «запустить гипервизор, все диски отдать файлопомойке, а потом подцепить их оттуда к гипервизору через iSCSI». Кто на ком стоять будет? В общем, не особо мне такое нравится.
ОС для NAS
OpenMediaVault, TrueNAS, xigmanas, xpenology…
Openmediavault (OMV) я использовал под файлопомойку на Microserver gen7 — и мне не особо нравилось, куда он идёт. Да и интерфейс там далёк от идеала. Но вообще это неплохое решение для слабых компьютеров — просто нашлёпка на линуксе, которая может работать с любой файловой системой, а не заточена под конкретные вариант. Можно жить с простой ext4, можно собрать обычный RAID, можно прикрутить ZFS. Так что вообще от OMV я не планирую отказываться, просто дома его видеть не хочу.
TrueNAS/XigmaNAS — хоть и разные продукты, но они похожи по устройству, так что по одному пункту пойдут. Это ZFS. Без разницы, какой там интерфейс, какое именно ядро —, но обе системы построены вокруг ZFS и без неё просто не могут существовать. А ZFS, при всех своих достоинствах, далеко не бесплатна с точки зрения ресурсов, плюс никак не сочетается с требованиями к возможности использовать диски разного размера и формы. По-моему, у неё даже просто добавить диск в массив не так просто, молчу уж про то, чтобы извлечь его оттуда или заменить на другой по размеру. В общем, это решение для энтерпрайза либо тех, кто хочет к нему приобщиться. А мне бы просто пачку разношерстных дисков в одно целое собрать и немножко защиты к ним прикрутить.
Впрочем, я недавно поставил на Microserver gen7 TrueNAS Scale вместо OMV. Ему там тяжко, конечно, особенно во время копирования файлов. Но если ничем не грузить, кроме самбы, вроде как справляется.
XPEnology — это красивая закрытая ОС от NAS’ов Synology, приспособленная для запуска на обычном компьютере. Она достаточно функциональна и не особо сложна в использовании, но ограничена своей архитектурой. Кому-то нравится, но я не вижу смысла собирать свой сервер, чтобы потом делать из него простой NAS. Это как хакинтош — можно и на РС запустить, но если бы мне всерьёз захотелось макось, то я бы купил мак. Но внешне выглядит красиво, этого не отнять.
Что в итоге выбрал
Кроме всего вышеперечисленного есть неведома зверушка по имени Unraid. Про него я слышал много интересного, но как-то не доходили руки попробовать. Это коммерческое решение на базе ядра линукс, помесь дискового массива с гипервизором.
В процессе сборки нового сервера я попутно играл с Unraid. И он мне понравился, так что решил остановиться на нём.
Почему:
- Он живёт на флэшке и не тратит диски в массиве. Это не уникальная фича, но довольно удобная. На флэшке хранятся только настройки и образ системы, который при загрузке разворачивается в память и дальше работает оттуда.
- Дисковый массив позволяет использовать диски любого размера, позволяет их добавлять/удалять, при этом обладает отказоустойчивостью на один-два диска, а при развале массива на отдельные диски информация остаётся на них. Тоже не уникальное решение, на линуксе подобное можно реализовать при помощи чего-то типа mhddfs и snapraid.
- К массиву можно прикручивать ssd для ускорения записи и доступа вообще. Тоже не уникальное, но идёт из коробки.
- Достаточно удобный интерфейс для работы с виртуальными машинами и контейнерами докера, удобный проброс железа в виртуалки.
- Большое коммьюнити, которое готовит те самые контейнеры и наполняет ими местный appstore.
- Контейнерами и плагинами можно очень сильно увеличивать функциональность системы. Установленные в хостовую систему пакеты и настройки слетают после перезагрузки? Плагин, который будет их автоматом каждый раз устанавливать пакеты и дописывать конфиги. Диски вне массива нельзя использовать по назначению? Есть плагин. Нет нативной поддержки ZFS? Тоже есть плагин.
Само собой, есть и недостатки:
- Это коммерческое ПО, что снижает его привлекательность на фоне бесплатных аналогов. Полная версия стоит 129$, базовая — 59$, но позволят работать только с шестью дисками (у меня уже больше, а будет ещё). Есть промежуточная лицензия за 89$ на 12 дисков. Хотя и у полной версии, по-моему, ограничение в районе 30 дисков, так что действительно большую СХД тут собрать не так просто.
- Разработчики несколько дистанцируются от этого — по умолчанию этот appstore недоступен, надо ставить плагин, найдя на него ссылку где-то в интернетах. Только в последней бете добавили кнопку «установить community appstore» прямо в интерфейс. Но это очень заметный кусок функциональности системы и без него Unraid потеряет заметную часть своей привлекательности.
- Всё же это решение на базе линукса, а не полноценный дистрибутив линукс — потому многие возможности хостовой ОС ограничены, в том числе и в плане поддержки железа. Если что-то поддерживается линуксом, то это ещё не значит, что оно поддерживается в Unraid
- Местный интерфейс управления докером нормально работает с отдельными контейнерами, но если надо поставить сразу пачку, то возникают сложности. Впрочем, никто не мешает воткнуть тот же portainer и тяжелые случаи решать через него.
Есть и ещё, но про них подробнее расскажу в части про установку-настройку.
В общем, это не универсальное и не уникальное по функциональности решение, со своими достоинствами и недостатками.
При желании аналог можно собрать самостоятельно. Про массив я уже писал (mhddfs/mergefs/aufs/…+snapraid), для руления докером можно поставить тот же portainer, docker hub сойдёт за appstore для контейнеров, для виртуалок можно proxmox ve поставить на обычный дебиан, сам дебиан можно поставить на флэшку и настроить так, чтобы при работе запись на неё была минимальная. И я попробую как-нибудь подобное сделать чисто из интереса.
Но в Unraid большая часть перечисленного неплохо реализована из коробки, потому я предпочёл остановиться на нём. Пока не оплачивал (триал ешё не кончился, месяц плюс продление на 15 дней), но думаю купить версию на 12 устройств, а потом, при необходимости, сделаю апгрейд до полной. В нём есть свои особенности, к которым надо привыкнуть (относительно того же windows server), но я думаю, что оно того стоит.
Про настройку, тонкости использования и то, чем конкретно я заменил функциональность старого сервера, будет в следующих частях.
Поскольку сборка и настройка ещё продолжаются, эти части будут дописаны недели через две-три, не стоит их ждать завтра-послезавтра.
Можно, конечно, публиковать их в виде путевых заметок вида «сегодня я настраивал krusader, много думал», но это не мой жанр.