В качестве хобби-проекта я захотел собрать простейший домашний 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 будет рассказано во второй части.