Краткий обзор существующих решений
Большое количество разнообразных одноплатников или Single Board Computer (SBC), все чаще оснащаются PCIe интерфейсом, выведеным на FPC или M.2. Как правило количество лэйнов (lane) PCIe и максимально достижимая скорость зависят от конкретного процессора, установленного на SBC. Самые известные SBC, такие как Raspberry Pi 5, Orange Pi 5, Radxa Rock 5x, Banana BPI-Mx и другие, применяют ARM процессоры с контроллером PCIe Gen2 и PCIe Gen3. При этом у некоторых процессоров, например RK35xx, есть как комбинированные PCIe хосты для подключения USB3, SATA и PCIe Gen2, так и специализированные PCI Gen3.
Наличие PCIe интерфейса значительно расширяет возможности любого SBC по подключению самых разнообразных устройств. Чем больше портов может предоставить встроенный контроллер PCIe, тем больше устройств можно подключить. Если же портов окажется недостаточно, то можно добавить чип (микросхему) коммутатора PCIe.
Существует достаточно большое количество как просто проектов, так и законченных устройств на базе подобных SBC с применением PCIe. Уровень технической реализации и схемотехнических решений тоже разнообразен, хотя не стоит забывать, что речь идет про устройства с интерфейсом от 5Гбит/с до 8Гбит/с на лэйн.Чтобы как-то помочь энтузиастам с разработкой, Raspberry PI даже составило специальный документ - A 16-way PCIe FFC Connector Specification. Документ очень хороший получился, в результате теперь чего только не подключают к этому SBC, начиная от NVME и заканчивая AI ускорителями.
В отличие от Raspberry PI, китайские производители SBC, не предлагают подобных документов в помощь разработчикам. Хотя часто процессоры, которые они применяют, во многом выигрывают у процессора Raspberry PI. Поэтому, приходится ориентироваться исключительно на свой опыт, китайскую документацию и специализированные форумы.
О самом проекте портативного NAS
Чтобы как-то помочь в деле создания устройств на базе китайских одноплатников, хотелось бы поделиться своим опытом по разработке портативного NAS на основе платы Banana Pi BPI-M7:
До этого мы применяли только стандартные контроллеры или использовали референсные проекты для подключения дисков. В этот же раз, нам предстояло разработать кастомное решение, как в аппаратном, так и программном плане.
Ключевые особенности проекта - поддержка двух NVME M.2 в режиме 2x 2 lanes и габаритные размеры, сопоставимые с пачкой сигарет:
Два диска позволяют создать RAID 0 или RAID 1 в зависимости от того, что больше важно, надежность хранения или объем данных. Можно просто использовать два отдельных диска. В любом случае, даже понимая, что область применения это очень важная тема, в этой статье хочется остановиться все таки больше на технических вопросах.
Устройство портативного NAS
Одноплатник BPI-M7 построен на полноценном процессоре RK3588, у которого 4 лэйна PCIe Gen3 выведены на M.2 M-key для подключения одного NVME диска размером 2280:
Для подключения двух дисков пришлось разбить интерфейс на два отдельных интерфейса. Такая возможность существует благодаря тому, что процессор RK3588 поддерживает режим 2x 2 lanes, другими словами, два отдельных порта по два лэйна PCIe Gen3 в каждом порту. В теории даже два лэйна позволяют обмениваться с диском на скорости 16Гбит/с или 2ГБайт/с, что не мало:
Проблемы и решения
На языке технической документации, требуется установить режим без агрегации и без бифуркации:
Такой режим задается соответствующим полем [2:0] регистра pcie30_phy_mode. Если изначально для режима агрегации значение этого поля задавалось как 3’b100, то в данном случае необходимо его поменять на 3’b000:
Вместе со сменой режима на программном уровне, также меняется набор управляющих пинов для обслуживания NVME интерфейсов - Digital GPIO, как следует из таблицы выше.В этом есть определенная проблема, так как нужных пинов для работы с двумя NVME попросту нет.
Нужные пины, а это PEWAKE#, CLKREQ# и PERST#, уже задействованы для других целей. Однако, это не такая большая проблема, потому что часть этих пинов, такие как PEWAKE# и CLKREQ# является опцией, а оставшийся PERST# можно сформировать самим, либо управляя специальным пином уже как GPIO, либо добавив цепь аппаратного сброса. Так или иначе, получается довольно простая схема подключения двух NVME дисков к одному M.2:
У одноплатника BPI-M7 на сайте Armbian есть официальная страница. Поэтому, для внесения изменений в device tree существующего образа BPI-M7, мы решили связаться с поддержкой производителя. В результате совместной работы, нам удалось создать оверлей, который задаёт нужную конфигурацию портов PCIe Gen3.
Дизайн и сборка
Дизайн корпуса выполнен для пассивного охлаждения. Предусмотрен отвод тепла от процессора непосредственно на верхнюю часть корпуса-радиатора через термоинтерфейс:
Для подключения модуля с двумя дисками к одноплатнику, применяется дополнительный адаптер M.2 / FFC, который также был разработан для этого NAS. Плата-адаптер вставляется в M.2 и крепится как обычный диск. Далее к плате подключается гибкий кабель FFC, по которому передаются все сигналы интерфейса PCIe x4. Также отдельным кабелем на модуль дисков подается питание 5В:
Два диска NVME крепятся на основной плате-модуля дисков. Устанавливаются термоподложки / термопрокладки так чтобы сразу отводить температуру на корпус:
После установки дисков, модуль крепится на одной из половин корпуса. Не самое удобное решение по установке дисков, но в данном случае это только прототип:
Для соединения одноплатника и модуля дисков, остаётся только подключить FFC кабель и кабель питания:
В самом конце сборки корпуса, обе половины скрепляются винтами, а также устанавливаются передняя и задняя пластины:
Подключение антенн к встроенному модулю WiFi 6 пока прорабатывается. Есть варианты с размещением как внутренних, так и внешних антенн. Пока только рендер:
Единственный тип питания одноплатника - это Type-C PD. В спецификации Type-C, помимо обычного разъема, есть также описание разъёмов с дополнительной фиксацией. Для одного из таких разъемов на корпусе были предусмотрены резьбовые отверстия:
Тестирование
Пока выполнены только несколько основных тестов. Это тест потребления, температурный тест, измерена скорость сетевого интерфейса и есть предварительная оценка производительности дискового интерфейса.
Потребление измерялось как во время выполнения встроенных тестов Armbian, так и при обычных задачах.В качестве измерительного устройства использовался USB тестер:
Результаты измерения представлены в основном для питания 12В. Судя по всему, потребление немного зависит от питающего напряжения. Было замечено, что когда портативный NAS питался от 5В источника, потребление было немного меньше, чем при питании от 12В. Напряжений выше чем 12В контроллер PD не запрашивал, видимо не надо было::
Нагрузка на систему |
Потребление, Вт |
Не более 5% |
4Вт..6Вт в зависимости от входного напряжения Type-C PD. Наименьшее значение 4Вт при питании от 5В, наибольшее значение 6Вт при питании от 12В |
Выше средней при выполнении тестов 7z |
9Вт..11Вт |
Чтение / запись дисков |
Порядка 6Вт..7Вт |
Просмотр 4k видео |
Не более 7Вт |
Температура обычно не поднимается выше 45..50 градусов в комнате летом в жаркую погоду, при том, что используется пассивное охлаждение. Также для эксперимента проводился обдув турбиной 40мм для 3D принтеров. В целом применение даже такого незначительного охлаждения, снижает температуру примерно на 10 градусов. Поэтому, был разработан также вариант корпуса с активным охлаждением, при этом удалось полностью уложиться в существующие габариты корпуса с пассивным охлаждением:
У одноплатника BPI-M7 есть только два сетевых интерфейса 2.5Гбит/с каждый. При этом два встроенных гигабитных контроллера процессора не используются совсем. С одной стороны это удорожает дизайн, но зато появляется возможность существенно увеличить скорость сетевого интерфейса. Тестирование велось как с помощью утилиты Iperf, так и записью / чтением файлов по сети:
Даже эти данные, полученные на скорую руку, показывают значительный прирост скорости по сравнению с гигабитным соединением.
Последнее, что было проверено, это скорость работы дисковой подсистемы. Проверка проводилась с единственной целью, необходимо было убедиться, что передача сигналов по PCIe не нарушена. Всё таки достаточно много дополнительных разъемов на пути передачи от процессора до дисков, вдобавок несколько плат новых, хотя и с контролем импеданса. Поэтому, оценка показателей типа IOPS и других еще будет проводиться. При копировании локально с диска на диск, с учетом только двух задействованных лэйнов у каждого диска, достигается примерно половина от заявленной производителем максимальной скорости. В общем быстро диски работают, да и ошибок не было:
Планы на будущее
Самое главное, мы хотим довести этот проект до коммерческого продукта. Это может быть как набор для самостоятельной сборки, например, если такой одноплатник уже есть, так и готовый к применению портативный NAS. Пока еще рано говорить про цену, так как многое зависит от этапа индустриализации, которым мы только начинаем заниматься.
Помимо разработки портативного NAS - BananaNAS, мы также продолжаем работать над еще одним нашим проектом мобильного NAS - PixelNAS. Дело это очень интересное, но пока не прибыльное. Поэтому, полностью заняться разработкой в этом плане так и не удается. Хотя идей много, а главное есть интерес со стороны производителей одноплатников, которые мы применяем, в плане совместных проектов. Так что, читайте наш новостной канал и присоединяйтесь к нашему сообществу, где с нами можно обсудить детали разработок как текущих, так и будущих.
Комментарии (45)
NutsUnderline
10.06.2024 07:49Красивое конечно, некоторые сценарии применения прослеживаются, но похоже что относительно узкие. Плюс вопрос цены.
Очень любопытно сколько времени Бананы будут производить эту модель одноплатника, это довольно специфичный производитель.
sdy Автор
10.06.2024 07:49+2В случае совместного проекта с Banana PI, решение о производстве плат уже выходит на новый уровень. Судя по интересу с их стороны, они могут выступать как OEM/ODM
DeTerminator
10.06.2024 07:49+3На али готовые продают.
Johan_Palych
10.06.2024 07:49Забавная железка
https://wiki.friendlyelec.com/wiki/index.php/CM3588_NAS_Kit
И с добротной поддержкой
https://wiki.friendlyelec.com/wiki/index.php/CM3588
NutsUnderline
10.06.2024 07:49+1frendlyArm чуть менее странная контора чем бананы. На ali только ее перепродавцы, но кому надо - купят. Тут одни не так давно прям вот такое разрабатывали: PixelNAS называется :)
sdy Автор
10.06.2024 07:49+1Разрабатывали и будем разрабатывать. К концу июня подьедут платы со встроенным UPS. Будет еще одна модель PixelNAS'a
necr0x
10.06.2024 07:49Молодцы, классный проект! Я бы с удовольствием рассмотрел варианты с разными чипсетами под разные процессоры на выбор. Я пока не вдавался в параметры выбранного вами процессора, полагаю это arm. Но думаю он слабее n95. А желательно хотя бы i3 средний.
Я понимаю что возрастает электропотребление, нужно охлаждение. У меня дома стоит AMD средний, я воткнул кулер пассивный, даже корпус не закрыть теперь, зато какой кайф от бесшумной работы ПК. Для меня размер коробки NAS не имеет значения. А вот электро потребление до 50 ват в пике нагрузки можно стерпеть. А в среднем 25-35 ок. Так же предложил бы сделать упор в сторону памяти, хотя бы 32-64 с возможностью самому, но лучше в стоке + БП на 90 ват выше крыши без кулера, как на ноутах. Упор на скорость передачи данных я бы делал только для райд 0, а для других модификаций хватит 2х2,5 гбитных портов. В итоге мощный NAS каких нет ни у кого. Я бы купил даже за 1к баксов)
Вы снова ориентируетесь на еле живое железо, таким никого не удивить в этом сегменте. Упор на процессор и память для подобных коробок нужен для нормальной работы nextcloud. Готовые ОС решения в этом сегменте - убоги все. Я бы ориентировался на RHEL, тем более он бесплатен. Тут не знаю как в РФ конечно. Сверху я бы и веб сервер поставил и библиотеку книг (в том числе аудио) и медиа сервер. По факту один процесс nextcloud требует уже 500 метров, сам сервер на базе RHEL с вебсервером, мускулом и тд тянет метров 700 в стоке + веб доступ тянет ещё 500 метров. А на семью от 32 рамы и i3 среднего было бы выше всяких похвал. Так же попробуйте сделать слоты под ссд (чтоб воткнул и готово), м2 я бы и не использовал, только в конфигурации с райд 0.
На рынке нет полноценных устройств и вы топите в ту же сторону) на сегодня вот мой фаворит - https://www.terra-master.com/us/f4-424-pro.html?page=menu&mid=1495 - в нём почти всё хорошо кроме non-ECC памяти и их убого ОС. В остальном он почти идеален и вне конкуренции.
Сильной разницы в объёме между хдд и ссд почти нет. Топ ссд на 8 тб стоит 500 евро, хдд серверный на 18 Тб стоит 700 евро. Я лучше 4 ссд воткну, чем 4 хдд и тише и безопасней (почему? Потому что 4 ссд по 8 тб за глаза для одной семьи из 6 человек). Нормальный ссд в режиме NAS проживёт запросто лет 15 и этого срока выше крыши. У меня в домашнем ПК двум ссдшкам уже по 11 лет, так что...
Так же я бы предложил вам взять стабильный nextcloud и сделать его закрытым от обновлений, пофиксить всё что нужно в нём и сделать связку настроек для Апач + модули/плагины + мускул + некстклауд и этот пак в навес давать либо опционально помогать в установке и настройке. Минус его в том, что бесплатные версии для подопытных (нас), все косяки фиксятся и отдаются по подписке уже в стейбл версии, а нам снова на тест выкатывают новьё. Поэтому я вижу здесь большой пробел качества для нас, обычных пользователей. Не каждый готов терять дни на погружение и поиск решений в мире Линукс. А ваша цель должна быть - доступность и простота для каждого. И цены вам не будет)
Пишите мне в личку)
sdy Автор
10.06.2024 07:49RK3588 топовый проц в своем сегменте, таких еще поискать надо. Памяти до 32ГБ запросто даже на этом модуле. При этом потребление всей системы даже с активными дисками порядка 5-6Вт
Что касается конкретно BananaNAS, то он задумывался как вариант портативного хранилища, которое можно таскать с собой в кармане без каких-либо сложностей
necr0x
10.06.2024 07:49А кому это нужно и почему тогда не таскать с собой просто внешний ссд или м2, зачем усложнять и где логика? Мне нужно воткнуть дома к сети и иметь доступ ото всюду. А таскать с собой можно обычный нотик или планшет с телефоном. Яхз, делайте как считаете нужным, что я в самом деле лезу)
Не может он потреблять 5-6 если один хдд потребляет столько. А если их 4 + сам проц, а если ещё что-то, я не верю просто.
NutsUnderline
10.06.2024 07:49Можно XigmaNAS посмотреть
necr0x
10.06.2024 07:49Нет, спасибо. Нет ничего хуже этих инвалидных сборок. Хочешь получить хороший дистр - возьми RHEL и запили всё сам.
Например зачем мне самба если нет винды, зачем фтп если не юзаю, зачем программный райд если юзаю аппаратный, зачем поддержка кучи протоколов если нужны всего пара и тд и тп, rhel меня ничем не ограничивает, ставлю только что хочу, настраиваю как хочу, понимаю что поставил и что как и главное зачем работает и жрёт память.
NutsUnderline
10.06.2024 07:49так а кто хотел в линукс не погружаться да бесплатно да легковесно? nextcloud и omv такие же сборки: не надо протокола - галочка не стоит
necr0x
10.06.2024 07:49Пример комментария chatGPT:
Учитывая ваши требования для сервера Nextcloud, который будет обслуживать семью из 6 человек, а также работать в качестве веб-сервера (Apache), базы данных (MySQL), мультимедийного сервера и хостинга нескольких доменов, давайте подробнее рассмотрим подходящие варианты:
Расчет потребностей:
-
Nextcloud:
6 пользователей * 500 МБ = 3 ГБ оперативной памяти.
-
Веб-сервер (Apache):
Около 1-2 ГБ оперативной памяти (зависит от нагрузки и конфигурации).
-
MySQL:
Около 1-2 ГБ оперативной памяти (зависит от объема данных и нагрузки).
-
Мультимедийный сервер:
Около 1-2 ГБ оперативной памяти (зависит от нагрузки и количества потоков).
Итого, минимальная потребность в оперативной памяти будет составлять примерно 6-9 ГБ.
Rockchip RK3588:
Преимущества:
Энергоэффективность: Очень низкое энергопотребление, что делает его идеальным для портативных решений.
Достаточная производительность для небольшой нагрузки: Подходит для мультимедийных задач и легких серверных нагрузок.
Недостатки:
Ограниченная производительность: Может быть недостаточно мощным для одновременного выполнения всех ваших задач под высокой нагрузкой.
Совместимость: Возможно, потребуется дополнительная настройка и оптимизация для некоторых серверных приложений.
Intel N95:
Преимущества:
Высокая производительность: Отлично справится с множеством пользователей и серверных задач одновременно.
Широкая совместимость: Поддержка большого количества программного обеспечения и драйверов, оптимизированных для x86 архитектуры.
Недостатки:
Энергопотребление: Выше, чем у ARM процессоров, но все еще довольно низкое для современных x86 процессоров.
Стоимость: Обычно дороже, чем ARM решения.
Выбор процессора для вашего сервера:
Учитывая все ваши потребности, включая Nextcloud для 6 пользователей, веб-сервер, базу данных и мультимедийный сервер, лучше всего подойдёт Intel N95. Он обеспечит необходимую производительность и стабильность при работе с высокой нагрузкой.
Заключение:
Рекомендую использовать Intel N95, если:
Вы планируете использовать сервер для нескольких пользователей с высокими требованиями к ресурсам.
Вам требуется высокая производительность и стабильность при одновременной работе нескольких серверных приложений.
Использование Rockchip RK3588 возможно, если:
Вы готовы ограничить количество одновременных пользователей и задач.
Энергопотребление является критически важным фактором, и вы ищете максимально энергоэффективное решение.
В общем, для ваших задач Intel N95 будет более подходящим выбором, обеспечивающим необходимую производительность и стабильность.
sdy Автор
10.06.2024 07:49+1Судя по рекомендации, N95 дороже, потребляет больше, недотстаточно производителен
Ну просто выбор очевиден
-
necr0x
10.06.2024 07:49И если вафлю ставите, то ставьте сразу 7 версию, потому что слоты под кабель уже не камильфо если вафля запросто вытягивает такие скорости) удел на прочность берите уже сегодня. Я буду первым клиентом)
А так же сразу образ установочный и вебку интегрирует. А лучше чтобы можно было просто настроить интернет и скачать любой iso и из него и полететь без проводов вообще)
К слову мой n95 страшно грузится при установке софта например, так страшно даже думать в сторону более слабых моделей. Или сервер должен еле дышать в походной сумке? ))
sdy Автор
10.06.2024 07:49425Мб/с и так, куда больше то?
necr0x
10.06.2024 07:49700 )
Хотелось бы AMD Epyc 3251 с пассивным радиатором или бесшумным вентилятором на нем увидеть, 4-8 ссд слотов, 32 рамы последней ECC, USB 3 и 4 по паре тройке слотов на удобном месте, HDMI 1 штуку и слоты для карт памяти разных. Это было бы идеальным. В пике процессор 70-75 ватт, 4 ссдкэшки по 6х4 ватт и по мелочи 4-6 ватт остальное.итого имеем систему на 110 ватт в пике с БП маленьким как у ноута. Ссд или м2 уже можно опционально проработать. Поддержка райдов аппаратная так же. Да, это будет 20-30 евро в месяц в Германии на электроэнергии, но зато какой монстр) можно домены 2 уровня раздавать по 1-2 евро в месяц или место под помойку за пару Тб... 8-10 тел уже больше половины за электроэнергию окупят)
fedorro
Не понял - это как? Винда запущена на самом NAS? Диски подключены через USB? По графику похоже что просто конец файла в дисковом кэше оказался.
sdy Автор
Расшарил два диска по Samba. Про кэш вряд ли, там объем слишком большой в кэш не влез бы
Тесты в основном проводились чтобы убедиться в целостности интерфейса
fedorro
Ну поэтому и начало графика такое, но вторая часть файла была в кэше, видимо потому что этот файл до этого считывался, а Винда в этом плане умная, и если видит что файл, который до этого был в кэше опять копируют остаток файла в кеше не перетирает, а использует под конец. Ну иначе как вы объясните скорость под 7 Гигабит?
sdy Автор
Важно было проверить, что интерфейс дисков работает должным образом. В статье об этом как раз сказано. Не очень понимаю какие проблемы с 7Гбит/с? Заявленная скорость записи дисков свыше 20Гбит/с с учетом 4х лэйнов
fedorro
Проблема с тем что они подключены по сети в 2.5 Гбит/c)
sdy Автор
Это было локальное копирование с диска на диск
fedorro
Вы же выше написал что они подключены по сети ... Или хотите сказать что SMB такой прошареный протокол, что он знает что эти два диска на одной машине, и там сам не отходя от кассы между дисками перекидывает данные? Очень сомневаюсь. Можете провести такой -же эксперимент после перезагрузки, или посмотреть в диспетчере задач нагрузку на сеть во время подобного копирования.
sdy Автор
Могу запустить локальное копирование прямо с BananaNAS чтообы не осталось вопросов. Предлагайте свой вариант команды
fedorro
Так я не спорю что локально скорость хорошая, я говорю что вы прикладываете скрин сетевого копирования, в качестве демонстрации локального ... Или я чего-то не понимаю, или Вы, кроме того может ввести в заблуждение других.
sdy Автор
Да ну, я считаю, что замечание ваше по делу. Могу перемерить скорость локальной командой, а не командой запущенной удаленно
fedorro
Не спец в линуксах, но можно попробовать time cp /mnt/a /mnt/b, и разделить размер на время, если ничего не ставить. Также можно воспользоваться утилитами pv, gcp, или rsync, которые отображают скорость копирования.
sdy Автор
ок, сделаю
sdy Автор
rsync'ом перемерил, рисунок обновил. Спасибо за обсуждение
NutsUnderline
я тоже не сразу понял в чем суть вопроса. в общем скорость локальной копии надо чем то запускаемым под Armbian проверять. Самое простое - в midnignt comander запустить копирование и заскриншотить. И это это будет чисто практический тест. Но есть и именно тесты производительности, даже хотя бы тот же F3
Johan_Palych
Ну и поставили бы сразу openmediavault на eMMC с Armbian.
Почитал. На плату SPI Flash не завезли?
https://docs.banana-pi.org/en/BPI-M7/BananaPi_BPI-M7
В билдере(build framework) есть
https://github.com/armbian/build#getting-started
sdy Автор
К сожалению пока не ставится OMV на это ядро из armbian-config. По другому не пробовали
Johan_Palych
4 варианта сборки. Дел на 5 мин.
Соберите с BRANCH=legacy(Kernel:Linux 5.10.160)
NutsUnderline
не понял зачем для OMV ядро пересобирать. просто качается install.sh который инсталит OMV
sdy Автор
Попробуем, просто руки до всего не доходят сразу
Johan_Palych
Вопрос не ко мне.
В статье используется Kernel:Linux 6.1.43(надо смотреть логи)
Я просто предложил собрать готовый образ Armbian-unofficial_24.8.0-trunk_Bananapim7_bookworm_legacy_5.10.160_minimal.img (1.50GiB - Kernel:Linux 5.10.160) и потестировать установку на нем.
В меню armbian-config можно выбрать Software и поставить OMV
Скрины для примера
https://wiki.kobol.io/helios4/omv/
sdy Автор
Мы ставили Armbian 24.5.1 Bookworm Minimal, вот он как раз не поддерживает установку omv штатно из armbian-config. Посмотрим, может и соберем сами для старого ядра
Johan_Palych
Попробуйте руками поставить.
https://github.com/OpenMediaVault-Plugin-Developers/installScript
sdy Автор
Норм, поставил. Спасибо за помощь