openmediavault 6 что нового
All-In-One: Proxmox + OpenMediaVault или ещё одна идея для домашнего NAS
Астрологи объявили месяц статей о домашних NAS на Хабре, так что поделюсь и своей историей успеха.
Не так давно я попробовал новый FreeNAS Coral. Понравилось мне в нем если не все, то очень многое: это и новый гипервизор bhyve, и повсеместное использование 9P для проброса файловой системы на гостя, а так же идея с docker и многое другое.
Кроме того я ещё больше влюбился в ZFS со всеми её плюшками, такими как дедупликация и сжатие на лету.
Но к сожалению не все было так гладко как хотелось бы и, к тому же, флешка с установленной системой приказала долго жить, так что настало время для новых экспериментов! На этот раз я задумал реализовать что-то похожее, но только лучше и целиком на Linux.
В статье так же будет немного рассказано про Docker и автоматический прокси с автоматическим получением сертификатов Letsencrypt.
Для начала расскажу что же мне все таки не понравилось в FreeNAS Corral:
В принципе со всем этим можно было бы жить, но как я говорил флешка с системой сдохла и теперь у меня есть новые идеи:
Систему нужно устанавливать на жёсткий диск, пусть даже самый простой, но на диск, а не на флешку.
Идея с установленной системы отдельно от данных хороша, но сколько я флешек не перепробовал (включая USB 3.0) всё равно работает очень плохо и безбожно тормозит. Так что ставить будем на отдельный HDD.
ZFS в качестве основанной файловой системы. ZFS позволяет не думать как мне распределять ресурсы хранилища между файловыми системами и виртуальными машинами, она поддерживает моментальные снимки (снапшоты), дедупликацию и сжатие на лету, а также известный RAIDZ.
для этого используется HTML5 клиент noVNC
При выборе хранилища основным критерием была поддержка ZFS и работа на linux, а не на FreeBSD т.к. его хотелось установить на хостовую систему вместе с Proxmox а не на отдельную виртуальную машину.
Я рассматривал несколько софтин на эту роль, пробовал даже openATTIC — к сожалению поддержка ZFS там оказалась довольно слаба и на данный момент многих опций там просто нет, хотя я уверен что с CEPH дело предстоит несколько иначе.
В поисках я наткнулся на замечательный плагин добавляющмй поддержку zfs для OpenMediaVault — он даёт полный контроль над ZFS. Вместе с самим OpenMediaVault он полностью реализует все те функции, чего я так долго хотел получить от хранилища.
OpenMediaVault, как и Proxmox, целиком и полностью управляется через современный веб-интерфейс на ExtJS:
Proxmox и OpenMediaVault будут составлять ядро нашей системы, в результате чего мы получим многофункциональный комбайн продвинутой системы хранилища и продвинутой системы виртуализации в одной коробке, все данные при этом, как и диски виртуальных машин будут храниться на ZFS.
В случае если понадобится развернуть какой то новый сервис, всегда можно создать отдельную
виртуальную машину или контейнер для этого. Об этом я раскскажу чуть позже.
Обе системы поставляются и работают на Debian, что с одной стороны должно существенно упростить задачу, но с другой стороны обе системы несут в себе огромное количество пакетов и зависимостей, которые периодически могут пересекаться и конфликтовать между ссобой.
И специально для вас я написал небольшую инструкцию о том как сделать это.
Как установить OpenMediaVault на Proxmox
Установка Proxmox
Вам понадобится установочный диск, взять его можно на официальном сайте:
Установка проста и интуитивно понятна, так что думаю, не вызовет у вас лишних вопросов.
Скажу только что желательно иметь отдельный физический диск под систему, чтобы в случае чего её всегда можно было бы безболезненно переустановить, не затрагивая при этом диски с данными.
При установке Proxmox можно так же выбрать файловую систему ZFS или даже настроить програмный RAID.
После установки, не забудьте прописать pve-no-subscription для репозитория Proxmox, чтобы иметь возможность устанавливать из него пакеты.
Установка OpenMediaVault
Установим репозитроий OpenMediaVault 3.0 Erasmus:
Подготовим окружение для сборки:
Скачаем исходники OpenMediaVault 3.0 Erasmus, и перейдем в директорию для сборки:
Эта команда покажет нам необходимые зависимости, которые мы должны установить в системе перед сборкой пакета:
Исходя из вывода предыдущей команды установим необходимые пакеты:
Проверим зависимости для сборки еще раз:
И запустим саму сборку:
После сборки вы получите готовый deb-пакет, который мы и установим в систему:
Теперь установим остальные зависимости, для этого запустим:
Теперь можно запустить скрипт для начальной конфигурации, поменять пароль администратора / порт веб-сервера и что-нибудь еще:
Установка плагина ZFS:
Плагин openmediavault-zfs устанавливается отдельно от OpenMediaVault и так как он тоже имеет неразрешимые зависимости мы тоже соберем его вручную:
Скачаем исходники, и перейдем в директорию для сборки:
Подправим зависимости, удалим zfs-dkms так-как в Proxmox начиная с версии 4.0, ZFS уже идет в комплекте с ядром, до кучи за ненадобностью удалим так же linux-headers-* / pve-headers :
Проверим зависимости для сборки:
После сборки установим полученный пакет и зависимости для него:
Если возникнут трудности со сброкой пакетов, в документации Debian есть неплохая статья на русском языке:
На этом пожалуй все, теперь вы имеете Proxmox и OpenMediaVault установленные на одной системе, самое время перейти в GUI создать и настроить пулы ZFS и подключить их в Proxmox.
Как это сделать я описывать не буду, об этом и так полно информации в интернете.
Что дальше?
Дальше самое интересное, теперь можно приступить к настройке дополнительных сервисов.
Из них я хочу показать как настроить:
Каждый из этих сервисов будет доступен на субдомене и защищен SSL, с валидным сертификатом от Letsencrypt. На помощь нам придет Docker, думаю что это гораздо проще чем вы могли бы себе это представить.
Я полагаю вы уже настроили хранилище ZFS и подключили его в интерфейс Proxmox.
В моем конкретном случае есть два пула:
Также я создал четыре основных датастора:
Теперь я хочу создать отдельную виртуальную машину в Proxmox, а точнее контейнер и запускать все в нем, что бы больше не издеваться над основной системой, и по возможности изолировать эти сервисы от нее.
В конфигурацию контейнера я добавил следующий строки:
Первые две выдают контейнеру больше прав, так что становится возможным запустить другие конейнеры внутри него, это необходимо для функционирования docker.
Остальные строки подключают необходимые директории к файловой системе гостя.
Стоит обратить ваше внимание на то, что если внутри подключаемых в контейнер zfs-датасторов вы имеете другие, то их так же необходимо добавить в конфигурацию контейнера, иначе рискуете получить несколько неприятных багов. Приведу пример:
Docker
В директории /docker у меня созданы директории для каждого отдельного сервиса:
В каждой директории лежит отдельный docker-compose.yml файл и данные каждого отдельного контейнера.
К примеру так выглядит docker-compose.yml :
Вы можете зайти в директорию с nginx-proxy и выполнив docker-compose up вы проучите готовый запущенный сервис, это очень удобно!
Для более подробной информации совертую обратиться к официальной страничке проектов:
Сразу должен предупредить, nginx-proxy не работает с Compose file version 2, т.к. требует чтобы между контейнерами была одна общая сеть.
Так что необходимо использлвать только Compose file version 1, либо держать все сервисы в одном конфиге.
Openmediavault 6 что нового
Долгая история о том как я собственное файловое хранилище долго хотел и как к нему докатился
На годы как оказалось.
Потому что работу поменял кардинально, выпал из струи.
С появлением неттопов руки зачесали вновь. Был куплен таковой, на атоме, для родителей, в качестве замены десктопа, безнадежно устаревающего своей начинкой миди-тауэра. Однако освободившееся железо повергало в уныние своими размерами и отсутствием SATA вкупе с горячим Бартоном. Хотя со сменой работы идея покупки готового NAS выглядела уже не совсем финансово неразумной. А помешала (или выручила) командировка на много месяцев. И идея опять утонула в других заботах. Зато потом был куплен приличный роутер c USB, на котором и Samba и miniDLNA и Transmission успешно работали с внешним хардом.
Только не радовала 100%-ная загрузка процессора роутера при закачке (ниже приложено окошко жуя для Transmission, чтоб для наглядности было видно загрузку сетевого интерфейса):
Стрим киношки через длна, кстати, процессор нагружал пренебрежительно мало, так что ресурсов хватало и FHD стримить на телек по вайфаю и торенты качать одновременно.
Но вот полная загрузка процессора при работе трансмишшена внушала сомнения в долговечности и надежности такого решения.
И однажды, читая околокомпьютерные новости, узнаю что малина уже до следующей версии обновилась. В интернетах появилась куча статей о том, что из нее можно сделать все что душе угодно, и какой из нее NAS чудесный получается. Но выяснив что сеть и накопитель висят у нее на одной шине, которая еще и 2.0, энтузиазм быстро погас и стало понятно откуда такая цена у малинки.
Все говорило в пользу нюкообразных или специализированных решений. Только вот как-то неинтересно вдруг стало совсем и хотелось минимализма. Тем более что изысканных возможностей да супер надёжности и не требовалось собственно.
И опять идея осталась без воплощения…
Хотя нет – роутер то продолжал трудится на все 100.
А тут и NanoPi NEO выкатили с красивым домиком для жесткого диска:
Красивая коробочка, хочу такую же!
Ёптель! Шёл, шёл…
И Neo2 туда же. Хорошо хоть сетка не так как на малине организована…
В общем опять мимо. Оно то конечно, производительности хватит для файлопомойки, но мой внутренний перфекционист недоволен, ибо еще помнит, что полудуплексная шина передачи данных это уже прошлое в таком деле.
Однако тем не менее факт в том, что разработчики обратили внимание на нишу бюджетных NAS, и значит что-нибудь достойное скоро появится.
И в поле зрения появляется еще одна заманчивая картинка:
Пусть плата голенькая, зато то что надо!
Ищем что тут у нас и кто… Orange Pi Plus2… AllWinner H3… Уже где-то встречали. Ага у Нио такой же.
Стоп, а откуда ж тогда сата тут? На офсайте ничего, зато на других картинках удается рассмотреть GL830 USB2.0 to SATA мостик. Как жалуются довольно хилый, например кажется тут народ пишет что ну нефонтан совсем. На NEO/NEO2 мостик то получше будет.
Какое-то прям надувательство от производителей.
Кто же тогда спасет сердце моего роутера от каторжного труда?
Неужели и некому, кроме товарища Интела с его Нюком или господина QNAP и иже с ними…
А в процессе раздумий брать маленький неттопчик или купить готовый NAS, почитывал форумы, аккумулируя информацию по решениям для файлового хранилища. И попался мне на форуме армбиана интересный обзорчик с такой вот картинкой:
Картинка мне понравилась, точнее циферки на ней, собственно как и сам обзор небезызвестного в тамошних кругах товарища. Правда замеры были на SSD диске, а таковой я не планировал, кусается, да и дома были вполне себе живые винчестеры 2,5, но тем не менее выглядело многообещающе.
Но вернемся к нашим баранам, а именно к плате Odroid HC1:
Подобно кит-набору Нео/Нео2, эта плата так же поставляется с домиком, правда не таким симпатичным и черным, зато более плоским (низким), что даже лучше. Сам миникомпьютер имеет довольно солидные характеристики:
• SoC Exynos5422, ARM Cortex-A15 @ 2GHz, ARM Cortex-A7 @ 1.4GHz
• Разъем microSD (до 128GB)
• SATA интерфейс через JMicron JMS578
• Разъем для подключения батареи резервного питания для RTC
• Последовательный порт для отладки
• Светодиодная индикация активности
• Питание: 5V4A (через разъем 5.5 х 2.1mm).
И отсутствие не нужных в моём случае GPIO и прочих гребенок. И питание через нормальный разъём, а не вечно разболтанный микроюсб. Кроме того, производитель разместил ну очень заманчивую картину энергопотребления:
Опять таки это для ССД. Но система на Интеле будет кушать наверняка больше, да и спецНАС тоже.
А еще изобретатели этого одноплатника утверждают что винт и сеть подключаются через USB3.0. А это же намного лучше чем 2.0 у одноклассников (фулл дуплекс, все дела…):
В общем и в целом меня всё устраивает, надо брать.
Самые приятные цены оказались на американском сайте, даже с учетом доставки и услуг посредников оказалось намного выгоднее покупать за океаном. Решил купить сразу и блок питания ихний, ибо подходящего у меня нет, а у нас приличный стоит чуть ли не дороже (ну а с самодельными блоками питания закончил еще в студенчестве), ну и пластиковую крышку обязательно. Рискну окончательно получить упрёки в рекламе, но размещу скрин платежки для полноты картины:
Комментировать не стану, у каждого своё видение бюджетности.
Будущий NAS приехал, сборка не представляет сложности, только вот пластиковая крышка, состоящая из двух половинок, выглядит довольно дешевенько:
Ну да свои функции выполняет, защелка защелкивается, ничто не отпадает, от пыли предохранит, да и расположится она снизу, и вообще агрегат будет скрыт с глаз долой.
Дорабатывать напильником ничего не пришлось, кроме пары совсем уж мелких мелочей – для начала поставил шайбу под винтик фиксирующий винчестер, так как производители шаёбку зажали, а мне показалось не комильфо без нее покрытие царапать:
На цифру 5 на фото внимание не обращать, фото из нитернетов, а я не додумался еще и шайбочку заснять.
Про вторую доработочку будет позже.
Винчестер был позаимствован от внешнего ЮСБ-кармана, купленного лет 7 назад и у которого развалился корпус, не выдержав тягот дальних командировок.
Установка оси, и её конфигурирование тоже сложностей не вызывает, благо есть ODROID Wiki, на которой на доступном английском все пошагово расписано. Да и на русском языке найти подробный гайд, думаю возможно. Хотя несколько мелких нюансов при настройке все-таки выплыло. Нубских нюансов, чего уж там. Во-первых, на вкладке общих настроек в вэб-морде нужно сразу отключить автовыход, по умолчанию он всего через 5 минут, хотя если следовать инструкции на вики, то там есть это, но надо ж дочитать еще. А во-вторых для доступа рута через SSH нужно его сначала включить в вэб-интерфейсе на соответствующей вкладке. И в-третьих при попытке обновить систему с помощью вэб-морды или разными командами через консоль выпадают ошибки с сообщенями о многократно повторяющихся параметрах в конфигах. От танцев и гугла спасла кнопочка сброса на панели управления настройками обновления. В общем систему обновил, диск сконфигурировал, настроил нужные сервисы, права прописал. И новый обитатель квартиры отправился на место работы, а именно был водружен на “крышу” шкафа в прихожей, поближе к роутеру, к которому и подключается гигабитным заводским патчкордом, который таки дождался этого своего звездного часа.
И тут проявляется интересный момент. Оказывается, вращающийся винчестер создает вибрацию, которая успешно передается на шкаф, и этот шкаф начинает резонировать и эффективно усиливать вибрации сервера в слышимом звуковом диапазоне. Попытка создать виброразвязку, подстелив кусок вспененного полиэтилена оказалась малоэффективной.
Пришлось откопать в загашниках кладовки резиновые ножки “уже-непомню-откуда-взялись” и приклеить их двойным скотчем к пластиковой крышке корпуса:
Стало намного лучше, можно спать спокойно.
Однако спать не хотелось, да и рано еще, поэтому были проведены нехитрые тесты производительности Самбы програмулиной “как у них” и другой, более популярной у нас.
Напрямую соединив патчкордом с ноутом:
Через роутер между НАС-ом и ноутом, который подключен к роутеру вторым давно-самодельным кабелем:
Наблюдается большая разница в результатах чтения между программами.
Ну и график который порадовал – нагрузка на процессор роутера при работе торрента на Одроиде:
Одновременный стрим киношки с Одроида на телек по вайфаю значимо не добавлял нагрузки на проц роутера, поэтому такой график опущен как малоинформативный.
Собственно цель поражена.
Торренты качаются, фильмы стримятся, доступ к файлам по Самбе имеется.
Вот тут нашлось сравнительное тестирование третьей малины и первого Нио в сравнении с Синелоджи:
Если доверять моим результатам, то одноклассники (точнее одноплатники) побеждены, ну а взрослый файловый сервер побеждает вообще всех вместе взятых, а своей стоимостью может кому-нибудь даже и контрольный сделать.
На повестке теперь стоит замена жесткого на больший, по случаю уже прикупил недорогой терабайтник, осталось только домой попасть и найти время для миграции.
Пожалуй теперь можно и подбить бабки: за около 115 бакинских (с учетом нового харда, который еще не задействован) получилась компактная и весьма вероятно энерго-эффективная коробочка, которая обгоняет по скорости ближайших конкурентов.
А еще для меня неприятным открытием стало откровенное лукавство производителей одноплатников в описании характеристик своих устройств.
Ну и хорошо бы вникнуть и разобраться в разнице результатов тестирования двух программ, потом, как-нибудь-может-быть.
Ну и для завершения, фото еще одного конкурента, который попался уже много позже, этот подороже, и может побыстрее, тесты скорости искать уже не захотел, а то вдруг расстроюсь:
Скрипт бэкапа конфигов с коммутаторов и отправка на почту по расписанию
Понадобилось как-то на работе организовать бэкап конфигов с свитчей и прочего сетевого оборудования, так чтобы делался он автоматически и с отправкой архива с конфигами на почту.
Варианты с использованием Kiwi Tools я отмел, ибо неудобно мне, решил поковырять Linux))
Остановился на простом варианте запуска по расписанию скрипта, который будет подключаться к свитчам по ssh или telnet, далее по команде копировать текущий конфиг на tftp-сервер, а оттуда уже отправлять его на почту.
Несмотря на то что есть несколько Linux-серверов, я решил взять для работы NAS WD MyCloud, который у нас используется как файловая помойка. Вот такой:
Замечателен он тем что в этой маленькой коробочке стоит неплохой процессор, Marvell Armada 375 (2x1GHz) или Mindspeed Comcerto C2200 (2x650MHz), в зависимости от ревизии, и объем ОЗУ 512MB Ram или 256 MB Ram, в зависимости от ревизии.
К примеру у нас GEN2, который имеет более быстрый процессор и больше ОЗУ.
И там внутри Linux, пусть и урезанный, но Linux. И есть в сети руководства как накатить туда полноценный Linux, например Debian, а далее что душа пожелает.
Я в свое время почитал эту тему на 4PDA и поставил туда Debian, а потом и OpenMediaVault.
Но вы можете использовать любой другой компьютер/устройство на Linux.
Суть сводится к тому что нужно доставить пару пакетов:
Также необходимо поставить tftp-сервер, к примеру в OpenMediaVault это делается в пару кликов.
Итак, мы их поставили, далее пишем скрипт backup_cisco.sh, с таким содержанием:
1. Подключается к свитчу.
3. Переходит в привилегированный режим
4. Передает команду копирования текущего конфига на tftp сервер.
expect «#»
send «copy running-config tftp://192.168.32.243/CME.cfg\r\r\r»;
5. Отключается от свитча и переходит к следующему.
За обработку ответа от свитча в скрипте отвечает как раз тот самый expect
Все свитчи разные, поэтому команды передачи конфига тоже разные.
6. Пауза в 4 минуты чтобы убедиться что все конфиги слились.
7. Перемещает все файлы с расширением *.cfg в отдельный каталог.
mv /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/tftproot/*.cfg /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
8. Переход в каталог с скопированными конфигами.
9. Архивация всех файлов с расширением *.cfg в архив с текущей датой в имени
10. Отправка файла вложением на почту админу на admin@krg.corpname.kz
11. Удаляет все конфиги, очищает папку:
Далее, в веб-интерфейсе OpenMediaVault настраиваем уведомления для работы с почтой, у нас почта идет через MS Office 365:
Далее добавляем скрипт в встроенный планировщик OpenMediaVault, к примеру у меня он срабатывает в 8.00 по пятницам:
Следующий пост будет про мониторинг оборудования через Zabbix с оповещением в Telegram
SoftwareВ¶
OverviewВ¶
openmediavault is a Debian based distribution. It uses apt to install packages. All standard Debian packages are upgraded using the official Debian mirrors. openmediavault packages are upgraded using the http://packages.openmediavault.org repository.
Update ManagerВ¶
The update manager displays all available packages for upgrade. You can select them if you want to do individual or mass upgrade. The server uses cron-apt to perform a daily apt-get update and fetch upgrade packages automatically. If you have notifications enabled you receive an email every time packages are ready for install.
Using CLIВ¶
apt-get
omv-upgrade
This is wrapper script that basically executes:
The full command is:
omv-release-upgrade
This is a script included only in the last versions of openmediavault before moving to next major release version. For example: 0.5.60 to 1.x or 1.19 to 2.x. The command performs several tasks and modifications depending if the upgrade includes moving to a new base distribution. For example: Debian Squeeze to Wheezy or Wheezy to Jessie,
Installing pluginsВ¶
The plugins can installed either by repository selecting from the available list or uploading the deb package. If the plugin requires some extra software it will fetch all remaining packages from either Debian mirrors or another repo the plugin specifies.
Installing SoftwareВ¶
You have to your availability all Debian software repository to install in your server
Install:
Remove:
Purge (remove package and configuration files):
RepositoriesВ¶
Debian
openmediavault 2.0 (Wheezy):
openmediavault 3.0 (Jessie):
openmediavault 4.0 (Stretch):
The above repositories point directly to US servers. Since Debian Wheezy now is possible to use the redirector address, you only need to change the codename release. The redirector finds the closest mirror automatically. This is can be used as default for Debian Stretch:
External
Debian provides the /etc/apt/sources.d/ folder for adding external repositories. If there is need to add a repository from a testing or unstable Debian just to install recent software make sure the packages are properly pinned [1] to avoid the system becoming unstable for adding core unsupported software my mistake.