Домашний сервер на  Rock64

2019-07-04

Итак, миграция на чудо-плату Rock64 в основном завершена. Пора подвести некоторые итоги – что получилось в конце, и с чем пришлось столкнуться по пути.
Постараюсь описать в виде “ожидания vs реальность”, так получится и компактнее и понятнее. Забегая вперёд, скажу, что получилось не идеально, но вполне совместимо с жизнью.

Оборудование

Ожидания

  • Rock64
  • USB 3.0 Хаб, из которого торчит USB3->SATA мост с загрузочным SSD + ещё один мост с обычным хардом для данных (загрузки, документы, прочая “нужная информация”)
  • USB 2.0 Хаб с 3G модемом и WiFi адаптером

Загрузчик расположен на маленькой microSD, загрузка идет с USB3 устройства.
Условно считаем, что питания хватает на всё ( Hub 2.0 с активным питанием, второй мост USB3->SATA тоже с активным питанием). Железо работает под управлением Armbian и других вариантов быть не может.

Реальность

Многочисленные тестовые прогоны показали крайнюю нестабильность загрузки. То есть система могла просто “не подняться”, причём без объяснения причин. Однако, краткая заметка на форуме OpenMediaVault пролила немного света на проблему.

Есть мнение, что реализация USB3 для ARM довольно нестабильна. Причём by design, и сделать почти ничего нельзя. Использование USB3 хаба проблему лишь усугубляет.

Так что от использования хаба для 3.0 пришлось отказаться.
В принципе, второй мост USB3->SATA есть ни что иное, как док-станция на два устройства с автономным питанием – примерно такая, правда производства AgeStar. Но есть один нюанс – она не пропускает TRIM. То есть, SSD конечно поставить можно, но всех радостей жизни от него не получишь, да и состарится он быстрее. Нет, конечно можно его иногда вынимать и “триммить” в другом компьютере. Но это хреновый вариант.
С другой стороны – на этом же будет партиция с LVM, и даже при поддержке TRIM могут возникнуть проблемы.

Да, опция поддержки trim есть в конфигурации LVM, но трим будет автоматическим и постоянным. И “какие ваши доказательства”, что он действительно работает как надо.

Короче, решил не мудрить и поставить обычный хард вместо твердотельного. Благо закрома позволяли. Да и тентаклей меньше торчать будет из устройства.

С USB 2.0 портами на Rock64 тоже возникли некоторые сложности. Судя по поведению системы, питание портов заведено не “на прямую” от 5В (как у Orange Pi, если я не ошибаюсь), а через какой-то ключ. Бонус решения в том, что порт можно отключить программно. Наверное. Но, USB-вольтметр показал, что на портах вовсе и не 5В. А 4.5 и иногда ниже. Причем ситуация на “нижнем” порту немного лучше, чем на верхнем.
Ситуацию разрешил качественный USB2 хаб с автономным питанием, подключенный к “нижнему” порту Rock64.

Не экономьте на USB-хабах. По крайней мере дома, на собственном оборудовании. Иначе получите больше проблем, чем экономии.

Итак, финально пришлось отказаться от SSD и некоторой свободы в выборе USB2 разъема. В остальном – система получилось довольно стабильной. Имеет место быть довольно сильный нагрев (42 градуса в покое у старого сервера против 52 у нового). И это с самым большим радиатором, который только удалось туда впихнуть. Это плата за большее количество ядер и более высокие частоты.

Софт

Тут ситуация немножко проще. Прошлый сервер был на 32bit ARM, новый на ARM64. Хороший повод настроить всё с нуля, убрать костыли и выкинуть то, что невозможо объяснить словами “зачем это и для чего это”.

Ожидания

  • Клиент OpenVPN, который держит соединение по TCP порту постоянно (я за “серым” IP, платить провайдеру за выделенный адрес а) в падлу б) за эти деньги можно ещё и VPS получить в) Это дыра в безопасности/приватности).
  • Gammu-smsd для поддержки жизни симкарты в 3G модеме и реакции на СМС
  • LXC контейнеры в количестве трех штук – TBNG с проброшенным внутрь WiFi адаптером, OwnCloud или подобное для обмена файлами, ну и торрент (Deluge), понятное дело. В каждый контейнер подмонтированы нужные фолдеры с хоста.
  • Скрипты по мелочи для автоматизации всякого.
  • Smartd мониторит диски, а hdparm выставляет для них время сна.

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

