После получения некоторого опыта в селфхостинге я захотел создать что-то функционально-полезное. Мне в голову пришла идея о создании своего облака, к тому же, я хотел хостить свой блог именно на одноплатнике.
Файлов, нужных для сохранения, у меня не сильно много, и, тем не менее, я не готов доверять их флеш-памяти, когда речь идёт про длительное хранение. Однако, SSD тоже умеют подводить, хоть и кратно реже. У меня завалялся 1 SSD на 128ГБ, который я использовал для сборки LFS (Господи, когда я уже сделаю про это видос). Второй точно такой же SSD стоит всего лишь 1к рублей.
Вместе с ним я заказал:
- 2 USB-SATA адаптера
- корпус-радиатор для одноплатника
- также я попросил коллегу распечатать мне корпус, в котором я могу разместить 2 SSD и сам одноплатник.

Непосредственно сам корпус. Также, я просверлил отверстия для винтов, чтобы SSD держались на месте
Как итог — я хочу пользоваться одноплатником для хостинга сервисов, при этом иметь второй SSD для резервных копий.
Подготовка системы, первые шаги
-
Установка ОС. Для начала я загрузил образ Armbian на SSD с помощью caligula (очень удобная утилита, всем советую).
-
Подключение по UART. Далее я подключаюсь к одноплатнику по UART, чтобы видеть весь процесс загрузки, мне так удобнее.
Совет: Если вы хотите работать с одноплатниками — настоятельно рекомендую купить ST-LINK, либо, ещё предпочтительнее — USB-дебаггер от WeAct (Ozon, Яндекс.Маркет), он намного удобнее.
Чтение по COM-порту можно осуществить командой:
screen /dev/ttyACMx 1500000
(где x — номер COM-порта). Для некоторых одноплатников baudrate будет состовлять 115200.
Как найти порт? Узнать, какой COM-порт занимается при подключении ST-LINK/USB-дебаггера можно, запустив команду dmesg -w и переподключив устройство заново.
Зачем вообще нужно подключение по UART? С помощью подключения по UART можно зафиксировать различные ошибки загрузки, которые не выловить с помощью SSH.
Настроечка
Теперь система готова к работе, и на этом моменте имеет смысл переключаться на SSH, так как при подключении по UART имеют место визуальные баги и задержка ввода.
Проблема с двумя SSD: При попытке в любом из моментов, описанных ранее, добавить второй SSD — система сходит с ума и отказывается загружаться. Я заметил, что это касается портов USB 2.0, поэтому после первоначальной настройки подключил второй SSD через переходник на Type C и попытался ребутнуться ещё раз, чтобы убедиться, что система загружается.
Система действительно загружается. Пробую обновляться через armbian-upgrade и ребутаюсь ещё раз — система исправно загружается. Теперь я спокоен, а потому можно переходить к следующему шагу — автомонтированию второго SSD.
Заметка насчёт обновлений: По умолчанию Armbian очень долго загружал обновления с репозитория. Порыскав интернет, я наткнулся на блогпост, в котором рассказывалось о решении этой проблемы.
Я не смог полностью воспроизвести все шаги в виду отсутствия нужных директорий и файлов, но нашёл похожие. В моём случае я отредактировал файл /etc/apt/sources.list.d/armbian.sources и добавил туда зеркало JetHome, которое нашёл в этом списке.
Преднастройка резервного диска
Сначала я думал, что мне нужно организовывать RAID-массив для резервной копии, однако, после попытки его создания, я быстро понял, что делать его на одноплатнике — достаточно глупая идея, поэтому решил ограничиться обычным копированием важных файлов в реальном времени.
- Установка софта. Я установил свою любимую оболочку
fish, свой любимый текстовый редакторmicro(я до сих пор не готов к изучению vim). - Подготовка диска. С помощью
blkidя посмотрел UUID диска, который нужно примонтировать. Создал директорию, куда будет монтироваться SSD. - Разметка и форматирование. С помощью
cfdiskсоздал раздел на SSD размером с весь диск и отформатировал его командойmkfs.ext4. - Автомонтирование. Следующим шагом я добавил запись в /etc/fstab следующего вида:
UUID=someuuid somedirectory auto nosuid,nodev,nofail,x-gvfs-show 0 0
- Проверка. Делаю
systemctl daemon-reloadи ребутаюсь, чтобы проверить, монтируется ли диск автоматически. Теперь, после ребута, командаlsblkпоказывает заданную точку монтирования — всё работает, как надо.
Для начала этого хватит, так как у меня ещё даже нет блога, куда я мог бы это выложить :D (не было на момент написания этого текста)