...
...
...

удаленное управление сервером через IPMI-интерфейс

У многих в обслуживании имеются серверы с материнскими платами Intel. К сожалению, из-за различных проблем либо с оборудованием, либо с недостаточно стабильнымии драйверами, бывает, что серверы повисают. С такими случаями поможет справиться аппаратный watchdog, но это отдельная железка.

В достаточно современных материнских платах от Intel (к сожалению, не встречался с серверными вариантами плат фирм, отличных от Intel, поэтому буду говорить только про них) есть встроенная возможность удаленно управлять сервером, так как там есть BMC (или miniBMC).

BMC (по терминологии Intel) – это Baseboard Management Controller, miniBMC, соответственно - урезанный вариант BMC (превращается в полноценный MC (Management Controller) путем установки IMM (Intel Management Module).

Для того, чтобы задействовать BMC/miniBMC, нужно сначала его сконфигурировать.

Для этого необходимо:
- иметь в ядре /* здесь и далее речь идет о решении под Linux – прим. ред. */ поддержку IPMI (я собрал модулями), также я собрал поддержку I2C для lm_sensors(тоже модулями);
- OpenIPMI - набор библиотек и утилит, который позволяет локальной машине взаимодействовать с BMC;
- ipmitool - CLI, позволяющий управлять BMC с Linux-машины, поддерживает "общение" через LAN и через OpenIPMI-интерфейс.
Итак, приступим.
Берем патчи для ядра с сайта 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.
Накладываем последовательно вышеуказанные патчи, собираем ядро с поддержкой IPMI и I2C (модулями), перегружаемся.
Создаем устройство ipmi0 (если его нет):

# mknod /dev/ipmi0 c `cat /proc/devices | grep ipmidev |cut -d " " -f 1` 0

Затем подгружаем модули:
- I2C - i2c-i801, eeprom (у меня так) – не обязательно;
- IPMI (ipmi_si, ipmi_devintf (для полноценного BMC) или 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 :
Subnet Mask :
MAC Address :
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 :
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

Теперь пробуем порулить с удаленной Linux-машины:

$ ipmitool -I lan -Hchassis status
Password:
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), перезагружать и мониторить сервер!



Dmitry A. Koptev, dimez@nm.ru.


© Сетевые решения