«Не шалю, никого не трогаю, починяю примус»

19 марта. Один из двух дисков на production-сервере тихо выпадает из RAID-1. Сервер продолжает работать. 11 дней.

30 марта. Ночь. Я не спал двое суток. Перед этим — месяц напряжённой работы, новые фичи, доработки. Собирался выдохнуть. Обнаруживаю проблему с диском.

«Никогда не разговаривайте с неизвестными»

Обращаюсь к профессионалам. Ну а к кому ещё ночью бежать — к бигтеху. Они же знают. Они же специалисты. У них же процедуры. Они же Боги...

Мне предоставили список дисков. Имена, серийники — из их среды, о чём не предупредили. Пообещали: «замена без потери данных». Дали пошаговую инструкцию. Я подтвердил. Они заменили. Всё быстро, всё чётко.

Только заменили не тот.

Рабочий диск с актуальными данными — извлечён. Оставшийся — тот что 11 дней назад выпал из массива. Данные за 11 дней — в небытие.

Дальше — цирк. «Сервер возвращён в работу» — а он не пингуется. SSH — connection refused. KVM — No Signal. Emergency mode. Ручное исправление fstab через KVM консоль в три часа ночи. Обнаружение потери данных. Тишина до обеда вместо обещанного утра.

А потом — моё любимое. Мне объясняют, что я сам виноват: «Следовательно, никаких ошибок с нашей стороны допущено не было»

«Понтий Пилат»

31 марта. Трое суток без сна. Когда вручную восстанавливал данные платежей по крупицам — меня выключало с открытыми глазами. Открывал вкладку и забывал зачем. Пачка сигарет на четыре часа. Пепел повсюду, гора окурков над переполненной пепельницей, пустые пачки, таблетки от головной боли и горечь от никотина.

Я впервые за долгое время себя пожалел. По-детски. Как дети себя жалеют.

А потом перестал.

«Ну что же... они — люди как люди....обыкновенные люди... в общем, напоминают прежних... квартирный вопрос только испортил их...»

01 апреля. Утро. Они знали что имена дисков в их среде могут не совпадать с моей. Знали серийники обоих дисков. Знали что массив деградирован. Дали мне маппинг из своей среды без единого предупреждения. А потом сказали «настоятельно рекомендуется указывать серийные номера». Задним числом. Хорошая шутка.

«Седьмое доказательство»

Ну что же, на этот раз нужно настроить рельсы правильно... Пусть будет всё как по маслу — согласно их же настоятельных рекомендаций.

«Аннушка уже разлила масло»

01 апреля. Среда. Вечер, когда уже «разваливаясь на куски, мелькнула луна».

Перед заменой второго диска — согласовал протокол. Буквально по пунктам. Проверка SSH? «Можем.» KVM заранее? «Предоставим.» Верификация по серийнику? «Происходит по серийному номеру, он уникален.» Каждый ответ — задокументирован. Каждое слово — под микроскопом. Каждый глагол — с учётом времени.

«Да не лезь ты, черт!» «Трамвай!»

02 апреля. Ночь. Замена второго диска. «Сервер загружен в вашу ОС.» Ping — 100% packet loss. KVM заранее — не предоставлен. S/N нового диска — не сообщён. Протокол из пяти пунктов — нарушен по всем. Вместо серийника — «вы можете посмотреть самостоятельно, вот команда smartctl».

«...покатился... круглый темный предмет. Скатившись с этого откоса, он запрыгнул по булыжникам Бронной...»

«Отрезало голову!»

Спасибо за консультацию по администрированию. От тех, кто «не выполняет администрирование серверов».

Данные восстановлены. Платежи сверены. Консистентность возвращена. Бэкапы починены. Оба диска заменены. RAID собран. Мониторинг настроен.

И собрано кое-что ещё.

«Покойный» был «Красноречив до ужаса»

