Домашний сервер в стоечном исполнении звучит как взлетевший лайнер, и желание прикрутить обороты вентиляторов возникает в первый же вечер. Управление кулерами на серверном железе традиционно делается через BMC по IPMI, и ipmitool это та самая отвёртка, которой вы это делаете. В статье разбираем практику: как разговаривать с BMC, читать датчики, выставлять ручной режим на Supermicro, Dell и прочих, писать сервис с защитой от перегрева, и не спалить процессор уверенными руками.
IPMI и BMC, минимум для понимания
BMC это отдельный маленький компьютер на материнской плате, который живёт своей жизнью и имеет доступ к датчикам температуры и управлению питанием независимо от основной системы. IPMI это протокол, которым с BMC разговаривают: локально через шину, удалённо по выделенному порту. Утилита ipmitool полностью покрывает стандартные команды и при этом имеет набор вендорских raw-команд, через которые делается ручная установка оборотов вентиляторов - команды эти не стандартизированы и у каждого производителя свои, но коллекция знаний по ним устоялась годами практики.
Подключение локальное выглядит просто: ipmitool sdr elist показывает все датчики в расширенном виде. Для удалённого управления добавляется -I lanplus -H адрес -U пользователь -P пароль, и разом открывается дверь для установки режимов с балкона кухни. Пароль BMC из соображений здравости меняется с заводского сразу после покупки сервера - не раз об этом говорится в начале знакомства и не бесполезно.
Чтение датчиков, что доступно перед настройкой
Первое действие всегда инвентаризация: ipmitool sensor list показывает список температур, оборотов вентиляторов, напряжений и статусов блоков питания. Важные поля распознаются по именам: CPU Temp или CPU1 Temp, System Temp, FAN1, FAN2 и так далее. Эти значения станут входом для вашей логики управления, так что хорошая привычка - записать расклад на первой настройке и подписать физические зоны, чтобы через год не возникало вопроса, какого вентилятора вы только что приструнили до минимума.
Сами датчики пишут часто не только в sensor, но и в sdr - служебные записи и пороги; команда ipmitool sdr type Temperature сгребает только температурные. На практике достаточно списка сенсоров и их порогов: вы почти мгновенно понимаете, где у сервера горячая точка, а где простор для снижения оборотов без риска.
Ручной режим оборотов, raw-команды производителей
Теперь самый интересный момент: команды управления вентиляторами вендорские. На Supermicro широко известна пара команд raw 0x30 0x70 0x66 для установки PWM-цикла, где конечный байт отвечает за уровень; на Dell iDRAC применяется свой raw-вариант для fan control; у Lenovo встречается свой набор. Шпаргалки живут годами у сообщества владельцев домашних стоек, и обычно достаточно одного вечера чтения, чтобы найти комплект именно для вашей платы.
С осторожностью связано два стража. Первый: после выключения ручного режима контроль возвращается к BMC, и это обязательно делается, когда эксперимент закончен или рядом маячит обслуживание. Второй: настройки зачастую не сохраняются через сброс BMC - после выдёргивания питания всё возвращается в автоматический режим, и тем самым прощается та неделя, когда вы настраивали кривую перед отъездом, - здоровая память это конфиг в git.
Сервис управления, защита от перегрева прежде тишины
Бытовая мудрость гласит: ручная скорость вентилятора в отсутствие контроля температуры рано или поздно варит процессор. Поэтому боевой рецепт включает сторожа: простой скрипт в цикле раз в десять секунд читает температуру CPU и дисков; пока она ниже порога - обороты держатся вручную на комфортном низком значении; когда порог пробит - управление передаётся обратно в автоматический режим BMC. Тело такого сторожа занимает пятнадцать строк bash, и именно потому, что оно тривиально, написать его нельзя отложить, прежде чем закрутить гайки вручную.
Передел в простой сервис отличается только обёрткой: systemd-юнит с Restart=always и временем восстановления; лог в journal; конфиг в /etc/default/fanctl с порогами. Отдельная радость - диски в расчёт: в серверах с полками SATA диски греются своим расписанием, и глохнущий вентилятор над ними значит износ в рабочие месяцы. Правило опытных: диски держите ниже сорока градусов, и они ответят вам годами.
Диагностика и откат
Если после ваших команд кулеры гудят на полной мощности - почти всегда это не разрушение, а переход в fail-safe: возврат в auto делается обратной raw-командой или через веб-интерфейс BMC, и несколько секунд уверенного гудения обещают, что всё живое. Если BMC перестал отвечать, помогает холодный сброс контроллера соответствующей командой из меню lanplus, а в крайнем случае полное обесточивание сервера на минуту. После этого эксперименты можно возобновить со спокойным сердцем.
Итог, тишина с ответственным лицом
Соединившись с BMC и построив свою стражу от перегрева, вы получаете главную выгоду домашней стойки: она перестаёт звучать как трансформатор и начинает звучать как техника. При этом безопасность не жертвуется тишине, потому что датчики и пороги всегда имеют последнее слово - ровно так, как и должно быть на машине, в руках которой ваши диски и ваш сон.
Конкретика по платформам, Supermicro, Dell, HPE
На платах Supermicro самый изученный набор: известная команда переводит вентиляторы в ручной режим, вторая задаёт процент ШИМ, и сообщество давно собрало эти байты в понятный формат. На Dell с iDRAC управление тоже делается через raw, при этом для современных поколений есть внятные настройки прямо в веб-интерфейсе контроллера, и это честная альтернатива скриптам. На серверах HPE с iLO политика температур также правится с веба, а ipmitool используется больше для чтения, потому что команды ручной установки канули в историю новых архитектур. Вывод практический: перед покупкой бэушного сервера проверьте наличие рабочей таблицы команд для вашей конкретной модели - это сбережёт нервы и волосы.
Отдельный респект забирают дешёвые настольные платы промышленного образца: там IPMI может вообще не быть, и задачу снимает контроль на самой ОС через lm-sensors и fancontrol. Этот маршрут грубее, но надежнее на без-BMC железе, и заслуживает уважения там, где BMC отсутствует по рождению.
Написание своего контроллера, скелет за полчаса
Минимальный скрипт, который не теряет голову, выглядит так: цикл читает температуру по ipmitool, сравнивает с порогом; выше порога - raw-команда на повышенные обороты или возврат в auto; ниже - установка вашего тихого значения; журналирование строкой с датой и значениями. Затем обёртка systemd-юнитом с перезапуском. Дальше следуют измерения: три дня живого наблюдения графика температур и оборотов выведут вас на последовательность точек кривой. Дискретных трёх режимов - тихо, средне, тревога - обычно более чем достаточно, потому что вывод воздуха это не кинофильм, а тяжёлая работа плоскости пола.
Тюнинг порогов делается осознанно: слишком низкий порог навязчиво частого пробуждения - и вентиляторы будут дёргаться каждую минуту, что портит уют хоть и спасает технику. Полезный индикатор - время между переключениями режимов: если меньше двух минут, расширяйте гистерезис.
Мониторинг и контроль с улицы
Для спокойствия вдали от дома ipmitool sensor и простой скрипт-экспортер превращают датчики в метрики Prometheus: периодический опрос, метки температур, alert на пороги выше сторожевых. Так вы узнаете о горячем случае раньше, чем узнает вентилятор, идея простая и надёжная, потому что вся цепочка живёт на том же самом ipmitool, который вы уже освоили.
И последнее предостережение из серии прочитанных инструкций: после каждого обновления прошивки BMC проверяйте, что ваши любимые команды по-прежнему имеют силу, - редко, но команды меняются между ревизиями, и летнее обновление FW иногда делает ваш скрипт безмолвным. Проверка занимает минуту, а экономит бессонницу.
Итоговая карта действий
Короткий свод: поменяйте дефолтный пароль BMC, снимите показания сенсоров, найдите команды своей платы, сделайте тихий режим с обязательным сторожем, добавьте метрики и периодическую проверку после обновлений. Соберите эти шесть пунктов один раз - и ваша домашняя стойка станет тем комфортным другом, которого не слышно из соседней комнаты, а это, согласитесь, главное, чего мы все от неё хотим.
Практический кейс из домашней стойки
Возьмём характерный сценарий для наглядности: плата Supermicro X11 в башне под столом, четыре SATA-диска, один NVMe, процессор со средним TDP. Стоковый режим держит обороты на уровне приоритетной безопасности, и шумом это слышно в соседней комнате. После инвентаризации сенсоров выясняется: процессор в простое 33 градуса, диски 36, системный воздух 28 - запас к верхним порогам приличный. Устанавливается ручной режим на тихую цифру оборотов, ставится сторож: выше 65 градусов на CPU - auto; выше 45 на дисках - auto. После недели эксплуатации температура взмывает один раз в жаркий день, сторож срабатывает, шум возвращается на час, температура нормализуется, тишина восстанавливается. Именно так выглядит система, которая оправдала своё существование.
Баланс шума и надёжности для долгих лет
Философская часть проста: каждый лишний оборот вентилятора - это шум; каждый градус перегрева - это годы жизни компонентов. Задача администратора лежит посредине: держать температуру в зелёной зоне, а дом в тишине. С описанным набором инструментов эта задача решается сегодня вечером, и спустя неделю вы уже не помните, что когда-то слышали свою стойку через стену - а это и есть показатель успешно завершённой работы.
Полезные дополнения, SMART, плановые задания и история
Датчики BMC дружелюбны к автоматизации: cron-задача каждые пять минут пишет температуры в локальный лог, и через месяц вы обладаете историей, из которой становятся видны сезонные пики и поведение под нагрузкой ночных задач. Эта устоявшаяся история - то, чем руководствуются, выдвигая личные пороги: какой предел является нормой именно для вашего климата и вашего использования, а не средним по спецификации.
Разумно добавить сюда и данные SMART дисков: smartctl -A /dev/sda в том же цикле пополняет картину температурой носителей напрямую, без причитаний про датчики в контроллере. Сумма двух каналов измерений делает наблюдение устойчивым ко лжи любого из них - в технике это называется взаимной проверкой, и это один из тех приёмов, которые отличают упрятанную инфраструктуру от просто работающей.
Завершение трактата о вентиляторах
Всё это приобретает смысл в один голый итог: сервер, стоящий дома, должен быть слышен не больше чем холодильник, и потому владелец современного железа настраивает обороты единожды, а дальше годами занимается тем, ради чего сервер вообще куплен. Это не подвиг, это грамотность.
И ещё одна мелочь, которая приходит с опытом эксплуатации домашней стойки: сделайте себе закладку или телефонную заметку с байтами управления вентиляторами именно вашей платы. В день апгрейда контроллера, когда документация не под рукой, эта заметка отличает десятиминутную задачу от целого вечера с форумами, где половина ссылок давно выпала по таймауту хостинга.
И последнее правило, которое стоит держать на памятной визитке: тишина - это не отсутствие вентиляторов, а их правильная работа. Гоняясь за абсолютной бесшумностью, вы рано или поздно пожертвуете техникой; держа датчики в порядке и гистерезис опытным, вы получите именно ту середину, за которой охотились, - и больше никогда не будете слышать свою стойку.
Тишина настроена, пороги расставлены, и стойка больше не будет напоминать о себе без причины.
Этим можно ограничить разговор об управлении вентиляторами через ipmitool.
Тишины вам и здоровья вентиляторам.