Реальность

В принципе, всё получилось, как задумано.
Настройки OpenVPN были перенесены со старого сервера, заодно подчищены.
Тоже самое можно сказать про gammu-smsd. Его правда, пришлось собирать из исходников (но, на удивление, всё прошло хорошо). Заодно модем был переведен в режим “только модем”, дабы всё стартовало быстрее. На Rock64 он конечно сам переключался, но его регулярно хватал кондратий, и устройство сбрасывалось обратно в режим CDROM. Простая AT-команда решила проблему раз и навсегда.

Кстати, gammu выполняет довольно важную задачу, достойную отдельной заметки с заголовком "Как немного трахнуть ОпСоса и организовать себе резервный интернет канал за примерно 80 рублей в год".

Smartd работает с опцией -d sat, hdparm видит диски сразу без приседаний. Визуальный осмотр и ощупывание показали, что вроде диски и засыпают, как задумано.
Что касается LXC-контейнеров, с обновлением ядра WiFi адаптер на Realtek 8188 наотрез отказался “пробрасываться” в другой namespace, но это проблемы обновленного драйвера. Так что пришлось перейти на Ralink. Но это и к лучшему – факингтош смог с ним соединиться не уходя в password loop.

Гей-фашисты из Apple что-то там в Mac OS Mojave выкрутили с вайфай, что в этом вашем интернете народ начал жаловаться, что мол перестало соединяться с тем, чем соединялось раньше. Разумной инструкции по ремонту никто не придумал, говноблоггеры предлагали ребутнуть мак (спасибо блядь, без вас бы и не догадался, что так можно было) или создать новый профиль для сетевого соединения (это вообще за гранью бобра и осла). Очень технологично и по делу, да. Интернет такой интернет. Хотя у пидохипстеров из Apple всегда так – либо работает как надо, либо не работает вообще. Хоть какая-то определенность в мире есть.

Про ownCloud история чуть более отдельная – стоял выбор между ownCloud, SeaFile и nextCloud. SeaFile казался весьма разумным претендентом, однако это китайское поделие страдает жутковатым отставанием документации от реальной жизни. Бинарных файлов под arm64 официально нет (кое-что есть на форуме, но кто это собирал и чем, и когда забьёт – остается загадкой). Да и по скорости выигрыша я не особо наблюдал. nextCloud на мой взгляд как-то разжирела, ownCloud же в свою очередь в минимальной конфигурации отлично документирован (каждый чих при установке), да и функциональность – то, что надо прям из коробки. Да, пришлось ставить эти ваши Redis’ы и крутить параметры ядра, но финально оно работает, причём вполне предсказуемо.

Кстати, черновик этой записи пишется прям в браузере в OC-приложении Notes. Довольно удобно.

На предыдущем сервере был ещё один контейнер со всяким самописным бредом на поХапэ, но я им не пользовался примерно год. А значит он и не нужен. Будет время – подниму.

Вместо эпилога

Итак, в принципе все получилось. Rock64 конечно сыровата и в какой-то момент апдейт наверняка выведет её из строя. Однако, пока плюсов немножно больше – железка быстрее и озывчивее, да и порядка стало больше.
Очень рассчитываю по крайней мере на три года беспроблемной эксплуатации, ну а тут уж как фишка ляжет. Теперь перевести бы на ARM файлопомойку, но, боюсь “правильные” платы с кучей SATA или хотя бы парой PCI Express для контроллеров выйдут ой как не скоро, и стоить будут ой как дорого. Да и plex’у для транскодирования налету нужно что-то с MMX/SSE.

Какие уроки преподал весь этот трах ? Да всё как обычно: не экономить на комплектующих, изучать чужой опыт и не торопиться с выводами. А ещё всегда держать недалеко вольтметр, ибо 90% проблем можно диагностировать с его помощью :).


В массы

В трубу