В последнее время много компаний, включая TerraMaster или Asus, стали выпускать компактные NAS с основным хранилищем на SSD носителях и все чаще с мультигигабитным подключением к сети Ethernet. Достоинства таких устройств очевидны, высокая скорость работы твердотельных дисков в связке с высокой скоростью обмена по сети, прекрасно раскрывают возможности новой техники, а самое главное оправдывают ожидания их владельцев от новых технологий.
Насколько сложно самостоятельно собрать подобный NAS, используя доступные комплектующие и готовые компьютерные платформы? Как оказалось всё не так сложно, если найти подходящую платформу и немного её прокачать в плане подключения дополнительных дисков для организации отдельного хранилища. Вот о такой доработке и пойдет речь.
Одна из доступных компьютерных платформ, позиционируются как программный роутер для установки популярных программ типа OPNsense, pfSense и других подобных им. Платформа использует несколько сетевых контроллеров. Один контроллер 82599ES управляет двумя портами SFP+ со скоростью 10Гб/с и два контроллера I226-V реализуют проводное подключение RJ45 со скоростью 2.5Гб/с:

Компьютер по виду больше похож на какое то промышленное устройство, нежели на привычный глазу гладкий NUC:

Обычный BIOS, ничего такого, что указывало бы на какое то нестандартное применение компьютера:

При разборке корпуса стало очевидно, что внутри достаточно места для размещения не только 2.5” SATA, но и какой-то дополнительной платы расширения:

На материнской плате может быть установлен один из процессоров серии Twin Lake-N, в данном случае это был процессор N150, находящийся прямо по центру:

Как видно, снизу и сверху платы есть два разъема M.2, один из которых предназначен для диска NVME, а второй для адаптера WiFi. На самом деле, разъем для WiFi также можно использовать для подключения диска NVME. В этом случае, диск подключается к плате с помощью специального адаптера, который шёл в комплекте с этим компьютером:

У процессоров серии N достаточно большое число PCIe лэйнов (пара передатчика и приёмника) - девять штук. При этом лэйны могут быть задействованы не только для PCIe, но и для USB SS, а также SATA. В данном случае разработчик материнской платы выбрал такую схему, что на долю M.2 разъемов осталось только по одному лэйну. В общем то это понятно, учитывая что львиную долю заняли сетевые контроллеры.
Таким образом, для подключения дисков были доступны только три разъема:
M.2 M-key x1
M.2 E-key x1
SATA
Учитывая, что это x86, один разъем надо оставить для системного диска, разъем SATA не так интересен, хотя на него выведен полноценный PCIe, но в BIOS он сконфигурирован именно как SATA и я даже не знаю возможно ли это как то в принципе изменить::

Так что для расширения в плане подключения дополнительных дисков, оставался только один M.2, пускай это будет E-key разъем для WiFi.
Понятно, что к одному лэйну можно подключить только один диск, но также существует технология PCIe Switch, которая снимает такое ограничение. Не погружаясь глубоко в теорию, можно сказать, что с помощью специального контроллера PCIe Switch, возможно увеличить число портов для подключения совершенно разных устройств PCIe. Из доступных контроллеров очень хорошо известны несколько микросхем компании ASMedia, которая выпускает решения для 6, 12 и 24 портов PCIe. Учитывая небольшие размеры корпуса, а также только один порт для подключения, я решил остановиться на варианте 6-портового коммутатора.
Микросхема ASM2806 представляет собой коммутатор PCIe, с шестью портами. Два из шести портов используются для подключения к хосту, а четыре других для подключения устройств PCIe. Собственно этими устройствами должны были стать дополнительных четыре диска M.2, размещаемых на отдельной плате.
Как оказалось микросхема настолько популярна, что её используют разработчики не только Asus, TerraMaster, но также и те, кто проектируют платы расширения для RPi.
Мне удалось связаться с компанией ASMedia и получить необходимую документацию на ряд чипов, которые мне были интересны. С документацией и идеей разработки модуля дисков для готовой компьютерной платформы, я принялся за дело.
Напомню, что для подключения модуля дисков к платформе был выбран разъем M.2 E-key со штатным переходником на M.2 M-key, фото которого было выше. Существуют различные переходники для подключения к M.2 внешних плат. Какого то единого стандарта для подключения к M.2 внешних плат нет. Можно использовать любой кабель, шлейф, который подходит для передачи сигналов со скоростью одного лэйна PCIe, но хотелось применить что то более менее стандартное. Тут я вспомнил, что уже обсуждал эту тему, скажем так, с любителями всякого рода железок, которые мне буквально указали на интерфейс OCuLink. Интерфейс достаточно новый, очень широко применяется для подключения внешних видеокарт, а также любой другой PCIe периферии. Так что, я решил остановиться на этом интерфейсе и выбрал в качестве подключения для модуля дисков разъем OCuLink / SFF-8611, для которого можно купить готовые кабели:

