В статье изложена идея разработки NAS с самого начала, от проектирования плат, портирования софта и до дизайна корпуса.
Для чего нам этот проект? - Есть следующие основные причины:
Интерес к разработке своими силами сложного устройства, такого как NAS.
Создание открытого проекта, который требует максимального использования стандартных процессов разработки, а также улучшает внутреннее взаимодействие в команде.
Получение дохода, с целью продолжения работы над другими интересными устройствами из нашего списка разработок, в котором NAS занимает основную позицию.
Мы довольно малочисленная команда энтузиастов, которая объединяет схемотехников, программистов, конструкторов и менеджеров. Несмотря на значительный опыт работы в разных компаниях, это наш первый общий проект. Поэтому хочется всё сделать по уму, используя не только свои предпочтения, но и хорошо известные подходы организации процесса проектирования.
Посмотрим на план того, что мы собираемся сделать, чтобы спроектировать и запустить в производство NAS:
Наш концепт открытого и модульного NAS
Открытая платформа нашего проекта подразумевает, что все схемы, файлы для производства, 3D модели корпусных деталей, исходники и другие файлы, можно будет скачать в открытом доступе по Creative Commons лицензии - Атрибуция 3.0 Непортированная. Ну или адаптированный для чтения вариант:
При наличии большого количества NAS, отлично зарекомендовавших себя за долгие годы эксплуатации и к тому же не требующих особых навыков настроек, наш проект может показаться малозначительным. Но это только на первый взгляд. В наших дизайнах мы нацелены на ряд функций, которые доступны в дорогих и продвинутых NAS. Например, в зависимости от модели модуля, будет реализована поддержка памяти ECC, горячая замена дисков, встроенное резервное питание, объем оперативной памяти до 32ГБ, возможность выбора процессора для создания не только хранилища данных, но и стриминга видео и другие продвинутые функции.
Модульность железа - это основа нашего дизайна, на которую мы опираемся. Если вам нужен NAS в виде уже готового устройства, которое остается только включить и он будет работать годами, то лучше всего выбрать решения от ряда известных фирм. Конечно, мы понимаем, что это и есть то к чему следует стремиться, но кто из нас не собирал компьютер для себя и своих близких? Ведь реально, если вашим родителям или детям нужен компьютер, то большинство будет радо собрать нужный компьютер самостоятельно, установит нужный софт, сконфигурирует его и настроит. Это то, чем можно гордиться по-настоящему.
Большое количество всевозможных плат с разным функционалом и определяет модульность. Можно собрать как NAS начального уровня только для хранения различных файлов, а с другой стороны ничто не мешает сразу или постепенно собрать более навороченный NAS для стриминга видео, музыки и с набором полезных сервисов, выполняющих рутинные задачи.
Кастомизация корпуса - очень важный для нашего проекта принцип. С большой долей вероятности, можно с первого раза определить, что перед нами NAS. Сменные отсеки дисков, большая вентилируемая панель, работающий компьютер где-то на антресолях, ноутбук со сломанным экраном и несколькими дисками, да много чего еще странного и не очень, но все эти устройства собранные с большой любовью и вниманием к деталям, как раз таки могут представлять собой NAS. Поэтому, нет смысла ограничиваться одним дизайном корпуса, гораздо эффективней предложить конструктивные решения, которые позволят улучшить потребительские качества. Например, красивый, легко трансформируемый дизайн за счет замены только одной детали конструкции, эффективное, но тихое охлаждение, параметрическая модель корпуса и его составляющих, простой доступ к дискам и так далее.
Архитектура NAS
Чтобы появилась некая архитектура NAS, необходимо сформулировать технические требования. В предыдущей статье - Что такое свой NAS и как его начать делать?, был сформулирован ряд ключевых требований, в кратком виде это:
Также была представлена таблица с техническими характеристиками базового / начального варианта NAS, основные параметры которого приведены ниже:
Название |
Характеристика |
Вычислительный модуль |
SODIMM на базе процессора ARM |
Операционная система |
Armbian / Debian |
Жесткие диски |
SATA с поддержкой RAID 5, 6 |
Сетевое подключение |
1GbE |
Внешний порт данных |
3x USB 3.1 Gen1 / Type-C PD |
Видео выход со звуком |
Mini DP / Type-C DP Alt Mode |
Питание |
230В |
Резервное питание |
Батарея не менее 20Вт•ч |
На первый взгляд всё просто, только необходимый функционал и ничего лишнего. Такой NAS может хранить данные с достаточной надежностью за счет организации дисков в RAID5 или RAID6, и при этом будет доступным. Однако, даже в простых дизайнах есть свои сильные стороны. Давайте посмотрим, что из этого может выйти.
Попробуем расширить / изменить базовый набор за счет уже имеющихся интерфейсов. Например, что мешает подключить дополнительную сетевую карту к интерфейсу USB или дополнительный контроллер дисков SATA:
Вариант расширения |
Тип интерфейса |
||
SATA Gen3 |
PCIe 2.1 / 3.0 |
USB 3.0 / Type-C |
|
Подключение нескольких SATA дисков хранилища |
до 15 дисков на один порт SATA |
PCIe / SATA Bridge 5-6 дисков на PCIe x2 2-4 диска на PCIe x1 |
USB / SATA adapter 1-2 диска |
Системный SSD |
NVME x2 / x4 |
SATA / NVME x2 adapter |
|
Ethernet |
1GbE / 2.5GbE |
В таблице показана только часть возможных расширений, относящихся к дисковой подсистеме. Существующий набор интерфейсов в современных процессорах ARM позволяет создавать и другие варианты, что особенно ценно, если цель спроектировать не просто NAS, а еще и поддержать развлекательный контент.
Декомпозиция дизайна
Попробуем определить связи между техническими требованиями и конкретными узлами, которые за них отвечают. Для этого разобьем дизайн на ряд основных блоков и попытаемся их “прокачать”.
Контроллеры дисков
Рассмотрим особенности шин PCIe и SATA, которые нам позволят снять ограничения по количеству дисков в системе (с разумной точки зрения, ясное дело).
Так зачастую PCIe контроллеры процессоров поддерживают разветвление шины PCIe - bifurcation, что позволяет организовывать несколько независимых шин PCIe:
Получив несколько независимых шин, к одному процессору теперь можно подключить уже не один, а несколько PCIe / SATA Bridge контроллеров, и тем самым увеличить количество дисков в системе:
Еще один из вариантов расширения размера хранилища - это подключение нескольких SATA дисков к одному порту, если контроллер SATA поддерживает функцию PMP - Port Multiplier:
Хотя функция PMP довольно известная, но среди производителей контроллеров SATA найдется не так много вариантов чипсетов и встроенных контроллеров, которые могут “увидеть” на одном порту SATA сразу несколько дисков.
К сожалению, в ARM процессоры довольно редко встраивают контроллер SATA. На мой взгляд, производители таким образом пытаются всеми способами выжить данную технологию и заменить её на более универсальную PCIe. В отличие от x86 и AMD процессоров, для которых выпускаются специальные чипсеты с поддержкой нескольких SATA портов, у ARM процессоров даже таких вариантов нет.
Тем не менее, некоторые производители до сих пор размещают PCIe Gen2 “рядом” с PCIe Gen3. Спрашивается для чего? - Лучше бы увеличили ширину PCIe Gen3. Но если разобраться, то ответ становится очевидным:
Высокоскоростные лэйны PCIe Gen2 имеют практически такую же скорость как USB3.0 (иначе USB3.1 Gen1) и самое важное SATA Gen3. Это позволяет подключать нужный контроллер внутри процессора к комбинированным лэйнам со скоростью до 6Гб/с в зависимости от интерфейса. Далее, как мы видели на рисунке выше, даже к одному SATA с поддержкой функции PMP можно подключить до 15 SATA дисков.
Вычислительный модуль
Не хотелось бы сейчас подробно останавливаться на теме, связанной с возможностями современных ARM процессоров. Для этого мы постараемся приготовить отдельный материал, с оценкой возможностей нескольких процессоров, которые для нашего проекта являются целевыми. Тем не менее, хочется рассказать ещё об одном элементе системы - вычислительном модуле SODIMM.
Идея размещения на одном модуле самых важных компонентов процессорной системы, широко известна. Для каждого встраиваемого процессора в мире существует хотя бы один универсальный модуль. Действительно удобно, одна универсальная плата служит основой для создания совершенно разных устройств.
Мы тоже придерживаемся этого пути, поэтому, спроектировали вычислительный модуль с минимумом периферии для нашего варианта NAS начального уровня:
На плате модуля есть 200-pin краевой разъём, на который выведены практически все интерфейсы процессора, питание и цепи управления:
Назначение |
Название интерфейса |
100/1000 Ethernet |
RGMII |
DIY, управление системой |
GPIO x50 (UART, SPI, I2C, I2S, PWM, etc) / ADC x5 |
Подключение SD |
SDMMC |
Подключение дисков |
PCIe x4 Gen2 |
USB устройства и модули |
Type-C / USB 3.1 / USB 2.0 x2 |
Дисплеи и камеры |
MIPI TX x4 / RX x4 / TX-RX x2 / eDP |
Сброс / Питание |
Reset / Power Enable / 5V |
Конструкция вычислительного модуля - это многослойная печатная плата, производство, сборка и начальное тестирование которой, рассчитано на контрактное производство - EMS (Electronic Manufacturing Service) provider:
На модуле размещены только самые необходимые компоненты для работы системы: процессор, оперативная память, eMMC и NOR флэш, а также PMU / PMIC (контроллер питания и DC/DC преобразователи). Никаких WiFi модулей, SD карт, Ethernet Phy и т.д.
Почему? - Ответ прост:
В наше время некоторые чипы достать очень сложно, то что есть на стоках сейчас, может пропасть на долгое время в любой момент. По сути, модульность конструкции - это вынужденная мера на тот случай, если нужного компонента не окажется в наличии, и тогда проще будет заменить один модуль, а не всю систему.
С другой стороны, благодаря модульности всегда можно “прокачать” устройство в нужную сторону. Например, сейчас мы планируем дополнительно разработать ещё два вычислительных модуля, один с увеличенным объемом памяти, а другой с ECC для аппаратной поддержки ZFS.
Все вычислительные модули будут совместимы как конструктивно, так и в части электрического подключения (есть такая надежда), и замена одного модуля на другой пройдет безболезненно.
Есть еще один момент в пользу выбора модульного дизайна. Многие используют контроллеры определенных производителей: JMicron, Marvell, ASMedia и т.д. В случае модульного дизайна и стандартного разъёма, у пользователей будет возможность подключить свой контроллер. К примеру, на рисунке представлены варианты контроллеров PCIe / SATA Bridge на 5 и 6 дисков фирм JMicron и ASMedia (качество скринов не очень, в нашем распоряжении пока только один контроллер M.2 и тот в работе):
Несущая плата
В качестве конструктива несущей платы начального уровня был выбран nano-ITX с размерами 120мм x 120мм. Это на 50мм меньше чем mini-ITX по каждой стороне.
На плате размещен минимальный набор компонентов и разъемов как для подключения внешних устройств, так и для модулей. Для примера, ниже показана структурная схема несущей платы с установленными модулями резервного питания - UPS, контроллером дисков с разъемом M.2 и модулем сетевого адаптера 2.5GbE:
Спецификация несущей платы:
Название |
Характеристика |
Тип разъема |
Вычислительный модуль |
ARM |
SODIMM 200-pin |
Подключение USB / Type-C |
DisplayPort Alt Mode 2x USB2.0 2x USB3.0 Front Panel 2x USB3.0 |
Type-C PD Pin Header 2x5 Twin USB Type A Pin Header 2x10 |
Сетевое подключение |
100 / 1000 Ethernet |
RJ45 |
Контроллер дисков |
PCIe Gen2 x 4lanes |
M.2 key M |
Дисплей / камера |
DisplayPort MIPI CSI / DSI MIPI-CSI MIPI-DSI |
DP FPC-30 FPC-30 FPC-30 |
Низкоскоростная периферия |
I2C I2C / UART / SPI ADC 4-channel |
Pin Header 1x6 Pin Header 2x5 - UEXT Pin Header 1x6 |
Консоль |
USB / UART |
Type-C |
Аудио вход / выход |
Кодек ES8388 |
|
Основное питание |
12В |
Mini-DIN / ATX 4-pin |
Несущая плата сейчас активно разводится, при этом все основные разъемы для подключения кабелей и модулей уже расставлены:
Firmware контроллеров
Понятно, что лёгкость смены одного контроллера на другой с таким же интерфейсом подключения, всего лишь миф. На практике разработчики встраиваемых систем могут столкнуться с массой проблем как в железе, так и в софте. Это может быть не только сложность написания драйвера, но и возможное отличие протоколов обмена. Несмотря на все стандарты, очень часто производители не полностью поддерживают все разрешенные варианты.
В этом случае должен быть некий референсный набор железа с известными багами, которые закрываются грамотной техподдержкой.
Например, контроллеры PCIe и SATA, о которых рассказывалось выше, не работают нормально, если при включении питания они не будут проинициализированы либо из локальной EEPROM, либо по SPI. Причем последовательность команд инициализации чаще всего известна только производителю. Среди этих команд есть очень специфичные, касающиеся процедуры тренинга линков перед началом работы. Если этот тренинг не пройдет успешно, то нестабильная работа на высоких скоростях практически гарантирована.
Мы уже столкнулись с нестабильной работой одной из новых плат с SATA Multiplier, на которой производитель попросту не обновил конфигурационную EEPROM. В результате регулярно терялся линк на произвольном SATA диске.
Пришлось на время отложить тесты с этой платой и обращаться в поддержку с просьбой выслать рабочую конфигурацию. Хотя можно было бы скопировать эту конфигурацию из рабочего контроллера самостоятельно, благо такой был.
На практике очень сложно поддерживать все возможные варианты контроллеров, а тем более отслеживать качество прошивок. В этом смысле, открытый дизайн хорош тогда, когда он ограничен проверенными железками.
Проверка концепции
Очевидно, что проверять концепцию следует в самом начале перед стартом основных работ. В этом плане мы тоже не исключение, поскольку заранее начали проводить тесты с железом, для чего собрали несколько прототипов NAS.
У нас не было особых ограничений по стоимости прототипов, поэтому, мы не экономили. В результате получилось собрать три прототипа. Два из них, собраны на одинаковой платформе ARM - процессоре RK3588, но только с разными вариантами подключения дисков. Еще один прототип NAS мы собрали на x86 материнке с процессором Core i3, где диски подключались стандартно к чипсету.
С помощью этих трех прототипов мы планировали провести и потом сравнить результаты тестов производительности NAS. Также мы хотели оценить возможные проблемы, связанные с работой дисков при их подключении через SATA Multiplier и PCIe / SATA Bridge.
Характеристика |
x86 Mini Server |
RK3588 19” |
RK3588 Mini Server |
Процессор |
Core i3-10100 |
RK3588 |
RK3588 |
Память |
DDR4 - 8ГБ |
LPDDR4 - 16ГБ |
LPDDR4 - 16ГБ |
Материнская плата |
|||
Контроллер SATA / чипсет |
Intel H510 |
PCIe / SATA Bridge |
SATA Multiplier |
Поддержка SATA PMP |
нет |
да |
да |
Количество дисков NAS |
4 |
5 |
4 |
Модель дисков |
Toshiba P300 |
Toshiba P300 |
|
RAID |
5 |
6 |
5 |
Системный SSD M.2 |
NVME |
SATA |
SATA |
ОС |
Debian 11 |
Armbian / Debian 11 |
Armbian / Debian 11 |
ПО для NAS |
OMV6 |
OMV6 |
OMV6 |
Сборка прототипов для проверки концепта
Сборка NAS на x86 никаких трудностей не вызвала, все четыре диска были подключены к разъемам на плате:
Особой необходимости в NAS на x86 не было, хотели просто оценить разницу в производительности между x86 и ARM.
Сборка второго и третьего NAS на ARM процессорах также прошла относительно просто, благодаря стандартной плате формата mini-ITX. В одном из них диски были подключены к плате PCIe с контроллером PCIe / SATA Bridge JMB585:
Для этого NAS был специально собран прототип модульного UPS, состоящий из модуля контроля и модуля батарей 2S2P. В основу конструкции UPS легла идея, подробно изложенная в нашей предыдущей статье:
В третьем прототипе NAS на базе ARM процессора, диски были подключены в разъемы, расположенные на самой плате. В качестве контроллера на плате установлен чип JMB575 - SATA Multiplier на 5 дисков, который подключен прямо к процессору также через SATA интерфейс:
В этом NAS был размещён наш первый прототип UPS с интегрированной батареей 2S1P:
Первые результаты
Смоук тест всех трех NAS прошел успешно. После этого на все три прототипа был установлен Debian 11 / Armbian, поверх которого мы установили openmediavault. Но обнаружилась одна проблема со стабильной работой дисков хранилища на прототипе с SATA Multiplier.
Диски, подключенные к контроллеру SATA PMP спонтанно “терялись” и вновь “находились”, при этом скорость линка снижалась доходя с 6Гб/с до 3Гб/с и даже 1.5Гб/с. Причем, чем выше нагрузка была на диски, тем чаще происходили такие события:
[ 886.887645] ata1.04: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[ 886.887649] ata1.04: failed command: WRITE DMA
[ 886.887658] ata1.04: cmd ca/00:01:08:00:00/00:00:00:00:00/e0 tag 20 dma 512 out
res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[ 886.887662] ata1.04: status: { DRDY }
[ 888.097425] ata1.15: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[ 888.408754] ata1.00: SATA link down (SStatus 0 SControl 310)
[ 888.408828] ata1.01: hard resetting link
[ 888.718265] ahci fe210000.sata: FBS is disabled
[ 888.874071] ahci fe210000.sata: FBS is enabled
[ 888.874600] ata1.01: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[ 888.874642] ata1.02: hard resetting link
[ 889.185254] ahci fe210000.sata: FBS is disabled
[ 889.344063] ahci fe210000.sata: FBS is enabled
[ 889.344648] ata1.02: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[ 889.344690] ata1.03: hard resetting link
[ 889.655095] ahci fe210000.sata: FBS is disabled
[ 889.810750] ahci fe210000.sata: FBS is enabled
[ 889.811339] ata1.03: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[ 889.811381] ata1.04: hard resetting link
[ 890.122080] ahci fe210000.sata: FBS is disabled
[ 890.280720] ahci fe210000.sata: FBS is enabled
[ 890.281310] ata1.04: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[ 890.592159] ata1.05: SATA link down (SStatus 0 SControl 310)
[ 890.901819] ata1.06: SATA link down (SStatus 0 SControl 310)
Мы предположили, что проблема могла быть в начальной конфигурации контроллера JMB575 - SATA Multiplier. Дело в том, что после подачи питания, контроллер считывает конфигурацию внутренних регистров из локальной EEPROM, и если, к примеру, эти данные отсутствуют, то работа линков SATA может быть нестабильной.
Проверку этой гипотезы отложили до лучших времен, а для того чтобы понять, что чип JMB575 в принципе работает нормально, мы подключили внешний адаптер с таким же контроллером к прототипу x86:
В этот момент пришло осознание того, что в действительности не все чипсеты с контроллерами SATA, выпускаемые Intel и другими фирмами, поддерживают SATA Port Multiplier. В нашем случае, чипсет H510 не поддерживал эту функцию. Контроллер SATA видел только один диск из четырех, при этом на произвольном порту. К слову, функция SATA PMP не является обязательной.
Так что пришлось подключать SATA PMP адаптер к другому прототипу, но уже в один из портов PCIe / SATA Bridge адаптера. На слух звучит запутано, поэтому, приведу схему тестирования для этого случая:
Выглядело такое подключение следующим образом:
Так как на этом прототипе уже был поднят RAID6, то после загрузки сразу удалось убедиться, что проблем с дисками нет и контроллер JMB575 на этой плате работает нормально.
После обсуждения пришли к выводу, что необходимо связаться с техподдержкой производителя и решить с ними вопрос, касающийся стабильной работы контроллера JMB575, установленного на материнской плате. Хотя можно было бы и содержимое рабочего EEPROM скопировать и перенести на проблемную плату.
Итоги
Результат, который мы получили, вполне нас устроил, так как мы столкнулись с типичными проблемами и особенностями интеграции различных контроллеров с целью создания массива дисков. В добавок, проверили теорию на практике. Если бы всё прошло гладко, то не факт, что в следующий раз мы не столкнулись бы с подобным, а так уже будем готовы.
Основные итоги проверки концепта в части создания дискового массива приведены в таблице:
Название |
Результат |
Общая проверка SATA Multiplier |
В целом работает Необходима начальная конфигурация чипа от производителя |
Поддержка SATA Multiplier в чипсетах и HOST контроллерах |
Необходимо смотреть на поддержку данной функции в контроллерах SATA, без этой поддержки применение SATA Multiplier невозможно |
Общая проверка PCIe / SATA Bridge |
Работает без вопросов Не требует особой поддержки со стороны Root контроллера PCIe |
Проверка PCIe / SATA Bridge в режиме PMP |
Успешно проверен в режиме работы PMP с подключенным SATA Multiplier |
Предварительные тесты производительности дисковых массивов для ARM процессора c PCIe / SATA Bridge контроллером и референсной платформы x86 на чипсете H510 представлены в следующей таблице:
Название теста |
RK3588 19” / 5 дисков / RAID6 |
x86 Mini Server / 4 диска / RAID5 |
fio RANDOM 4k READ |
5168KiB/s (5292kB/s) |
4724KiB/s (4837kB/s) |
fio RANDOM 4k WRITE |
1000KiB/s (1024kB/s) |
981KiB/s (1005kB/s) |
fio SEQUENTIAL 512k READ |
624MiB/s (654MB/s) |
1626MiB/s (1705MB/s) |
fio SEQUENTIAL 512k WRITE |
216MiB/s (227MB/s) |
287MiB/s (301MB/s) |
В итоге, мы рассомтрели концепцию модульного NAS с открытой аппаратной архитектурой. Оценили возможные риски, связанные с применением различных аппаратных решений, в особенности контроллеров для создания дисковых массивов. Были представлены вычислительный модуль на ARM процессоре и универсальная несущая плата, которые могут быть испоьзованы для сборки NAS начального уровня. В конце оценили результы отладки и тестирования прототипов и показали, что разработка собственного NAS имеет достаточное обоснование.
Что дальше
Если вернуться к самому началу и посмотреть на этапы процесса разработки, то станет понятно, что мы находимся в стадии проектирования и во многом завершили предыдущие этапы декомпозиции и создания архитектуры.
Что необходимо доделать в первую очередь, так это завершить тесты производительности системы с различными способами подключения дисков. Часть этих тестов уже была проведена, как только завершим остальные, то обобщим результаты и расскажем, что из этого получилось.
В статье удалось рассказать только о части этапов, которые нам предстоит пройти. Например, осталась не раскрытой вся правая половина процесса разработки, связанная с интеграцией решений, тестированием и валидацией. Также есть отдельная и интересная тема промышленного дизайна.
В любом случае, если это интересно, то у нас есть канал, где мы публикуем новости, обсуждаем результаты и делимся своими идеями. Это значительно облегчает нам жизнь с точки зрения обновления уже проделанной работы и небольшого анонса о предстоящих планах.
Комментарии (46)
maledog
00.00.0000 00:00Никогда не понимал всей этой идеи с NAS. Что кроме габаритов мешает превратить в NAS обычный компьютер, и не иметь проблем с ремонтом в дальнейшем?
sdy Автор
00.00.0000 00:00+3Так NAS тоже компьютер, но для специфических задач
maledog
00.00.0000 00:00Для каких? Вот я собрал компьютер с несколькими жесткими дисками и накатил OMV. В чем преимущество NAS?
Вот у меня валяется несколько лет NAS на miniITX. После того как блок питания сгорел, я просто не нашел подходящий по размерам. Я собирал его так как думал, что он будет менее шумным и можно будет раздавать торрент ночами. Но на практике - малогабаритный корпус требует лучшее охлаждение, так что вентиляторы на максимуме работают. Малый вес корпуса способствует усилению шума от вставленных в него жестких дисков, если он металлический или перегреву этих дисков если он пластиковый.
sdy Автор
00.00.0000 00:00+2Вы используете компьютер как для игр, работы, общения, так и для OMV. NAS для игр вряд ли используют, ну разве что сервер для Майнкрафта поднять можно. Ну это как каклькулятор карманный и ноутбук сравнивать.
maledog
00.00.0000 00:00Нет. У меня есть NAS. Просто это обычный комп с Linux и двумя дисками в RAID1(если нужно я могу туда добавить еще 3-5 дисков и развернуть RAIDZ). Я не вижу смысла в разработке под эти цели специального железа, если оно не имеет преимуществ перед обычным компом.
При этом я могу обновлять свой "NAS" после каждого обновления своего компьютера просто переставляя туда устаревшее оборудование.
sdy Автор
00.00.0000 00:00+2Так я и не спорю, вариантов NAS бесчетное множество. Каждый делает так как хочет. Смысл открытой платформы в том, что можно будет позаимствовать какое-нибудь решение из готового пула. Ну а дальше, вы берете и собираете то , что понравилось.
maledog
00.00.0000 00:00Сейчас я склоняюсь к тому, что неплохим решением для домашнего NAS будет просто старый ноутбук у которого вместо DVD установлен дополнительный жесткий диск. Шум минимальный. Производительность зависит от от железа. Знаю место где за 20-25 т. р. 1000 можно купить б/у Lenovo c i5 3-5 поколения и 4-8 гигабайтами оперативной памяти.
На Avito конечно же можно накопать и нечно совсем дешевое, но уникальное, но для этого нужно разбираться в железе (что я умею) и знать условия эксплуатации (что конечно потребует разборку ноутбука).
Fox_exe
00.00.0000 00:00+3Ключевые отличия NAS'а от "Файлопомойки из обычного компа" - это софт и железо, изначально заточенное только под задачи файлохранилища.
Если посмотреть в сторону тогоже Synology - Там и удобный интерфейс имеется и проц имеет аппаратные SATA порты, либо выделенный RAID контроллер, и габариты самой "коробки" весьма скромные, и вентиляторы тихие и прочие радости... За весьма нескромный бюджет :(
* Речь про домашний и офисный сегмент.Лично я купил себе на алике плату с Celeron'ом на борту (N5105) и 6ю SATA портами, запилил под это дело корпус, распечатанный на 3D принтере, понапихал туда SSD дисков (2,5") и получил вообще бесшумный NAS, весьма скромных размеров.
А главное - туда без проблем поставил ProxMox, внутри которого уже разворачивал все остальные сервисы, какие нужны.
Вся эта радость, с учётом 4х SSD дисков "Кушает" 10-15 ватт в простое и до 80 в пике.sdy Автор
00.00.0000 00:00+2Все эти аппаратные RAID, зачем они вообще нужны. Контроллер сдох и привет, без него RAID можно и не восстановить, даже если такой же найти. Аппаратные контроллеры себе в мозги что то пишут, если эту инфу посеять, то RAID можно смело в топку. Вот софтовый это другое дело, главное за температурой следить и диски менять периодически, желателльно все и сразу.
maledog
00.00.0000 00:00+1Часто все же можно восстановить. Например linux умеет читать структуру intel soft-raid. Кроме того, контроллеры одного производителя умеют подхватывать raid созданный до них. Часто RAID на контроллерах Adaptec можно считать на другом контроллере Adaptec и тоже самое с Intel. Иногда мне помогало создание нового массива поверх старого на том же контроллере. Но конечно аппаратный RAID проигрывает по надежности программному, если нет backup unit(флэш или батарейка, или и то и другое).
А вобще дешевые аппаратные RAID это от бедности. Ну не умеет Windows программный RAID нормально до сих пор. Потому приходится извращаться. Я вот в свое время навозившись с windows и intel soft-raid или intel RAID аппаратный, но за 1000$, понял что для отказоустойчивости проще XEN/KVM + linux RAID, а уже внутри виртуальной машины windows. И по производительности небольшой проигрыш и по времени восстановления в 10 раз меньше чем первое решение.sdy Автор
00.00.0000 00:00+2Я не спорю, все можно восстановить при желании, но аппаратный рэйд для нашего случая не вариант. В принципе есть бюджетные контроллеры, даже на USB3.2, которые умеют создавать RAID 0,1 из двух дисков, но нам это не подходит, по причине ненадежности такого решения.
AquariusStar
00.00.0000 00:00Да, у меня на одном старом NAS оказался программный массив. При переносе дисков на новый сервер Linux без проблем прочитал полную структуру и потом представил как один массив. Несмотря на то, что они сидели на отдельных SATA-контроллерах. Потом OMV 6 каким-то образом всё испортил, перестав воспринимать как один массив. Но диски остались читаемыми, что спокойно и перетащил данные.
DaemonGloom
00.00.0000 00:00У вас какие-то странные сведения об аппаратном рейде. Ничего они себе в мозги не пишут. Если у вас умирает, условный контроллер от HP, то ваши действия будут:
1) Взять новый контроллер того же поколения или новее
2) Воткнуть в него диски
Всё, дальше он сам прекрасно найдёт этот массив.sdy Автор
00.00.0000 00:00Возможно, у меня был печальный случай, когда рэйд, встроенный в материнку помер, а я не смог найти такой же контроллер, да и мамки не оказалось в наличии.
maledog
00.00.0000 00:00Если посмотреть в сторону тогоже Synology - Там и удобный интерфейс
имеется и проц имеет аппаратные SATA порты, либо выделенный RAID
контроллер, и габариты самой "коробки" весьма скромные, и вентиляторы
тихие и прочие радости...А потом Synology забил на обновления или вовсе развалился и у вас в руках неподдерживаемая железка. И что-то мне подсказывает, что "вентиляторы тихие", это если производительность от NAS не ожидается или в ущерб ресурсу HDD.
ash_lm
00.00.0000 00:00Вы видимо не пользовались продукцией Synology. Лично у меня (и не только) от неё только положительные впечатления.
А потом Synology забил на обновления или вовсе развалился и у вас в руках неподдерживаемая железка .
А если Intel / AMD / Microsoft / Apple / etc развалились, а Илон Маск улетел на Марс?
sdy Автор
00.00.0000 00:00+1Не, ну Китай то останется. Не знаю как в других отраслях, но по микроэлектронике с ними можно договориться. Сейчас практически все дистрибьютеры переключились на Китайский рынок чипов.
maledog
00.00.0000 00:00А я и не топил за вендорлок. Если у меня в NAS Debian, и уцелели хотя бы жесткие диски, то скорее всего я в кратчайшие сроки подниму его на любом железе, если оно архитектурой не отличается. Посмотрим как вы будете выковыривать из Synology скажем пользователей с паролями. Хорошо, есть бэкап, но где гарантия что данная модель еще выпускается?
Ситуации бывают разные. Однажды мне пришлось восстанавливать оборудование после пожара. Мы буквально мыли материнские платы от копоти. Еще раз мне приносили ноутбук который в автокатастрофе побывал. А еще у меня лет пять работал сервак intel у которого корпус не закрывался так как штатный блок питания сгорел и пришлось прилаживать ATX, так как модель давно была снята с производства.
В моем понимании, чем проще и доступнее найти деталь для ремонта, просто заглянув в ближайший компьютерный магазин, тем лучше. Пример, однажды 31 декабря у меня сдох блок питания в домашней файлопомойке и я рисковал остаться на новый год без коллекции музыки и фильмов, ничего вопрос решил просто сбегав в ближайший магазин. Вот такой в моем понимании должен быт NAS. Если он при этом еще не будет жрать много энергии, то это в плюс, но не в ущерб производительности.sdy Автор
00.00.0000 00:00+1Это частично верно для x86 платформы, в случае с ARM платформой, на которую мы ориентируемся, в магазе ее так просто не купить.
xSVPx
00.00.0000 00:00+1В любом случае вы получите систему, которую кто-то спроектировал не исходя из ваших требований.
Проще продать компактный nas. И он будет именно таковым. То, что в условиях серверной с +18 вполне рабоче в условиях home превращается в компактную печку для hdd.
Компактнее и красивее, когда фильтров на притоке нету. И вот уже через полгода вы выгребаете тонны пыли из своего наса.
Итд итп.
Мне достался не синоложи, но вполне брендовые нас. Развернул. Поставил. Залил данные. Работаю. Обращаю внимание на то, что веб интерфейс еле живой. Загрузка cpu 100%. Копаю. Копаю. Копаю. Логинюсь в консоль. Разбираюсь.
Результат: даже если отключить все галки в чудесном веб интерфейсе этот кусок пропиетарного говна продолжает создавать какие-то иконки для эпл тв что-ли, фиг знает. Он создаёт миллионы файлов. Засирает диск, сжирает производительность, вырабатывает ресурс хардов. Он месяц их насиловал в попытках все это сделать. К счастью, из консоли удалось это все убить. Зачем мне веб интерфейс, если он работает так, как описано сверху ?
Тысячу раз уже пожалел, что с этим всем связался(досталась даром железка). Былоб дешевле купить новое железо стандартного размера и на нем все поднять. Времени куча просрано и нет никакой уверенности в будущем...
beho1der
00.00.0000 00:00+1А не думали над ethernet 10Gb для NAS это очень актуально сейчас?
ciuafm
00.00.0000 00:00+1Тут поддерживаю. Раз уж вы начали тестирование, обязательно нужно рассмотреть 10Gbps сеть. Т.к.ставить NVMe на гигабитную сеть - это верх расточительства.
+Опция m.2 WiFi для любителей протатива.
+Опция mini-pci разъема для WiFi для бережливых
+Опция 10 Gbps хаба, или как минимум вариант 1х10Gbps + 1Gbps hub гнезд на 5-8. Можно навесить опцию роутера, тогда минимум 3 порта ethernet 10 +1+1(отдельный аплинк) или даже 10+1+0.1(отдельный аплинк)
+Опция pci-e хаба для подключения нескольких NVMe, пусть даже с софтовым зеркалом.
sdy Автор
00.00.0000 00:00+1Насчет 10G надо считать, потому что бюджет железа чую подскочет. Еще непонятно как с производительностью проца будет. Тут все таки процы для встройки.
WiFi на USB3 планировали.
PCIe switch в планах был, но это тоже тема не очень чтобы простая. Броадком теперь нам коммутаторы PCIe не отгружает, да и раньше только под большие проекты соглашались.
sdy Автор
00.00.0000 00:00+210G пока дорого. Осваиваем 2.5G, с ним проблем вроде нет.
AquariusStar
00.00.0000 00:00Можно оставить задел на переход. Я так и сделал. Сейчас у меня сервер имеет соединение 2.5G. Осталось только сетевой адаптер подключить. Коммутатор уже умеет в 10G.
sdy Автор
00.00.0000 00:00+1Прикинул варианты.
Подключать сетевой контроллер 10G на PCIe в принципе можно, но это минимум 2 лэйна надо занимать, а они у нас все посчитаны.
Самый подходящий - это USB3.2 (Gen2) в PCIe x2, далее ставим сетевой контроллер 10G. Только это не бюджетно.
Ну т.е. сделать можно, но это прям для особо продвинутых случаев. Мы пока ориентируемся на начальные / базовые конфигурации железа.
AquariusStar
00.00.0000 00:00+1Именно поэтому я и выбрал вариант на AMD с 35 Вт потребления. Можно менять конфигурацию железа по мере необходимости. Поэтому может спокойно вывозить все 15 дисков, не считая NVMe накопителей. (В реальности может больше, просто корпус может вместить только 15 дисков). Ещё на полновесный 10G останется. Там главные 16 линий свободны. Пока работает на встройке, которая есть на материнской плате.
Сидел некоторое время на Raspberry Pi 4. Узким местом оказался USB 3.0 и Ethernet. Если перекидывать файлы с диска на диск, которые сидят на одном USB (а там ещё торрент крутится и на приставке фильм крутится), то получается реальный напряг с этим. Ещё пахали вместе с ним ещё тройка NAS-серверов на базе ARM и PowerPC. Поэтому и было главной задачей собрать все диски этих серверов в одном сервере. Слишком много шума от них.
P.S. Я смотрю, вы используете OMV 6 в качестве ПО. С ним надо быть осторожным в плане обновлений. Обязательно что-нибудь отвалится. У меня так доменное имя сервера во всех машинах не отображается (даже на Андроидах). Только IP-адрес показывает. Только Windows 10 через некоторое время может достучаться до имени. А в начале всё работало нормально.
sdy Автор
00.00.0000 00:00+1Не, мы пашем целенаправленно в сторону ARM процессоров для встройки, для устройств типа NAS это самое то. Хотя RPi тоже ARM, но насколько я помню у него всего лишь один лэйн PCIe и тот Gen2. Так что по сравнению с этим отличным процессором, те варианты чипов, на которые мы делаем ставку, обладают существенно лучшими возможностями. Как минимум это 4 лэйна PCIe Gen2, а для процессора в прототипах - 3 комбинированных лэйна с возможностью PCIe Gen2 и отдельный PCIe Gen3 Root c 4 лэйнами да в добавок с поддержкой разделения. Так что в этом плане мы ничем особым не ограничены.
Кстати, что касается разделения, то не все чипсеты x86 его поддерживают. Так что в этом плане у нас есть отличное преимущество в плане расширения возможностей PCIe.
AquariusStar
00.00.0000 00:00Ну если у вас устройство покрывает ваши задачи, то почему бы и нет. Я просто исходил из того, что могу так или иначе применить сервер для ряда задач (если изменятся потребности) в будущем и могу использовать как можно больше дисков, чтобы не иметь кучу мелких серверов, коих у меня расплодилось. На сервере тоже используются платы расширения (на базе ASM1166). Главное, чтобы они могли обеспечить гарантированную работу одновременно с двумя дисками без снижения скорости, как это было на малинке с USB 3.0, где скорость падала. Ваш вариант для меня слабоват в плане количества доступных линий PCIe в процессоре. Если было бы 8 или 16 линий, то можно было бы рассмотреть. А поскольку ни один ARM процессор не предложил вариант с таким количеством линий, выбор для меня был очевидным.
sdy Автор
00.00.0000 00:00Дело не только в количестве лэйнов, надо ещё смотреть можно ли разделять шину чтобы была возможность подключения независимых контроллеров.
Goron_Dekar
00.00.0000 00:00+1А можно к тестам добавить скорость чтения/записи с windows компа через samba?
Я чаще всего упираюсь именно в производительность samba server, а не в sata. И как тут себя поведёт arm не очень понятно.
DAzgluk
00.00.0000 00:00+1Посмотрите на https://www.kickstarter.com/projects/storaxa/fully-customizable-home-cloud-storage-with-remote-access-nas/description
В частности вот их решения в контексте PCI-E лиинй. https://drive.google.com/drive/folders/1Crz6dTwEf3t_Sp23xlDgZDfYvguz8Zo8
Немаловажным так же считаю рассмотреть возможность поддержки ECC памяти, раз уж мы говорим о системе хранения данных, то bit flips могут быть опасны.
sdy Автор
00.00.0000 00:00Ага, очень близкие решения. Спасибо за линк. Тоже PCIe / SATA Bridge для SATA дисков и коммутатор PCIe на ASM2812 для NVME массива. Как раз вчера на asmedia смотрел. Хотя по ссылке x86, но с точки зрения подключения дисков у нас очень похожая архитектура. Ryzen 7 у них, без поддержки ECC. Насколько я знаю только Pro версия поддерживает ECC.
PwrUsr
00.00.0000 00:00+1Имхо:
SATA Multiplier - тупик.
ARM - тупик.
СЕТЬ меньше 10 гига - тупик.
почему ? - да потому что этого всего как грязи уже. кому нежен "НАС - включил и забыл" , возьмут готовый от того же Вестерна или еще кого и никакая модульность ему не нужна.
кому нужна модульность - соберут на любом писюке НАС и добавят туда что захотят...
я собрал много НАСов на писюках
чего мне не хватает "в модульности" это обычных линий PCI-E
в идеале НАС должен иметь где-то 3 штуки х8 (минимум 2х8+4) если у него нет встроенных контроллеров типа 10 гига и/или SAS...
далее - SATA кабели - дичь дикая, нет для двух дисков норм, но больше - желательно тот же SATA выводить через SFF-8087 или MiniSAS конектор
на а SAS2008/3008 - контроллеров как грязи и в том числе "маленьких" на 1 порт...
и кстати вот они маштабируются вообще без проблем (как USB) в отлисии от SATA
питание - многие диски умею не запускатся при отсутсвии 11го пина на питании (не все, да, но многие) - потому у SATA Power 11й пин должен висеть в воздухе
ну и наконец самая боль - корпус... увы пока даже китайцам не удалось сделать идеальный (для меня корпус):
MicroATX c 3мя PCI-E , с обычным блоком питания и с хотсвопами (можно даже не хот свопы а по типпу новых MiniProliant - оно не хотсвоп (хотя дурнуть можно), на зато занимает меньше места так как без корзин....
sdy Автор
00.00.0000 00:00Спасибо, кстати, за конструктивную критику.
Модульность PCIe - это как раз то, за что мы будем бороться. Тем более что чипы, на которые мы делаем ставку, обладают возможностью разделять общую шину на несколько соединений.
Не очень понятно зачем NAS такие широкие шины PCIe как x8. В варианте PCIe / SATA bridge как правило используется только два лэйна. Если Root не поддерживает bifurcation, то при подключении к любой шине контроллера, который использует только два лэйна, все остальные лэйны окажутся бесполезными.
Что касается корпуса, тут я с вами частично соглашусь, хотя Jonsbo предлагает довольно удачные корпуса для NAS на 5 дисков. Они хорошо смотрятся и система охлаждения у них продумана.
Хот своп - это обязательная фича в нашем концепте. В добавок мы будем еще размещать на отдельном бэкплейне для подключения дисков спин контроллер. Кстати говоря, многие так делают.
Насчет подключеня бэкплейна, на мой взгляд лучше SFF-8643 ничего не придумать. Почему? - потому как дешево и сердито.
PwrUsr
00.00.0000 00:00Еще раз напомню - у меня большой опыт именно самосбора, отсюда у меня разумеется есть перекосы:
зачем х8 ? затем что в самосборе как правило используется б/у серверное оборудование и самая дешевизна это SAS2008 и Mellanox Connectx-2, они на PCI-E v2 и разумеется их можно воткнуть в х4 и даже х1 (я пробовал - работает) - но физически они х8 а если делать слоты х4 они не влезут
так что поправочка - физически слоты должны быть х8... для совместимости и модульности, линий конечно может быть и 4 и 1...
насчет хот-свопа:
хот-своп вещь хорошая, но удорожает (покрайней мере в самосборе) - есть, как я писал выше, полухотсвоп - как на MiniProliante - для SOHO где есть какой-то аникейщик думаю это не проблемма - всё таки диски не часто меняются... но опять же всё от цены зависит...
насчет корпусов:
SOHO и домашнии НАСы имеют один нюанс, мы счас не рассматриваем 2дисковые варианты с зеркалом:
этот нюанс заключается в том, что в большенстве случаев "на полочке не лижит запасной диск" я уже не говорю про хот-спаре, именно из-за цены... потому надо четку определится с избыточностью, имхо опять же для ценных данных (бэкап это конечно хорошо, но в 90+ % случаев НАСы никто не бэкапит) и если НАС хотя бы на 4 диска, то это скорее всего RAD5/RAIDZ1 , и при вылете диска остается страйп... потому корпус на 5 дисков не туда не сюда, для "большого" домашнего/СОХО НАСа , имхо это 6 дисков минимум (4+2) или больше...
и вот тут с корпусами проблемаа....
а так же проблемма с бэкпленом - так как "SAS конекторы" это 4 диска или 8, а 6 как-то по середине проваливается
в конце фотка полу-хотсвопа на микросервере g10 кажется... (только что сфоткал, диск просто для примера - IDE туда не ставится :) )
sdy Автор
00.00.0000 00:00Насчет 11 пина, на всех пинаутах, которые я встречал, про это ничего не говорится. Это земля вроде как. Нашел только вот такое. Странное объяснение. Надо будет разобраться, какие еще варианты кроме земли могут быть.
dartraiden
00.00.0000 00:00Про одиннадцатый тоже ничего не встречал. Третий — да, может доставлять проблемы, если накопитель поддерживает SATA 3.3, а блок питания нет.
DAzgluk
00.00.0000 00:00Из того что уже есть на рынке:
CWWK nas board, их там две, на базе n6005 и j6413
От них же есть готовое решение AIO-T6
Ещё есть одноплатники от hardkernel odroid. У них есть решения как на arm, так и на x86
В целом ниша интересная конечно, но конкурировать придется например с terramaster f4-423
sdy Автор
00.00.0000 00:00За ссылки спасибо, всегда приятно посмотреть на готовые решения.
Не вижу проблем с конкуренцией, так как это рынок готовых решений. Чисто пошел и купил.
С другой стороны купить нечто готовое и пересобрать его для себя вряд ли кто этим будет заниматься. Такому проще поискать открытые проекты, посмотреть на разные варианты и собрать кастомный дивайс. Вот для таких мы и собираемся двигать наш проект.
torgeek
Любопытный проект у вас получается. Чем-то напоминает проекты модульных открытых ноутбуков MNT Reform и Framework.
Но не видно в какие вычислительные нагрузки вы целитесь. Кто/что будет потребителем ваших устройств? Какие задачи, какой софт окажется в выигрыше от применения вашего открытого решения? В чем сила? :)
sdy Автор
Основной сектор - это SOHO (Small Office Home Office), там где нет высоких нагрузок, процессоры ARM, которые мы хотим испоьзовать ориентированы на встраиваемые приложения, в которых баланс потребление / производительность склоняется больше в сторону малого потребления. Если сравнить TDP x86 c нашими ARM, то это как минимум порядок разницы в потреблении. Софт -- Armbian + openmediavault. Сила в правде. Собираем NAS как лего -- что хотим, конфигурацию дисков, устройства внешние, адаптеры сетевые, камеры, дисплеи, то и собираем. Не забываем про корпус, в готовых NAS с корпусом уже ничего не сделать, а тут будет куда развернуться.
Goron_Dekar
В SOHO часто надо быстро положить отснятые RAW на диск, а потом прямо с него обрабатывать в Lightroom. И это очень сильно грузит samba server