Старший инженер-разработчик datapath

Дата размещения вакансии: 14.09.2026
Работодатель: QTECH
Уровень зарплаты:
з/п не указана
Город:
Москва
Рябиновая улица 26с2
Требуемый опыт работы:
От 3 до 6 лет

Мы ищем старшего инженера-разработчика 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";

  • Дружный и энергичный коллектив, где каждый находит поддержку и вдохновение;

  • Активно развивающуюся корпоративную культуру, где ценят ваше мнение и инициативы.