Также для OCuLink доступны адаптеры на M.2, один из которых и был установлен в доступный M.2 через штатный переходник:

На этом вся подготовительная часть моего плана была закончена и надо было приступать к разработке платы модуля дисков. Дело это привычное, достаточно быстро разработал структурную схему платы на основе выбранного контроллера PCIe Switch:

Схема построена на основе отладочной платы для этого контроллера. Была изменена только конфигурация выходных портов для подключения четырех дисков и добавлены источники питания. В остальном, сохранил отладочный порт, возможность конфигурации strap пинов, а также конфигурации из локальной EEPROM. Контроллер можно конфигурировать с помощью strap пинов без необходимости конфигурации программно по SPI. Хотя, если необходимо настроить GPIO для управления, например, светодиодами, то наличие программной конфигурации в локальной памяти обязательно. Контроллер также может формировать 100МГц для каждого порта PCIe с помощью встроенного генератора и формирует локальные сбросы для дисков. Подключение к хосту простое, помимо двух лэйнов PCIe и частоты синхронизации, необходимы только сигнал сброса и запрос 100МГц. Хотя, как оказалось, даже запрос 100МГц не нужен и более того на плате М.2 адаптера в эту цепь последовательно включен резистор, который на трех разных платах был не впаян:

В принципе, об этой фиче я знал, так что удивляться сильно не пришлось.Вот с чем мне действительно пришлось поломать голову, так это с распиновкой разъема на проектируемом модуле дисков. Проблема в том, что на пути PCIe, существует целая цепь различных адаптеров, разъемов и кабеля. В общей сложности здесь надо было учесть::
Штатный переходник M.2 на M-key
Адаптер М.2 на OCuLink
Распиновку кабеля
Понятно, что найти достоверную документацию на абсолютно все эти составляющие достаточно сложно, поэтому, в большей степени пришлось положиться на здравый смысл. Есть таблица для подключения устройств к хосту:

В этой таблице есть всё для правильного подключения. Смотрим на столбец с распиновкой слева, который приходит на root, и подключаем нужные сигналы к разъему справа, который выходит на модуль с дисками.
Форма платы была выбрана с учетом размеров материнской платы компьютера. С небольшим допуском, можно сказать, что форм фактора соответствует nano ITX с габаритами 120мм на 120мм. Единственное, расположение крепежных отверстий не соответствовало стандарту, но в данном случае не было цели полностью этот стандарт повторять. В итоге я решил закрепить модуль на стойки, которые крепили бы материнскую плату к корпусу:

На фото видно, что высота стоек 21мм, при таком размере возможно даже разместить между платами 2.5” SATA диск, хотя если это мне понадобилось бы, то пришлось бы еще разработать свой адаптер на M.2 чтобы получить немного больше места. Естественно, что тогда я решил этого не делать и ограничился только штатным системным диском M.2, но при этом сразу предусмотрел крепеж в том числе и диска SATA к плате модуля:

Разъемы для подключения дополнительных четырех дисков M.2 NVME находятся с другой стороны платы:

Габариты платы позволили разместить четыре диска размером 22110. Размещение было выбрано так чтобы диски выходили на низ корпуса и могли отдавать тепло сразу на нижнюю пластину. Это также удобно с точки зрения доступа к дискам для их установки или замены:

Плата была изготовлена полностью в Китае, включая заказ компонентов и монтаж. Уже не первый раз изготавливаю платы таким образом. Может показаться дорого или долго, но учитывая все накладные расходы на закупку комплектующих, на сборку, на хотя бы оптический контроль и на время исправления своих косяков с пайкой, можно понять, что иногда лучше заняться чем то более продуктивным.
Немного о косяках. Если помните, выше приводил таблицу соответствия выводов разъема OCuLink на стороне рута и модуля дисков. Так вот, первое с чего я начал проверку только что полученных плат, с попытки прозвонить соединение модуля с компьютером по кабелю. Ну и сразу обнаружил, что не звониться цепь синхронизации 100МГц. Как выяснилось поменял местами эту пару выводов с выводами сброса и запроса синхронизации, вместо B12/B13, подключил 100МГц на A12/A13. При этом синхронизация естественно попала на сброс и запрос:

Скорее всего перепутал левую и правую часть таблицы когда занимался подключением на схеме, хотя все остальные цепи подключил совершенно правильно. Вероятно в разное время работал, ну и по запаре недоглядел в один из дней. С этой точки зрения всегда имеет смысл прямо на схеме размещать подобные таблицы. В моём случае оставалось только резать и паять:

На фото видно, что иногда можно и рядом проходящий проводник задействовать для подключения к нужной точке, и жилки подпаивать к дорожкам 0.125мм. Главное чтобы под рукой микроскоп был и жало любимое. Тут не надо чего то бояться, обычная операция с первой ревизией плат, в данном случае можно было бы и в кабеле махнуть пары местами, но я решил добавить что ли человечности в эту плату. Про кабель тоже интересно узнать, что они разделяются на те, которые поддерживают PCIe Gen3 и те, что поддерживают PCIe Gen4. Это чувствуется по жесткости кабелей, но визуально сложно определить. Для примера вариант распайки кабеля PCIe Gen3:

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

Установил системный диск M.2 NVME, поставил на него термоподложку толщиной 1.5мм для отвода тепла на корпус и зафиксировал материнскую плату с помощью стоек, которые можно увидеть на фото в самом начале.
Пожалуй самое сложное при сборке было уложить кабель OCuLink так чтобы он ни на что не давил при установке модуля, но тут помогли стойки, которые его частично зафиксировали:

Стоит сказать, что кабели бывают разной длины. Я заказал кабели длиной полметра и двадцать сантиметров. Казалось бы, короткий кабель будет проще уложить, но нет, он постоянно сопротивлялся и все время хотел свернуть мне разъемы. В итоге остановился на полуметровом кабеле.
Для подачи питания на модуль используется кабель с разъемом JST PH-4, который подключается к разъему питания SATA диска. Как я уже отмечал, для фиксации платы модуля используются стойки материнской платы:


Видно, что все достаточно хорошо помещается и нет необходимости вносить какие то другие конструктивные изменения.

Для проверки работы модуля дисков, сначала загрузился без дисков и проверил, что в системе виден PCIe Switch, установленный на новой плате. Выглядело это примерно так, развернул Ubuntu на SATA диске, загрузился с подключенным модулем и выполнил lspci:

На фото видно, что в системе появился PCI bridge ASMedia Technology ну и т.д.
Это было прям здорово, поэтому, практически сразу поставил пару дисков NVME, которые нашел для тестов, собрал всю конструкцию и начал уже тестировать компьютер в сборе.
Для тестирования выбрал OMV / openmediavault, образ которого скачал с официального сайта. Раскатал его на USB флэшку и установил на системный диск M.2 NVME компьютера. Установка прошла совершенно обычно, сразу подключился к сети и после 10 минут ожидания в самом конце вынул флешку и подтвердил перезагрузку. Те, кто знаком с OMV, знают что это специальная система, предназначенная для организации и управления сетевого хранилища, которая доступна через вэб морду:

Можно видеть, что тут еще диски не объединены в RAID, поэтому, сразу занялся этой настройкой. С двумя дисками можно сделать либо stripe, либо mirror, решил остановиться на mirror. При синхронизации массива скорость держалась немного выше 200МБ/с, что в принципе отвечало моим ожиданиям. Другими словами на создание зеркального массива объемом 250ГБ ушло не более 15 минут.
Далее настроил Samba и провел самые простые тесты с перебросом видеофайлов между рабочим компом и этим чудо-дивайсом. Вот так примерно обстоит дело с переносом на рабочий комп:

С переносам с рабочего компа получилось меньше:

Оба компьютера были подключены в десяти гигабитную сеть, поэтому, скорость работы была ожидаемо высокой. Других тестов по скорости обмена не проводил, каюсь.
Что ещё было мне интересно, захотел сравнить потребление данной платформы, с устройствами на основе процессоров Rockchip. Я уже знал, что в такой же конфигурации, правда с интерфейсами 2.5Гб/с, хранилища на процессорах RK3568 / RK3588, потребляют порядка 5Вт - 8Вт даже в активном состоянии. Тут же замеры показали, что при схожих сценариях работы потребление существенно выше, примерно в три-четыре раза:

