Oxide Computer описала Voxel: целая стойка Oxide в эмуляции на одной машине

Автор поста, участник Product Assurance Team в Oxide Computer, начинает с проблемы: собранные стойки для тестирования достать трудно, они сразу уходят в дата-центры заказчиков. При этом команде нужно воспроизводить разные сетевые топологии клиентов, запускать настоящую плоскость управления, проверять свежие версии ПО и представлять аппаратные компоненты, включая коммутаторы и микроконтроллеры, причём без специальных «тестовых» релизов.
Сейчас для этого есть малые стойки racklettes: в каждой четыре сервера (sled) и два коммутатора. Они инициализируются и работают как настоящая стойка, потому что и являются настоящей стойкой, только в форм-факторе, невыгодном для продажи. Таких стоек четыре, скоро будет восемь. Есть и симуляции Omicron (плоскости управления Oxide), в которых отдельные части запускаются независимо и с разной степенью имитации.
Voxel (Virtual OXidE Labs), «духовный преемник» прежних виртуальных лабораторий a4x2, где стойки поднимали в виртуальных машинах. Главный принцип, по словам автора со ссылкой на формулировку Брайана Кантрилла, «Prime Directive» (основная директива): лаборатории должны использовать штатное ПО Oxide без хаков и модификаций. Voxel, полный программный стек эмуляции на illumos и Rust. Виртуализацию серверов даёт Propolis; сеть, BGP (с номерами и без) либо статическая, на Debian и FRR; коммутаторы с языком P4, через SoftNPU, программный P4-коммутатор Oxide; сервисный процессор (SP) и корень доверия (RoT) моделируются и эмулируются.
По размеру стенд скромный: у автора дома Voxel работает на мини-ПК Minisforum MS-A2 с 32-поточным AMD Ryzen 9 9955HX и 96 ГБ RAM. На нём без труда поднимается 6 серверов, как одна стойка либо как две отдельные стойки под одной плоскостью управления. Нужны лишь Oxide Helios и достаточно быстрый NVMe-диск. После запуска примерно за 10 минут получается полная стойка Oxide, где каждый сервер работает в своей виртуальной машине Propolis, рядом с коммутаторами (тоже в Propolis) и прочей инфраструктурой.
Создание образа. Сервер Oxide бывает обычным (gimlet в первом поколении, cosmo в нынешнем) или scrimlet, сервером, подключённым к коммутаторам sidecar и запускающим зону коммутатора. Для образа Voxel создают виртуальный «сервер», ставят на него Omicron и делают снимок до этапа конфигурации, получается готовый к запуску сервер. Omicron ставится двумя способами: из исходников (Voxel клонирует репозиторий с GitHub или берёт локальный источник и собирает через cargo) либо из TUF-репозитория (релизы упаковывает Tufaceous по Update Framework, сборку делает CI-инструмент Buildomat). В примере с TUF команда voxel image create извлекла 12 зон, 3 артефакта измерительного корпуса, образ хоста и прошивки SP/RoT; в итоге в логе значится unpacked_artifacts=18. Образ, это снимок zfs, который можно использовать многократно.
Запуск. Для старта нужны образ «frr» (виртуальные машины Debian для сети), образ плоскости управления и агент voxel-init, который выдаёт каждому виртуальному серверу задание. Команда voxel launch --emu генерирует тестовые ключи и сертификаты sprockets, поднимает флот из 4 эмулированных SP (прошивки Hubris записываются во флеш-образы), затем запускает узлы в Propolis, монтирует /opt/cargo-bay и поднимает маршрутизацию, включая NAT выхода стойки наружу. Текст материала в этом месте обрывается посреди лога запуска.
Ключевые факты
- Voxel (Virtual OXidE Labs), программный стек эмуляции на illumos и Rust, который запускает полную стойку Oxide со штатным ПО Oxide без хаков и модификаций.
- Эмулируются серверы (через Propolis), коммутаторы (через SoftNPU, программный P4-коммутатор), а также сервисный процессор (SP) и корень доверия (RoT); сеть строится на Debian и FRR.
- У автора дома Voxel работает на мини-ПК Minisforum MS-A2 (32-поточный Ryzen 9 9955HX, 96 ГБ RAM): 6 серверов без труда, полная стойка примерно за 10 минут.
- Образ создаётся из исходников Omicron или из TUF-репозитория и хранится как снимок zfs, пригодный для многократного запуска стойки.
- Рядом с Voxel остаются настоящие малые стойки racklettes (четыре сервера и два коммутатора каждая): сейчас их четыре, скоро будет восемь.
Почему это важно
Тестировать ПО для стоечного оборудования трудно: готовые стойки уходят заказчикам, а тестовые релизы «для CI» нечестны и усложняют конвейер. Voxel позволяет прогонять настоящую плоскость управления и свежие версии ПО на эмуляции, где даже коммутаторы и микроконтроллеры (SP и RoT) представлены программно, и при этом не отступать от принципа «штатное ПО без модификаций». Для Oxide это дополнение к четырём настоящим малым стойкам, которых скоро станет восемь.
Кому это важно
Прежде всего инженерам Oxide и команде Product Assurance, которым нужны воспроизводимые стенды для CI. Интересен материал и тем, кто строит тестовую инфраструктуру для аппаратно-программных систем: он показывает, как собрать виртуальную лабораторию, не подменяя настоящий стек его упрощёнными версиями.
Как это применить
Как заготовку подхода: делать снимок образа с уже установленной плоскостью управления до стадии конфигурации и многократно запускать на его основе стойку. Для Voxel, по описанию автора, нужны Oxide Helios и быстрый NVMe-диск; образ собирается командой voxel image create из исходников Omicron или из TUF-репозитория, а запускается командой voxel launch --emu. Цены и условий использования в доступной части материала нет.
Можно ли доверять
Материал написан сотрудником самой компании и описывает её собственный внутренний инструмент, то есть это взгляд изнутри, а не независимая проверка. Конкретные числа (6 серверов, около 10 минут, характеристики мини-ПК), наблюдения автора на его домашней установке, подкреплённые фрагментами логов. Оригинал виден не целиком: текст обрывается посреди лога запуска, поэтому финальные выводы автора не просматриваются.
Риски и подводные камни
Часть сведений, оценки автора на одном домашнем стенде, масштабирование за пределы 6 серверов в видимой части не описано. Voxel не заменяет настоящие стойки: по описанию, это инструмент рядом с racklettes и симуляциями Omicron. Из показанной части неясно, доступен ли Voxel за пределами компании, а требование Oxide Helios делает его не универсальным стендом.
«Лаборатории должны использовать штатное программное обеспечение Oxide без хаков и модификаций.»
— Автор поста из Product Assurance Team Oxide, по формулировке Брайана Кантрилла («Prime Directive»)