У многих в обслуживании имеются сервера с материнскими платами 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
(заодно собрал поддержку sk98lin)
Накладываем последовательно вышеуказанные патчи, собираем ядро с поддержкой IPMI и I2C(модулями), перегружаемся.
Создаём устройство ipmi0, если его нет:
# mknod /dev/ipmi0 c `cat /proc/devices | grep ipmidev |cut -d " " -f 1` 0подгружаем модули:
# 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т.е. всё отлично. На данном этапе вы можете локально управлять сервером, но локально не интересно, поэтому настраиваем дальше:
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)/перезагружать/мониторить сервер!