При дальнейшем наблюдении я заметил, что ниже 19Вт потребляемая мощность не опускается, а в среднем она находится на уровне выше 20Вт. В принципе это не большое потребление и корпус успешно справляется с рассеиванием тепла, он просто холодный, тем более что сверху установлен штатный вентилятор. Крутится он постоянно на низких оборотах, иногда разгоняется кратковременно, но я думаю, что в данном случае, корпус сам по себе большой радиатор и его должно хватить и без вентилятора..
Подводя итоги очередной переделки готовой аппаратной платформы в компактный NAS, хотелось бы еще раз обратить внимание, что даже без каких то особенных условий и финансовых трат, можно вполне разрабатывать устройства, которые могут конкурировать с известными брендами. Софт, конечно, тоже очень много значит и выбрав TerraMaster, AsusFlashStor, Synology или еще кого то именитого, можно получить сразу готовое решение из коробки. Но это не отменяет того факта, что с аппаратной точки зрения, все современные технологии довольно доступны и их можно успешно внедрять в свои разработки.
Что же получилось и насколько “свой Терра Мастер”, назовём его UberNAX по аналогии с названием канала в Телеге, где X - это 10Гб/с, может сравниться с оригиналом. Возьмем, к примеру, TerraMaster F8 SSD Plus:
Название |
TerraMaster F8 SSD Plus |
UberNAX |
Примечание |
Разъемов M.2 |
8 |
5 |
Подключение M.2 очень схоже |
Разъемов SATA |
нет |
1 |
Чисто формально |
CPU |
Core I3-N305 |
N150 * |
Поддержка N305 | N355 |
RAM |
16ГБ |
16ГБ |
До 32ГБ, хотя Intel заявляет максимум 16ГБ |
LAN RJ45 |
Один порт 10Гб/с |
Два порта 2.5Гб/с |
|
LAN SFP+ |
нет |
Два порта 10Гб/с |
Оптический или RJ45 модуль SFP+ |
USB2.0 |
нет |
4 |
|
USB3.2 Gen2 |
2 |
1 |
|
Type-C |
1 |
1 |
|
SD |
нет |
Внешний слот |
Слот для uSD |
HDMI |
1 |
2 |
|
Размеры, мм |
177 x 140 x 60 |
177 х 120 х 55 |
Практически одинаковые |
Потребление, Вт |
Не более 45 |
Не более 30 |
Разница за счет дисков |
Вес, кг |
0.6 |
1.4 |
Пластик/сталь vs. алюминий |
Софт |
TOS 6 |
OPNsense, OMV, TrueNAS и т.д. |
Вряд ли кто то будет сносить TOS и ставить open-source |
Сразу отмечу, что выбор данного NAS для сравнения был не случайным. Оба устройства построены на одной и той же платформе. И в целом, оба устройства очень похожи друг на друга.
Как видно из таблицы, у TerraMaster явное преимущество в количестве дисков. Насколько мне удалось понять из разборов данного устройства, часть его дисков также подключена через ASM2806, а другая видимо напрямую идет в процессор. Это говорит о том, что количество лэйнов для подключения M.2 скорее всего ограничено одним лэйном.
В то же время, TerraMaster явно проигрывает в плане сетевого подключения, что очевидно поскольку создавался как NAS, а не Soft Router. Это я могу переделать Soft Router в Soft Router + NAS, а у компании Terra Master такого потенциала явно не хватает.
В остальном, есть еще отличие по весу, но тут также очевидно из за подхода к охлаждению железа. Вариант TerraMaster больше подходит для настольного применения и вряд ли сможет справиться с отводом тепла только за счет пассивного охлаждения.
Ну и наконец, софт. Тут, безусловно, TerraMaster будет вне конкуренции, учитывая, что у него есть даже своя ОС.
Таким образом, в статье был рассмотрен свой вариант NAS с интерфейсом 10Гб/с и хранилищем на основе SSD. Как оказалось, даже самостоятельно можно доработать готовую аппаратную платформу, добавив в неё лишь новый модуль дисков, чтобы в итоге получить достаточно современный компактный NAS, который практически ни в чем не уступает более именитым собратьям.
Комментарии (16)
devpew
13.06.2025 22:29Судя по скринам температура у NVME дисков не плохая. Это в простое или под нагрузкой? И по фотке еще не понятно, вроде бы есть отверстие под вентилятор у самого корпуса. А сам вентилятор есть или охлаждение полностью пассивное?
sdy Автор
13.06.2025 22:29Не гонял диски, но в вяло текущем состоянии где то такая температура и осталась. Я обратил внимание, что производители походу не всегда адекватно показывают эту температуру. Самсунг в этом плане довольно мутный, показывает некие 40 с лишним градусов, которые меняются как черепаха независимо от температуры корпуса и нагрузки. TeamGroup более адекватно температуру показывают, но они всегда горячие. Adata, которые PCIe gen4 не помню точно марку, холодные по сравнению с другими, правда они и так холодные. В общем конкретно тут не тестировал
VADemon
13.06.2025 22:29cc @devpew очень часто нагло врут: https://www.techpowerup.com/review/samsung-970-evo-ssd-500-gb/7.html по датчику 85, по факту 110+. Вроде бы (от модели зависит) в последнее время ситуация улучшается в среднем.
tov_jukov
13.06.2025 22:29Почему бы не напечать на принтере, некоторые части корпуса, для большей свободы манёвра? Оставив часть шасси частично. Пепегрев учесть выбором пластика, который не течёт при 60-70 градусах, тем самым можно будет запланировать систему обдува в виде низкопрофильных больше размерных, и низкооборотистых вентиляторов.
sdy Автор
13.06.2025 22:29Использовать готовый радиатор, напечатать ещё деталей, собрать все это в один корпус? По мне норм, избавит от многих проблем как с дорогой обработкой, так и с дизайном. Был небольшой опыт с изготовлением конструктивна таким образом. Сделал модель под алюминий и решил част деталей напечатать. В принципе получилось, но пластины тонкие не очень. Самая большая проблема - это найти способ вез винтового соединения пластиковых деталей. Может что то типа ласточкин хвост. Пока не пробовал дальше идеи. Если есть интерес, то можно обсудить это для пары проектов текущих
Nizametdinov
13.06.2025 22:29Стоимость платы сколько вышла? Китайцы прям в единичном экземпляре делают или есть мин партия?
sdy Автор
13.06.2025 22:29Заказал десяток плат, подготовка съедает обычно много. Также доставка и таможка где то пятую часть. Даже с учётом всех побочных трат, ценник вполне подъемный вышел, тем более для ппототипной серии. Скажем так, в сборе вся железка получилась довольно бюджетной по сравнению с тем же террамастер
ToSHiC
13.06.2025 22:29Если будете подобное еще раз проектировать - посмотрите в сторону разъёмов именно для внутри-системного использования, типа SlimSAS 8i (до gen4 можно использовать, в зависимости от спек конкретного кабеля и разъемов), либо MCIO, он же sff-ta-1016.
sdy Автор
13.06.2025 22:29Эти разъемы больше подходят для серваков, а я хотел более компромиссный вариант чтобы на стыке между серваками и обычными компами. В этом плане окулинк более коммерчески ориентированный на небольшие рабочие станции, опять же популярен среди геймеров и дизайнеров с их видяхами внешними
hw_store
Не ясен рыночный сегмент - вроде как 10G по оптике это скорее корпоративное хранилище, а по корпусному конструктиву - скорее домашнее, вряд ли рассчитанное на несколько сотен одновременных TCP-сессий
sdy Автор
У меня по DAC кабелю подключение, его длины вполне хватает. Оптику можно между комнатами пробросить, а если лежит cat6, то тогда просто модуль SFP+ с RJ45. Для SFP+ нет никаких ограничений в плане физики
hw_store
Да это понятно, не понятно для каких задач такие скорости в домашней сети.
sdy Автор
Ну тем, у кого хоум лаб , наверное есть смысл, а так чисто по приколу сделал. Гигабита для хранилки вполне чтобы фильм посмотреть, бэкап по работе и т.д.
Mayurifag
Мне кажется из рыночного коньюмерского сегмента это все у кого новый ремонт был, они проложили по квартире навырост и на годы вперед витую пару/оптику 10гбит++ (вполне доступно по ценам сейчас) и как раз смотрят эти самые 10G во всех устройствах
Очень часто встречаю раздосадованные комментарии на миникомпьютеры, как людям грустно, что в устройстве "всего" 2.5 или 5 гбит, видимо есть спрос. Сам к таким людям (пока) не отношусь.
blind_oracle
Медь на 10Гбит это ад. Трансиверы греются как не в себя. Так что SFP+ удобнее, можно и оптику вставить и DAC.
sdy Автор
Новые чипы, типа aqc113 греются существенно меньше по сравнению со старыми, например, aqc107. А так, да, SFP+ универсальный солдат