Каждый шаг задокументирован. Каждая цитата с таймстемпом. Каждое противоречие — рядом с их же словами. Их обещания — рядом с реальностью. Их «мы не администрируем» — рядом с их же командами. Их «верификация по серийному номеру» — рядом с тем как дали маппинг по именам. Их документация, на которую сами сослались — без единого упоминания серийного номера. Их «сервер успешно загружен» — рядом с emergency mode.

«Пора! Пора!»

Блюдо готово. Подаётся холодным.

«Это то самое вино, которое пил прокуратор Иудеи. Фалернское.»
«Факт — самая упрямая в мире вещь»

Нас вернули в прошлое на 11 дней. Отказались от своей вины. Ну что ж. Мы вернулись. И принесли с собой кое-что из будущего.

«Каждому будет дано по его вере. Да сбудется же это!»

P.S. Безнаказанно путать имена дисков, данных и обещаний с теми, кто ежедневно проектирует многоходовые программные архитектуры — рулетка. Но без удачи.

«Воланд поднял шпагу... ...Крышка черепа откинулась на шарнире.»

P.P.S. Даже если ты Selectel. А особенно — если вместо головы тупой круглый предмет. И это вся твоя аппаратно-программная часть.

«Я пью ваше здоровье, господа...»

Обращение по инциденту при замене дисков

Joule · 185.137.234.42 · SPB-4 · тикет 3918824 · 7 апреля
Цитаты и таймстемпы кликабельны

Здравствуйте.

Направляю данное обращение для рассмотрения профильными специалистами, в чьей компетенции находится разбор инцидентов, связанных с ненадлежащим исполнением обязательств перед клиентами.

При рассмотрении прошу учитывать не выборочно, а полностью весь контекст коммуникации в тикете 3918824. Ниже привожу хронологию с указанием конкретных временных меток и цитат из переписки.

1
СУТЬ ИНЦИДЕНТА

19.03.2026 на сервере Joule один из двух NVMe-дисков выпал из RAID-1 массивов. Сервер продолжил штатную работу на оставшемся диске. 30.03.2026 было подано обращение на замену неисправного диска.

В результате действий инженеров Selectel был извлечен рабочий диск с актуальными данными. Это привело к потере дисковых данных за период 19.03–30.03.2026 и длительному процессу восстановления консистентности баз данных.

Ввиду специфики проекта (платформа для психологов и их клиентов), инцидент привёл к утрате данных части психологов, клиентов, расконсистенции терапевтических сессий, нарушению платёжной логики и, что наиболее критично, к цепной утрате доверия в связке «клиент — психолог — платформа». В области, где доверие является профессиональным фундаментом, подобная цепная реакция наносит ущерб, несопоставимый со стоимостью дискового пространства.

2
ХРОНОЛОГИЯ ИНЦИДЕНТА
30.03.2026, 23:48

Клиент открывает тикет:

«На выделенном сервере 19.03.2026 выпал один из двух NVMe-дисков из всех трёх RAID-1 массивов. Массивы работают в деградированном состоянии [2/1] на единственном nvme1n1. Второй диск не виден в системе. На сервере находится production-окружение. Прошу заменить неисправный диск.»

Приложен вывод mdstat и скриншот. Серийный номер не указан.

31.03.2026, 00:01

Поддержка предлагает диагностику в Rescue. Серийный номер диска не запрошен. О нём не идёт даже речи. В случае обнаружения неисправного диска — замена поддержкой предлагается «сразу», без идентификации диска клиентом по S/N.

31.03.2026, 00:17

Поддержка сообщает результаты диагностики из Rescue-среды Selectel:

«Оба диска корректно определяются, как nvme0n1(S/N:S5P2NU0W904128P) и nvme1n1(S/N:S5P2NU0WA15149V)»

Маппинг имя→серийник предоставлен из Rescue-среды без какой-либо оговорки о том, что имена устройств могут различаться между средами загрузки. В том же сообщении предоставлен план действий по замене дисков, не предполагающий идентификации по S/N:

