Старший инженер-разработчик datapath
Описание
Мы ищем старшего инженера-разработчика 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"; Дружный и энергичный коллектив, где каждый находит поддержку и вдохновение; Активно развивающуюся корпоративную культуру, где ценят ваше мнение и инициативы.