Мы ищем старшего инженера-разработчика datapath в Nimbus. Вы будете развивать и сопровождать путь данных СХД — от фронтенд-протоколов через кэш и межконтроллерный обмен до интеграции с бэкендом хранения — и отвечать за его производительность, непрерывность при отказе контроллера и целостность данных.
О компании
Nimbus — производитель корпоративных систем хранения данных. Разрабатываем и выпускаем СХД уровня midrange: линейка «Гром» (гибридная архитектура, SAS-корзина с NVMe-кэшем) и «Молния» (all-NVMe). Обе линейки работают на собственной программной платформе «Юпитер»: блочный и файловый доступ (FC, iSCSI, NFS/SMB/FTP), снапшоты, клоны, репликация, метрокластер, дедупликация и компрессия, REST API.
Продукт вышел на рынок в 2025 году, сейчас идёт активная фаза роста: растёт число инсталляций и установленная база у заказчиков. Вместе с этим растут требования к производительности, стабильности под нагрузкой и совместимости с хостовым окружением — эта вакансия про то, чтобы отвечать за путь данных и развивать его.
О роли
Datapath — это код, через который проходит каждая операция ввода-вывода: от момента, когда запрос пришёл от хоста по FC, iSCSI или NVMe-oF, до записи на диск и ответа обратно. Сюда же входят кэш, обмен между двумя контроллерами и стыковка с бэкендом хранения. От этого кода зависит, сколько IOPS выдаёт система, какая у неё задержка и что происходит с данными, когда один из контроллеров выходит из строя.
Datapath уже написан и работает. Мы ищем разработчика, который будет его развивать: добавлять новые возможности, ускорять и разбираться, почему что-то работает не так.
Обязанности:
- Развивать datapath продукта: реализовывать новую функциональность на пути данных и дорабатывать существующую — от приёма запроса по фронтенд-протоколу до записи на носитель.
- Ускорять систему: находить, где на пути I/O теряется производительность — в коде, кэше, транспорте, адаптерах или дисках, — устранять это и подтверждать результат измерениями.
- Обеспечивать непрерывность обслуживания при отказе контроллера: зеркалирование write-back кэша между контроллерами, корректное переключение путей на стороне хоста, takeover/giveback, обновление без прерывания I/O.
- Гарантировать целостность данных: сквозная защита от искажений на всём пути, корректная обработка ошибок носителей, таймаутов и отмены запросов, поддержка резерваций для кластерных хостов.
- Сопровождать фронтенд-протоколы FC, NVMe-oF и iSCSI: совместимость с хостами, HBA, multipath и target стеком.
- Согласовывать datapath с транзакционным бэкендом хранения: блочные тома, кэш чтения, журнал синхронных записей, взаимодействие транзакционной модели бэкенда с write-cache контроллера.
- Разбирать инциденты из эксплуатации (L3): воспроизведение, анализ crash dump, поиск корневой причины, исправление.
- Писать design docs по своим направлениям, участвовать в ревью решений команды.
Технологический стек:
- Основной язык — С. В основном работа с модулями ядра Linux: block layer, собственные утсройства-обёртки над томами, очереди и completion bio, взаимодействие с SCSI target.
- Кэш записи — свой, в ядре: попадание и промах, отложенный сброс на бэкэнд, водяные знаки, поведение при живом и севшем батарейном модуле. Обмен по PCIe NTB.
- Экспорт томов — SCSI target (iSCSI и FC). Управление политикой кэша и жизненным циклом устройств через netlink, sysfs и служебные утилиты.
- Отладка: perf, трассировка, gdb, crash, fio, SCSI утилиты. Нужно уметь показать на каком уровне застрял запрос.
Требования:
- Уверенный С и несколько лет системного или низкоуровневого программирования: драйверы, сетевые или SCSI-стэки, файловые системы, storage engine.
- Понимание Linux block layer на уровне практики: как устроен запрос, как он дробится и завершается, что означают признаки синхронной записи и сброса кэша.
- Опыт работы с многопоточным кодом с разделяемым состоянием: очереди, блокировки, гонки между записью, чтением и фоновым сбросом кэша. Умение разбираться в чужом большом С коде и менять его точечно, а не «переписав модуль с нуля».
- Отладка сложных отказов: профилирование, разбор oops и дампов, воспроизведение с хоста.
- Английский B2: чтение спецификаций, письменная и устная коммуникация.
Будет плюсом:
- Практический опыт SPDK/DPDK (bdev, poll-группы, NVMe-oF target) .
- Storage-домен: протоколы NVMe, SCSI/FC, iSCSI; принципы HA-пары контроллеров — зеркалирование кэша, failover, многопутевой доступ с хоста, консистентность, журналирование.
- PCIe NTB: штатный стэк Linux или собственные реализации.
- Internals транзакционных файловых систем и volume-менеджеров (OpenZFS, Btrfs, bcachefs, LVM/dm): транзакционные группы, intent log, кэширование, блочные тома.
- Опыт разработки двухконтроллерных СХД.
- Взаимодействие datapath с cluster resource manager (Pacemaker/Corosync) при failover.
- Участие в open-source: SPDK, DPDK, Linux kernel (block/scsi/nvme), файловые системы и storage-стек.
Мы предлагаем:
-
Формат работы готовы обсуждать исходя из пожеланий соискателя;
-
Офис: БЦ West Plaza, ул. Рябиновая, д. 26с2 (корпоративный автобус от м. Славянский бульвар (в пути до офиса - 10-15 минут в зависимости от загруженности дорог);
-
График работы: 5/2 с гибким началом рабочего дня (08:00, 09:00, 10:00);
-
Сокращенная пятница на 1 час;
-
Уровень заработной платы обсуждается с успешным кандидатом;
-
Расширенный пакет ДМС со стоматологией, либо абонемент в фитнес-клуб "World Class";
-
Дружный и энергичный коллектив, где каждый находит поддержку и вдохновение;
-
Активно развивающуюся корпоративную культуру, где ценят ваше мнение и инициативы.