ActiveScaleинженерная практика

Вентиляторы NOTFOUND и лишние NIC: почему модель врёт и как это чинить

Обслуживание fannicmodelipmifalse-alarm

Коротко. Два класса ложных тревог растут из одного места — из модели оборудования. BMC отдаёт алиасы вентиляторов, которых физически нет, а machine.json описывает порты именами eth0…eth7, которых в системе тоже нет. Чекеры сверяют модель с железом и поднимают NOT_FOUND/NIC_DOWN. Лечится штатно: фильтр вентиляторов в шаблоне железа и статус NOTMANAGED для лишних портов. Выдёргивать железо и «ремонтировать» тут нечего.


1. Два класса, одна причина

Симптом в GUI Что показывает Что это на самом деле
вентиляторы NOTFOUND / DEGRADED позиции, которых нет на шасси алиасы BMC в модели
PSU/FAN NOT_FOUND датчик не читается платформа не отдаёт его штатным типом IPMI
пачка ERROR NIC_DOWN порты enp…, к которым не подключён кабель порт без линка, а не поломка
«16 NIC на 8 портов» дубли eth* и enp* модель описана не теми именами

Общее: модель описывает не то железо, которое стоит. Продукт не «глючит» — он честно сравнивает документ с тем, что отдаёт платформа, и репортит расхождение.

Почему это важно для эксплуатации: такие события висят в LIVE и маскируют настоящие. Оператор привыкает к «у нас всегда 6 красных по вентиляторам» — и пропускает реальный отказ.


2. Вентиляторы: откуда берутся несуществующие позиции

BMC отдаёт список датчиков по своей прошивке, и в нём бывают позиции-алиасы: «Fan chassis 4A», «Fan chassis 8A», «Fan chassis NB». На шасси этих позиций нет, но чекер видит их в модели и ожидает значение. Значение не приходит → статус NOTFOUND.

Штатное лечение — фильтр в шаблоне железа, а не правка чекера. В профиле оборудования есть поле ignore_fans_regex:

"ignore_fans_regex": "Fan chassis [0-9]B|Fan chassis 4A|Fan chassis 8A"

Оно исключает перечисленные позиции из сверки. Порядок применения важен:

  1. прописать фильтр в шаблоне типа железа;
  2. перезапустить mona (чекеры перечитывают профиль);
  3. удалить orphan-документы вентиляторов из модели;
  4. прогнать контрольный скан.

Чего не делать: ждать, что systemscan --update-existing уберёт мусор. Он не воскрешает удалённые документы — но и сам не удаляет лишние. Чистка — отдельный шаг.

Отдельный случай — PSU/FAN NOT_FOUND, когда платформа не отдаёт датчик штатным IPMI-типом. Это не отказ питания и не отказ вентилятора: датчика просто нет в том виде, в котором его ждёт чекер. Проверять надо по IPMI напрямую и по факту работы — а не по статусу в GUI.


3. NIC: почему «16 портов» вместо восьми

В machine.json порты описаны как eth0…eth7 — это имена из шаблона, а не из системы. На железе порты называются enp… (по PCI-пути). Скан создаёт документы по реальным именам, а старые eth*-документы остаются — итог: модель знает вдвое больше портов, чем есть.

Правильный порядок — до установки: в machine.json писать реальные имена интерфейсов, а не шаблонные eth*. Если имена неизвестны, список NIC лучше не описывать вовсе — скан создаст документы сам. После установки то же самое лечится чисткой модели.

Дополнительно: nictype должен быть ether. Значение ethernet даёт ValidationError и роняет инициализацию — типичная ошибка при сборке очереди вручную.


4. Лишние порты: статус NOTMANAGED

Порт без кабеля для продукта — «down»: чекер проверяет состояния {UP, DOWN, BONDED} и репортит NIC_DOWN. Это не отказ железа, а несмонтированный линк.

Штатный путь — увести порт в статус NOTMANAGED в модели:

PUT /model/machine/<MGUID>/nic/<NGUID>/   -d '{"status": "NOTMANAGED"}'

Ожидаемый ответ — 200. Почему это штатно, а не обход:

  • NOTMANAGED входит в допустимые состояния NIC в модели;
  • скан не перезаписывает документы в состояниях NOTMANAGED, DECOMMISSIONED, DISABLED;
  • чекер пропускает все статусы, кроме {UP, DOWN, BONDED};
  • когда список «проблемных» портов пуст, продукт сам снимает событие (unset_event).

События закрываются на следующем цикле mona. В нашей конфигурации цикл — 600 секунд, наблюдали постепенное сокращение LIVE NIC_DOWN (8 → 4 → 0).

Ловушка: действие nic down на «пустом» NIC не работает — продукт требует хотя бы одну сетевую секцию в настройках и падает с ValueError: Insufficient settings to configure interface. Для неподключённого порта единственный путь — смена статуса в модели, а не «выключение» интерфейса.


5. Что проверить первым (только чтение)

  1. События за сутки по классам FAN, PSU, NIC — какие позиции и какие MAC/имена фигурируют.
  2. GET /model/machine/<MGUID>/nic/ — сколько документов, какие статусы, есть ли дубли eth*/enp*.
  3. Шаблон типа железа: есть ли ignore_fans_regex, какие позиции он покрывает.
  4. IPMI напрямую: отдаёт ли платформа датчик вентилятора/питания (ipmitool sensor, ipmitool fru).
  5. Реальный линк на порту: cat /sys/class/net/<dev>/carrier (1 — линк есть).

Если IPMI датчик отдаёт, а модель его не видит — расхождение в профиле; если не отдаёт — вопрос к платформе и прошивке, а не к продукту.


6. Проверка результата

Что Ожидаемо
PUT статуса NIC 200
список NIC в модели нет дублей, лишние — NOTMANAGED
LIVE NIC_DOWN по этим портам исчезает в течение цикла mona
события FAN по отфильтрованным позициям не поднимаются после перезапуска mona и скана
systemscan не создаёт удалённые документы заново
модель машины число NIC совпадает с числом физических портов

«Стало тихо» — не доказательство: надо увидеть, что число документов NIC совпало с железом, иначе следующий скан вернёт мусор.


7. Профилактика

  • Профиль железа — часть поставки: фильтр вентиляторов и корректные имена NIC должны быть в нём до установки, а не после первого скан-цикла.
  • Не описывать в machine.json порты, которых не знаете: пусть скан создаст документы по факту.
  • После каждого обновления прошивки BMC проверять, не изменился ли набор датчиков — фильтр может потребовать правки.
  • Раз в месяц просматривать LIVE-события по FAN/PSU/NIC: «привычные» ложные тревоги должны быть закрыты, а не терпимы.
  • Не лечить ложные тревоги выдёргиванием железа: замена исправного вентилятора или диска не убирает причину — причину убирает только модель.

Источники

  • ActiveScale X200 Getting Started Guide — состав шасси, порты, слоты (2026-11-07)
  • Управление системой (GUI) (2026-11-07)
  • Наша практика (обезличено): чистка FAN/NIC через Model API на 3-нодных стендах, наблюдение закрытия NIC_DOWN по циклу чекеров.
  • Обновлено: 2026-11-07.

Нужен инженер? Разберу вашу ситуацию и скажу, что делать — по шагам, с проверками.

Обсудить задачу