[Linux] Удалённое управление сервером через IPMI интерфейс (hardware watchdog linux monitoring crash ipmi)
Ключевые слова: hardware , watchdog , linux , monitoring , crash , ipmi , (найти похожие документы )
From: Dmitry A. Koptev <dimez@nm.ru. >
Date: Mon, 17 Oct 2005 18:21:07 +0000 (UTC)
Subject: [Linux] Удалённое управление сервером через IPMI интерфейс
Оригинал: http://dimez.nm.ru/docs/bmc/
У многих в обслуживании имеются сервера с материнскими платами Intel.
К сожалению, из-за различных проблем либо с оборудованием, либо с
недостаточно стабильнымии драйверами, бывает, что сервера "повисают".
С такими случаями поможет справиться аппаратный watchdog(к примеру),
но это отдельная железка.
К сожалению, не встречался с серверными вариантами плат фирм, отличных
от Intel, поэтому буду говорить только про них.
В достаточно современных материнских платах от Intel есть встроенная
возможность удалённо управлять сервером, т.к. там есть BMC(или
miniBMC).
BMC (по терминологии INTEL) Baseboard Management Controller, miniBMC,
соответственно - урезанный вариант BMC(превращается в полноценный
MC (Management Controller) путём установки IMM (Intel Management
Module)
Для того, чтобы его(BMC/miniBMC) задействовать, нужно сначала его
сконфигурировать.
Для этого нужно:
* Иметь в ядре поддержку IPMI(я собрал модулями)
* Я ещё собрал поддержку I2C для lm_sensors (тоже модулями)
* OpenIPMI - набор библиотек и утилит, позволяет локальной машине
взаимодействовать с BMC.
* ipmitool - CLI, позволяющая взаимодействовать с BMC с
Linux-машины, поддерживает "общение" через LAN и через
OpenIPMI-интерфейс.
* Для Slackware-10.2 вы можете взять собранные пакеты тут
Итак, приступим.
Берём патчи для ядра с сайта OpenIPMI
На текущий момент(для ядра 2.6.13, подходит и для 2.6.13.4) это:
linux-i2c-2.6.13-v36.1-i801.diff
linux-i2c-2.6.13-v36.1.diff
linux-ipmi-2.6.13-v36.1-2.base.diff
linux-ipmi-2.6.13-v36.1-2.emu.diff
linux-ipmi-2.6.13-v36.1-2.smb.diff
linux-nmi-2.6.13-v36.1.diff
(заодно собрал поддержку [[ http://www.syskonnect.de/syskonnect/support/driver/htm/sk9elin.htm sk98lin]])
Накладываем последовательно вышеуказанные патчи, собираем ядро с
поддержкой IPMI и I2C(модулями), перегружаемся.
Создаём устройство ipmi0, если его нет:
# mknod /dev/ipmi0 c `cat /proc/devices | grep ipmidev |cut -d " " -f 1` 0
подгружаем модули:
* I2C - i2c-i801, eeprom(у меня так) - необязательно
* IPMI
a) ipmi_si, ipmi_devintf(для полноценного BMC)
b) ipmi_devintf, ipmi_smb(для miniBMC)
Собираем OpenIPMI и ipmitool, а дальше начинается самое интересное -
конфигурация BMC ;)
Для начала, после корректной вышеописанной настройки, вылолните
команду:
# ipmitool -I open chassis status
System Power : on
Power Overload : false
Power Interlock : inactive
Main Power Fault : false
Power Control Fault : false
Power Restore Policy : always-off
Last Power Event :
Chassis Intrusion : inactive
Front-Panel Lockout : inactive
Drive Fault : false
Cooling/Fan Fault : false
Если вывод команды у вас примерно совпадает с моим, вы можете
попробовать дальше:
# ipmitool -I open sdr list
# ipmitool -I open sel list
т.е. всё отлично. На данном этапе вы можете локально управлять
сервером, но локально не интересно, поэтому настраиваем дальше:
Настроим сетевую карточку. Для этого можно использовать скрипт
/usr/share/ipmitool/bmclanconf, идущий с ipmitool.
В моём случае его надо было подправить, в самом низу строчку привести
к такому виду:
ipmitool_lan_set "auth callback,user,operator,admin" "md5,password"
т.к. md2 у меня не поддерживается, что можно увидеть по строчке
"Auth Type Support":
# ipmitool lan print 1
Set in Progress : Set In Progress
Auth Type Support : NONE MD5 PASSWORD
...
Затем настраиваем карту:
# /usr/share/ipmitool/bmclanconf -c 1 -i eth0
Set in Progress : Set In Progress
Auth Type Support : NONE MD5 PASSWORD
Auth Type Enable : Callback : MD5 PASSWORD
: User : MD5 PASSWORD
: Operator : MD5 PASSWORD
: Admin : MD5 PASSWORD
IP Address Source : Static Address
IP Address : <your ip here>
Subnet Mask : <your mask here>
MAC Address : <your MAC here>
SNMP Community String : public
IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Enabled
Gratituous ARP Intrvl : 8.0 seconds
Default Gateway IP : <your gw MAC here>
Default Gateway MAC : 00:13:c3:35:ee:ff
Backup Gateway IP : 0.0.0.0
Backup Gateway MAC : 00:00:00:00:00:00
Cipher Suite Priv Max : Not Available
затем надо настроить пароль на управление BMC через LAN
# ipmitool -I open lan set 1 password <your password here>
Затем пробуем с удалённой машины с Linux:
$ ipmitool -I lan -H <your ip here> chassis status
Password: <your password here>
System Power : on
Power Overload : false
Power Interlock : inactive
Main Power Fault : false
Power Control Fault : false
Power Restore Policy : always-off
Last Power Event :
Chassis Intrusion : inactive
Front-Panel Lockout : inactive
Drive Fault : false
Cooling/Fan Fault : false
Получилось! :) Теперь вы можете удалённо
включать/выключать/перезагружать(soft и hard reset)/мониторить сервер!
Используемая документация:
* IPMI HOWTO for Debian GNU/Linux on the Intel SR2300 (Server Board SE7501WV2)
http://buttersideup.com/docs/howto/IPMI_on_Debian.html
* Сайт и рассылка openIPMI
http://openipmi.sourceforge.net/
* Сайт и рассылка ipmitool
http://ipmitool.sourceforge.net/
P.S. Я рассмотрел примитивное управление сервером, т.к. я настраивал в
короткое время и miniBMC. Нормальный BMC(не урезанный) поддерживает
также SOL(Serial Over LAN), что описано в вышеперечисленной
документации.
© 2005 Dmitry A. Koptev <dimez@nm.ru. >
1 , prezik (? ), 23:18, 27/01/2009 [ответить ]
+ /–
И ни слова про watchdog :( а как начал хорошо.
Неплохо так же добавить, что вместо "1" в командах типа ipmitool lan print 1 и bmclanconf -c 1 - это канал, который бывает так же и друнгим, и перед тем, как настраитвать, его надо найти. например, перебирая номера у команды ipmitool lan print 1, и выискивая тот, который признается, что он в самом деле LAN.