В качестве хобби-проекта я захотел собрать простейший домашний NAS на 7 дисков на базе одноплатного компьютера.
В данной статье я расскажу о «железной» части проекта:
список компонентов для сборки,
корпус,
нюансы при сборке,
установка операционной системы.

Во второй части я планирую поделиться опытом использования подобного NAS-сервера и программным обеспечением для работы с ним.
Введение
За последние 10 лет у меня накопилось большое количество старых HDD и SSD. Выкидывать их жалко, а использовать их для какой-то серьёзной задачи - нерационально и небезопасно. Кроме того, мне давно хотелось поработать с одноплатником на базе ARM-процессора. Так появилась идея собрать на базе этих компонентов NAS-сервер.
NAS я планирую использовать для архивного хранения, особых требований к скорости сервера у меня нет. Поэтому конфигурация была выбрана самая простая. Мне интересен сам процесс конструирования, и результат не так важен. Важно учесть этот аспект, так как у многих может возникнуть вопрос о рациональности подобной сборки.
Выбор компонентов и конфигурация
Подключение дисков
Для подключения дисков я выбрал самый простой и дешёвый вариант - USB-хаб на 7 портов и 7 USB–SATA адаптеров.


USB-хаб я выбирал простой, чтобы он подходил мне по форме и было удобно установить его в корпус. Мне хотелось, чтобы к нему выходили кнопки включения на внешнюю панель, что позволило бы выключать отдельные диски и производить горячую замену. Я выбрал хаб с поддержкой USB 3.0, но оказалось, что у него только один порт 3.0. Для повышения его надёжности я наделал в нём дырок для охлаждения.

Одноплатный компьютер
Для одноплатника у меня были крайне простые требования: наличие Wi-Fi, компактность и наличие USB-C. Я остановился на формате плат Raspberry Pi Zero и по ним написал даже сравнительную статью для упрощения выбора. Оптимальным вариантом для меня был Orange Pi Zero, но я решил чуть доплатить и выбрал Banana Pi M4 Zero с 2 ГБ RAM и встроенной eMMC на 8 ГБ. Я решил, что eMMC может быть необходим для стабильной работы, у Orange Pi eMMC отсутствует.

При выборе одноплатника я смотрел только на характеристики. Сейчас я бы добавил ещё один важный аспект: для одноплатника должен быть доступен открытый стабильный дистрибутив Linux. Если для выбранной модели есть только китайские образы от производителя, стоит отказаться от такой модели. Мне в этот раз повезло — для Banana Pi M4 Zero доступен дистрибутив Armbian.
Одноплатник пришёл без гребёнки, и контакты у него были тёмного цвета, будто покрытые каким-то лаком. Припаять разъём было достаточно сложно. В качестве Wi-Fi антенны я просто припаял маленький штырёк.

Для первого запуска также потребуется USB–TTL адаптер, чтобы без монитора подключиться к Wi-Fi.
Питание
В моём сервере необходимо обеспечить питание 12 В для жёстких дисков и 5 В для питания платы и USB-устройств.
Для 12 В я выбрал источник питания от светодиодных ламп на 16 А - он хорошо подошёл по размеру. Для моей сборки с запасом хватило бы 10 А, но я взял максимум, который подходил по габаритам. Это позволит снизить нагрев и повысит надёжность.
Блок питания от ламп - не самый лучший выбор: они не самые надёжные, а в выходном напряжении у них имеются пульсации, которые могут навредить жёстким дискам. Чтобы снизить пульсации, я добавил большой конденсатор на 22 мФ и токоограничивающий резистор, который выполняет роль фильтра. Для подвода питания к адаптерам USB–SATA подошёл заводской переходник на 8 штекеров от систем видеонаблюдения.

Напряжение 5 В я формирую из 12 В. Для этого я установил DC–DC преобразователь. У меня было три варианта: с USB-портом на 3 А, на 8 А и на 10 А с продвинутой платой управления. Сначала я остановился на варианте на 3 А - у него достаточно большая индуктивность, и он практически не грелся. Но он уходит в защиту при токе 3,5 А, и при одновременном старте нескольких дисков его может не хватить. Преобразователь на 10 А хорош при больших токах, но на холостом ходу у него высокое собственное потребление - почти полватта. В итоге выбор пал на средний вариант на 8 А: до 3 А у него хороший КПД и небольшие потери, и он выдержит кратковременный пусковой импульс. На линию 5 В я также добавил конденсатор на 1 мФ.

Корпус и монтаж
Корпус я спроектировал и изготовил на 3D-принтере. В нём разместил вилку для провода питания на 220 В, кнопку питания, светодиод индикации, вентилятор и отверстия для крепления резиновых ножек. USB-хаб выведен вбок так, что он наполовину выходит за корпус - это даёт возможность нажимать на кнопки на нём.

Двухцветный светодиод подключён к пинам одноплатника через токоограничивающие резисторы. Он будет информировать о статусе работы и ошибках сервера зелёным и красным светом.
Вентилятор на 12 В я подключил напрямую к 5 В, чтобы он работал бесшумно. Изначально хотелось реализовать управление вентилятором, но на это не хватило ни места, ни мотивации. Также я планировал установить два вентилятора снизу - для этого корпус был поднят на резиновых ножках, - но после примерки понял, что проложить провода в этом случае не получится.

Корпус получился максимально компактным: после сборки внутри не осталось свободного места. Сборка была непростой - часть проводки приходилось протягивать пинцетом.
Крепёж компонентов в корпусе выполнен за счёт плотной посадки без винтов, только ножки крепятся к корпусу на саморезы. Такой вариант оказался достаточно простым и удачным: всё держится плотно, ничего не дребезжит и не болтается.

Включение и настройка
Всё запустилось с первого раза без серьёзных проблем. Проблема возникла только с маленьким HDD 2,5 дюйма, он при старте сильно просаживал напряжение и бесконечно перезагружался. Я временно отключил его кнопкой на хабе.
Дистрибутив Linux Armbian скачивается с официального сайта и устанавливается на SD-карту с помощью утилиты Balena Etcher. Позже его можно будет перенести на eMMC.
При первом запуске одноплатника необходимо подключить TTL-адаптер к ПК и соединиться с ним через терминал - например, в программе PuTTY. Там нужно будет задать пароль для пользователя root и настроить подключение к Wi-Fi сети. После этого TTL-адаптер можно отключать и подключаться обычным способом - через SSH.
USB-диски сразу не определились. Пришлось настроить USB-оверлей, чтобы он работал в режиме host. Возможно, проблема связана с тем, что я подключил всё к USB-OTG, как рекомендовала документация к одноплатнику.
Я хотел, чтобы одноплатник при старте запускал Wi-Fi точку доступа, через которую можно было бы подключиться к домашней Wi-Fi сети. Но настроить точку доступа у меня не получилось, и я от этой идеи отказался. Возможно, у платы проблемы с драйвером, а может быть, я просто что-то сделал не так.

Заключение
В итоге сервер запускается, диски корректно определяются, монтируются и уходят в спящий режим.
На данный момент я работаю над утилитой для конфигурации сервера. Планирую сделать веб-интерфейс на C# Blazor, в котором можно будет создавать сетевые папки на дисках, добавлять пользователей и настраивать доступ. Также утилита должна выполнять периодическое резервное копирование.
Подробнее об утилите и об опыте использования NAS будет рассказано во второй части.