«мы можем выполнить замену без потери данных. Для этого вам необходимо...»
31.03.2026, 00:30

Клиент, полагаясь на предоставленный поддержкой маппинг и прямую пошаговую инструкцию от поддержки со ссылкой на базу знаний Selectel, сообщает:

«nvme0n1 (S/N: S5P2NU0W904128P) уже выведен из всех RAID»

и подтверждает замену:

«Готов к замене первого диска (nvme0n1). Прошу приступить.»
31.03.2026, 00:47

Поддержка сообщает:

«Работы по замене выполнены. Сервер возвращён в работу, загружен в ОС и доступен по сети.»
31.03.2026, 00:50

Клиент:

«SSH connection refused. Не доступен по ssh.»
31.03.2026, 00:59

Поддержка предоставляет KVM «в качестве исключения, бесплатно (временно)».

31.03.2026, 01:11

SSH по-прежнему connection refused (порт 2245). KVM показывает No Signal. Клиент запрашивает перезагрузку сервера.

31.03.2026, 02:13

Через KVM обнаружено: сервер в emergency mode из-за отсутствующего EFI-раздела. После ручного исправления fstab — обнаружена потеря данных. Последняя запись в БД: 2026-03-19 12:26:11.

31.03.2026, 02:33

Поддержка:

«Никаких действий касающихся Ваших данных не производилось. Инженеры строго выполняют действия по проверке показателей SMART и скорости чтения — не более.»

и

«Следовательно, никаких ошибок с нашей стороны допущено не было.»
31.03.2026, 02:55

Поддержка:

«Давайте отложим ответы на ключевые Ваши вопросы приблизительно до 10:00.»

Ответ получен в 13:15.

3
КЛЮЧЕВАЯ ПРИЧИНА ИНЦИДЕНТА: АСИММЕТРИЯ ИНФОРМАЦИИ

Поддержке Selectel было известно:

  • Собственная Rescue-среда (Arch Linux) и её особенности
  • Среда клиента (Debian)
  • Что имена устройств могут различаться между средами загрузки (подтверждено самой поддержкой позднее 31.03, 13:15: «используемая нами Rescue-система на базе Arch Linux может иметь иные идентификаторы устройств»)
  • Что массив деградирован и диски рассинхронизированы
  • Серийные номера обоих дисков

Клиенту было известно:

  • Своя среда (Debian)
  • Имя диска в своей среде (nvme1n1)
  • Что массив деградирован
  • План действий по замене дисков от поддержки обещающий замену «без потери данных», не предполагающий идентификацию по S/N
  • Серийные номера НЕ были проверены (клиент положился на маппинг от специалистов)

Клиент не мог знать:

  • Что в данной конкретной конфигурации имена устройств фактически поменялись местами
  • Что предоставленный поддержкой маппинг имя→S/N не соответствует именам устройств в ОС клиента

Это классическая асимметрия информации. Сторона с полной картиной (Selectel) обязана была предупредить о расхождении или запросить однозначный идентификатор (серийный номер) до того, как предоставлять маппинг из своей среды. Вместо этого поддержка самостоятельно предоставила программный маппинг из Rescue-среды без оговорок, представив его как достоверную информацию для принятия клиентом решения о замене.

Клиент, не зная об особенностях чужой Rescue-среды, воспринял этот маппинг как корректный и подтвердил замену по имени из среды диагностики поддержки Selectel.

Помимо предоставления маппинга без предупреждения, поддержка прямо заявила, пообещав замену без потерь — «мы можем выполнить замену без потери данных... Для этого вам необходимо...» (31.03, 00:17), предоставила план действий по замене дисков, где сослалась на статью из базы знаний Selectel с пошаговой инструкцией по администрированию RAID при замене дисков (https://docs.selectel.ru/dedicated/troubleshooting/replace-disk-raid/). Характерно, что и в самой этой статье идентификация дисков выполняется исключительно по именам устройств (sda, sdb) — серийный номер или команды, определяющие его, не упоминаются ни разу. Таким образом, собственная документация Selectel не содержит процедуры верификации по S/N, отсутствие которой позднее было предъявлено клиенту как причина инцидента. Данные были потеряны.

В сообщении от 31.03, 13:15 Selectel сам пришёл к выводу:

«Диск с актуальной базой данных, с высокой вероятностью, находится на заменённом накопителе: nvme0n1 (S/N: S5P2NU0W904128P)»

В том же сообщении признано:

«используемая нами Rescue-система на базе Arch Linux может иметь иные идентификаторы устройств»

И в том же сообщении заявлено:

«Со своей стороны подтверждаем, что все действия инженеров были выполнены корректно»

Это же сообщение от 31.03, 13:15 содержит предложение вернуть заменённый диск для восстановления данных. Однако ответ «на ключевые» вопросы, обещанный «приблизительно до 10:00» (31.03, 02:55), поступил в 13:15 — спустя более 3 часов после обещанного срока. К этому моменту проект уже функционировал в частично рабочем режиме (для части пользователей), накапливая новые данные и транзакции, всё ещё велись работы по восстановлению утраченной консистентности. Возврат диска и откат к его содержимому привёл бы к потере новых данных и повторной расконсистенции.

Важно отметить: маппинг имя→серийник — это программная идентификация, выполненная в Rescue-среде. Selectel дважды заявлял, что «не выполняет администрирование серверов». Однако предоставление программного маппинга дисков — это прямое взаимодействие с программной частью сервера, а предоставление плана действий по работе с RAID с обещанием «без потери данных» — прямое руководство по программному администрированию. Причём именно маппинг из чужой среды, транслированный клиенту как достоверный, привёл к инциденту.

4
ВЕРИФИКАЦИЯ ПО S/N — СОГЛАСОВАНА, НО НЕ ПРИМЕНЕНА

Примечательно, что в первом же ответе поддержки (31.03, 00:01) было заявлено:

«В случае, если мы выявим, что один из дисков полностью не определяется, то сразу выполним его замену на новый.»

Замена планировалась сразу — без запроса серийного номера у клиента, без подтверждения S/N конкретного диска, автоматически по результатам диагностики в Rescue. Серийный номер на этом этапе не фигурировал ни в вопросах поддержки, ни в предложенной процедуре.

При этом в разъяснении от 31.03, 13:15 поддержка заявила:

«Обращаем внимание, что серийный номер активного диска с вашей стороны предоставлен не был»

и

«настоятельно рекомендуется указывать серийные номера накопителей»

Таким образом, в ночь инцидента (31.03, 00:01 и 00:17) S/N не требовался: замена планировалась поддержкой «сразу», клиенту давались инструкции по работе с RAID «без потери данных», не предполагающие идентификацию по S/N. А днём, в разъяснении по инциденту (31.03, 13:15) отсутствие S/N предъявлено клиенту задним числом как причина инцидента.

При согласовании замены второго диска (02.04, 01:09) был задан прямой вопрос:

Вопрос: «Так как вы указали, что имена устройств могут различаться между Rescue и ОС клиента — каким образом вы убедитесь, что заменяете именно S/N S5P2NU0WA15149V? Какой процесс верификации?»

Ответ поддержки (02.04, 01:42):

«Верификация происходит по серийному номеру, он уникален и всегда отображается верно, в отличии от наименований nvme1.»

Обращаю внимание на формулировку: «верификация происходит» — настоящее время, описание действующей процедуры. Не «будет происходить», не «рекомендуется». Если это действующий регламент — он был нарушен при первой замене. Если это не действующий регламент — поддержка ввела клиента в заблуждение относительно собственных процедур.

Поддержка сама подтвердила, что имена ненадёжны, а серийный номер — единственный корректный идентификатор. Слова «всегда отображается верно, в отличии от наименований» — прямое признание ненадёжности имён устройств.

Однако при замене первого диска верификация фактически не состоялась: поддержка предоставила программный маппинг из своей Rescue-среды, клиент воспроизвёл S/N из этого маппинга, не имея оснований сомневаться в его корректности и не будучи предупреждён о возможном расхождении имён. Независимая проверка — запрос S/N у клиента из его ОС, до предоставления собственного маппинга — не была выполнена. Данные потеряны.

5
«СЕРВЕР ВОЗВРАЩЁН В РАБОТУ»

Дважды — при замене первого и второго дисков — поддержка заявляла о возвращении сервера в работу, при этом:

Замена первого диска (31.03.2026, 00:47):

Заявлено:

«Сервер возвращён в работу, загружен в ОС и доступен по сети.»

Приложены результаты PING, сообщён S/N нового диска (S7HDNJ0Y903794J).

Реальность: SSH — connection refused, KVM — No Signal. После перезагрузки — emergency mode из-за отсутствующего EFI-раздела. Восстановление доступа потребовало ручного исправления клиентом fstab через KVM. В разъяснении от 31.03, 13:15 — уже после всех вышеперечисленных проблем — поддержка охарактеризовала эту загрузку как «успешную».

Замена второго диска (02.04.2026, 02:27):

Заявлено:

«Заменили неисправный диск. Сейчас сервер загружен в Вашу ОС. Пожалуйста, проверьте.»

Не приложено ничего: ни результаты PING, ни S/N нового диска, ни подтверждение доступности SSH, ни уведомление о KVM — при наличии согласованного протокола из 5 пунктов, составленного именно по итогам первого инцидента.

Реальность: ping 100% packet loss с различных машин и геолокаций (02.04, 02:33). Результаты проверки были предоставлены поддержкой только после повторного обращения клиента. Расхождение между полной недоступностью для клиента и заявленной доступностью объяснено не было.

При согласовании замены второго диска был задан прямой вопрос с отсылкой на инцидент с первым (02.04.2026, 01:09):

«Каким образом вы проверяете, что ОС загрузилась корректно?»

Ответ на эту часть вопроса поддержкой был проигнорирован. Процедура не улучшилась, а деградировала.

6
НЕСОБЛЮДЕНИЕ СОГЛАСОВАННОГО ПРОТОКОЛА ПРИ ЗАМЕНЕ ВТОРОГО ДИСКА

Перед заменой второго диска (S/N:S5P2NU0WA15149V) был согласован протокол из конкретных пунктов (Клиент: 02.04, 01:09; Поддержка: 02.04, 01:42). Результаты:

Пункт 3 (проверка доступности SSH):

Вопрос клиента:

«Каким образом вы проверяете, что ОС загрузилась корректно? Можете ли проверить SSH на порту 2245?»

Ответ поддержки:

«Мы можем проверить доступность сервера по SSH.»

Первая часть вопроса — о процедуре проверки корректности загрузки ОС — проигнорирована. Формулировка «можем проверить» — декларация возможности, не подтверждение действия. Проверка выполнена не была — сервер возвращён клиенту без подтверждения доступности по SSH и без базовой проверки ping (100% packet loss, зафиксирован в разделе 5).

Пункт 4 (предоставление KVM заранее):

Ответ поддержки:

«Мы предоставим Вам KVM заранее.»

Формулировка «предоставим» — глагол в будущем времени, то есть обещание действия перед заменой. О доступности KVM перед началом работ сообщено не было. После обращения клиента поддержка пояснила (02.04, 02:53):

«от сервера не отключалась KVM»

— то есть KVM не была предоставлена заранее согласно обещанию, а просто не была отключена после предыдущих работ.

Пункт 5 (верификация по S/N):

Поддержка подтвердила:

«Верификация происходит по серийному номеру.»

Однако после замены S/N нового диска клиенту сообщён не был — в отличие от первой замены, где S/N был указан в сообщении о завершении работ. На запрос клиента поддержка ответила:

«Благодарим за напоминание»

(02.04, 04:49) — фактическое признание, что согласованный пункт протокола не был выполнен. Далее добавлено:

«серийный номер диска Вы можете посмотреть самостоятельно»

— то есть вместо выполнения даже заранее согласованного обязательства действие снова переложено на клиента.

7
«МЫ НЕ АДМИНИСТРИРУЕМ» — РАЗМЫТИЕ ЗОНЫ ОТВЕТСТВЕННОСТИ

Поддержка неоднократно заявляла:

«Мы не выполняем администрирование серверов и не взаимодействуем с RAID-массивами на уровне конфигурации.»

При этом в рамках того же тикета поддержка:

  • Предоставляла маппинг дисков из своей среды (31.03, 00:17) — программная идентификация
  • Предоставляла план действий по замене дисков с гарантией «без потери данных. Для этого вам необходимо...» и ссылкой на техническую документацию по работе с RAID (31.03, 00:17) — прямое взаимодействие с программной частью сервера
  • Заявляла о работоспособности сервера (31.03, 00:47: «возвращён в работу, доступен по сети»; 02.04, 02:27: «загружен в Вашу ОС») — в обоих случаях сервер был недоступен клиенту: в первом — emergency mode, SSH connection refused; во втором — 100% packet loss
  • Давала рекомендации по smartctl (02.04, 04:49): «серийный номер диска Вы можете посмотреть самостоятельно. Пример команды smartctl -i /dev/nvme*n1» — непрошенная консультация по администрированию в ответ на запрос S/N нового диска по согласованному протоколу
  • Предлагала варианты действий (31.03, 13:15), включающие «проверить содержимое диска», «убедиться в наличии актуальной базы данных», «выполнить ребилд RAID-массива» — планирование администрирования

Граница «мы только железо» не может произвольно смещаться в зависимости от контекста: когда удобно — маппинг дисков, прямые инструкции по работе с RAID «без потери данных», рекомендации по smartctl и план ребилда RAID, а когда речь об ответственности за инцидент — «не выполняем администрирование» и «никаких ошибок с нашей стороны допущено не было.»

8
ПРОШУ
1.

Признать долю ответственности Selectel в инциденте с потерей данных при замене первого диска (S/N:S5P2NU0W904128P), а именно: предоставление программного маппинга дисков из Rescue-среды без предупреждения о возможном расхождении имён устройств, при осведомлённости об этой особенности.

2.

Рассмотреть компенсацию в рамках SLA «Выделенный сервер»:

  • Пункт 3.5: выход из строя комплектующих, обязанность корректной замены
  • Пункт 6.2: простой от момента тикета (30.03.2026, 23:48) до восстановления полной работоспособности
  • Пункт 6.3: недоступность сервера из-за сбоя инфраструктуры Исполнителя
3.

Провести внутренний разбор инцидента с целью недопущения аналогичных ситуаций, в частности:

  • Внедрить обязательный запрос S/N у клиента при замене дисков в деградированных RAID-массивах
  • Обеспечить предупреждение клиентов о возможном расхождении имён устройств между средами загрузки
  • Пересмотреть критерии заявлений «сервер возвращён в работу», «успешно загружен»: положительный результат ping не подтверждает работоспособность сервера для клиента; загрузка в emergency mode не является «успешной»
  • Обеспечить строгое выполнение заранее согласованных с клиентом пунктов протокола работ
  • Повысить качество коммуникации с клиентами: ответы поддержки должны соответствовать поставленным вопросам — в рамках тикета 3918824 зафиксированы случаи игнорирования части вопросов, подмены подтверждения действия декларацией возможности и предоставления информации задним числом
4.

В случае несогласия с изложенным прошу предоставить развёрнутый ответ по каждому разделу данного обращения (1–7) с комментарием по приведённым фактам и дословным цитатам.

В случае невозможности урегулирования вопроса в рамках данного обращения, оставляю за собой право на дальнейшие действия в установленном порядке.