IPMI
Sisukord
Sissejuhatus
IPMI on lühend fraasist Intelligent Platform Management Interface. Kujutab ta endast operatsioonisüsteemist sõltumatut arvutisüsteemide haldamise liidest, mille spetsifikatsiooni on loonud Intel, HP, Dell ja NEC.[1] IPMI kasutamist toetab enamik serveritootjaid. IPMI võimaldab üle tavalise TCP/IP võrgu servereid sisse-välja lülitada, vaadelda riistvara seisundit ning erinevate andurite näite (temperatuur, ventilaatorite pöörlemiskiirused jms), serial over LAN (SOL) abil suhelda serveri konsooliga, jne. Lisaks defineerib IPMI võimaluse teavitada administraatorit riistvara vigadest SNMP protokolli abil. Paljudel serveritel on IPMI vaikimisi integreeritud, osadel juhtudel on võimalik IPMI kasutamine vastava lisakaardi abil.
IPMI eelisteks on see,et ta on üsnagi hästi standardiseeritud ja töötab põhimõtteliselt kõigil tootjatel ühtemoodi. Konsool (mis IPMI puhul on serial-over-lan) võib eri IPMI versioonides olla erinevalt lahendatud, aga siiani on nad kõik siiski tööle saanud. Linuxis tuleb siis muidugi ka konsool serialporti suunata. IPMI tugev külg on eelkõige see, et häda korral saab üle SSH konsooli ja ipmitooli abil kätte nt rebooti vajava serveri suvalisest kohast ja ei pea mingite tootjaspetsiifiliste javajunnidega mässama.
Üks tavaline IPMI toega halduskaart näeb välja selline
IPMI kontrolleriga suhtlemiseks on olemas mitmeid vabavaralisi vahendeid, nagu ipmitool[2], ipmiutil[3] ja openipmi[4]. Järgnevalt vaatame põgusalt IPMI kasutamist FreeBSD/Linux süsteemil ipmitool-i näitel.
Paigaldus FreeBSD7 süsteemis
# cd /usr/ports/sysutils/ipmitool # make install clean
Seejärel võib anda käsu
# kldload ipmi
Ipmi mooduli püsivaks laadimiseks rida faili /boot/loader.conf
ipmi_load="YES"
Paigaldus Linuxile
Enamike distributsioonide kernelis on juba IPMI tugi olemas, kui see mingil põhjusel puudub siis tuleb tuuma kompileerimisel menuconfigus defineerida järgnev
Device Drivers ---> Character devices ---> <M> IPMI top-level message handler ---> --- IPMI top-level message handler [ ] Generate a panic event to all BMCs on a panic <M> Device interface for IPMI <M> IPMI System Interface handler <M> IPMI Watchdog Timer <M> IPMI Poweroff
Ja loome ning paigaldame uued moodulid
make && make modules_install
IPMI kasutamiseks laadida moodulid
modprobe ipmi_msghandler modprobe ipmi_si modprobe ipmi_devintf
Kerneli teadete hulka peaksid ilmuma järgnevad read
ipmi message handler version 39.2 IPMI System Interface driver. ipmi_si: Trying SMBIOS-specified kcs state machine at i/o address 0xca2, slave address 0x20, irq 0 ipmi: Found new BMC (man_id: 0x000157, prod_id: 0x0029, dev_id: 0x20) IPMI kcs interface initialized
Moodulite automaatseks laadimiseks tuleb need lisada vastavasse faili.
Gentoo:
/etc/modules.autoload.d/kernel-2.6
Debian:
/etc/modules
Ipmitooli paigaldamine.
Gentoo:
# emerge ipmitool
Debian:
# apt-get install ipmitool
Versiooni ja nime näeme
# ipmitool mc info Device ID : 32 Device Revision : 1 Firmware Revision : 0.62 IPMI Version : 2.0 Manufacturer ID : 343 Manufacturer Name : Intel Corporation Product ID : 41 (0x0029) Product Name : S5000PSL Device Available : yes Provides Device SDRs : no Additional Device Support : Sensor Device SDR Repository Device SEL Device FRU Inventory Device IPMB Event Receiver Chassis Device Aux Firmware Rev Info : 0x00 0x42 0x00 0x03
Seadistus käsureal
Esimesena tuleks muuta vaikimisi olev administraatori parool. Antud näites on administraatori kasutajanimeks Operator ja parooliks password.
Vaatame kasutajate nimekirja
# ipmitool user list ID Name Callin Link Auth IPMI Msg Channel Priv Limit 1 true false true NO ACCESS 2 Operator true false true ADMINISTRATOR
Muudame kasutaja Operator konto parooli
# ipmitool user set password 2 Password for user 2: Password for user 2:
Vahel on abiks kasutaja sisse lülitada
# ipmitool user enable 2
Kiire admin kasutaja loomine (kanalisse 2 (esimene kaks viimasel real) luua kasutaja 2 (teine kaks viimasel real) privileegiga 4(admin) )
# ipmitool user set name 2 admin # ipmitool user enable 2 # ipmitool user set password 2 # ipmitool channel setaccess 2 2 link=on ipmi=on callin=on privilege=4
Enamasti hangib IPMI kontroller endale võrguaadressi DHCP abil. Olemasolevate võrguseadete vaatamine:
# ipmitool lan print Set in Progress : Set Complete Auth Type Support : NONE MD2 MD5 PASSWORD Auth Type Enable : Callback : NONE MD2 MD5 PASSWORD : User : NONE MD2 MD5 PASSWORD : Operator : NONE MD2 MD5 PASSWORD : Admin : NONE MD2 MD5 PASSWORD : OEM : NONE MD2 MD5 PASSWORD IP Address Source : DHCP Address IP Address : 192.168.1.19 Subnet Mask : 255.255.255.0 MAC Address : 00:e0:81:b0:9c:e3 SNMP Community String : public IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10 BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Disabled Gratituous ARP Intrvl : 2.0 seconds Default Gateway IP : 192.168.1.1 Default Gateway MAC : 00:00:00:00:00:00 Backup Gateway IP : 0.0.0.0 Backup Gateway MAC : 00:00:00:00:00:00 RMCP+ Cipher Suites : 0,1,2,3,6,7,8,11,12 Cipher Suite Priv Max : aaaaaaaaaaaaaaa : X=Cipher Suite Unused : c=CALLBACK : u=USER : o=OPERATOR : a=ADMIN : O=OEM
Kui ei soovita DHCP kasutamist, siis tuleb kõigepealt muuta IP aadressi konfiguratsioon staatiliseks:
# ipmitool lan set 1 ipsrc static
Seejärel võib asuda võrguparameetrite seadmisele:
# ipmitool lan set 1 ipaddr 192.168.1.19 # ipmitool lan set 1 netmask 255.255.255.0 # ipmitool lan set 1 defgw ipaddr 192.168.1.1
Lubame haldusmoodulil ka ARP päringutele vastamise:
# ipmitool lan set 1 arp respond on # ipmitool lan set 1 arp generate on # ipmitool lan set 1 arp interval 5
Vaatame kontrolliks serveri hetkeseisu:
# ipmitool 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 Front Panel Control : none
Tutvume sensorite infoga:
# ipmitool sdr CPU 0 Temp | 36 degrees C | ok CPU 1 Temp | 39 degrees C | ok Ambient Temp0 | 29 degrees C | ok Ambient Temp1 | 35 degrees C | ok Vcc 12V | 12.40 Volts | ok DDRP0 1.8V | 1.83 Volts | ok DDRP1 1.8V | 1.83 Volts | ok Vcc 3.3V | 3.30 Volts | ok Vcc 5V | 5.08 Volts | ok Vcc 3.3V STB | 3.25 Volts | ok Blower Fan 0 | 4194.40 RPM | ok Blower Fan 1 | 4429.60 RPM | ok Axial Fan 0 | 10579 RPM | ok Axial Fan 1 | 10579 RPM | ok Processor 0 | 0x00 | ok Processor 1 | 0x00 | ok
IPMI seadmega suhtlemisel saab kasutada erinevaid Cipher Suite'isid. Seadme juures on IPMI seadistustega määratud, millise šifrit kasutamist ühe või teise privieegiga kasutaja pöördumisel eeldatakse, tavaliselt vaikimisi nii
RMCP+ Cipher Suites : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 Cipher Suite Priv Max : Xaaaaaaaaaaaaaa : X=Cipher Suite Unused : c=CALLBACK : u=USER : o=OPERATOR : a=ADMIN : O=OEM
kus
- 0,1,2 ... - šifrite nimekiri (0 - ilma krüptot, 1 - Auth-HMAC-SHA1; Int = None; Conf = None), .... vt man bmc-config
0 - Authentication Algorithm = None; Integrity Algorithm = None; Confidentiality Algorithm = None 1 - Authentication Algorithm = HMAC-SHA1; Integrity Algorithm = None; Confidentiality Algorithm = None 2 - Authentication Algorithm = HMAC-SHA1; Integrity Algorithm = HMAC-SHA1-96; Confidentiality Algorithm = None 3 - Authentication Algorithm = HMAC-SHA1; Integrity Algorithm = HMAC-SHA1-96; Confidentiality Algorithm = AES-CBC-128 ...
- Xaaaaaaaaaaaaaa - šifri ja kasutaja privileegi vastavus (antud juhul ilma krüpota pöördumine on keelatud, kõigi muudega saab administaator ja temast madalama privileegiga kasutajad pöörduda)
Kaughaldus ipmitooli abil
Toimub käsuga
ipmitool -I lan -H HOST_IP_ADDRESS -U USERNAME -a IPMI_COMMAND
Näiteks
ipmitool -I lan -H 192.168.1.19 -U Operator -a chassis status
Restardi tegemiseks sobib käsk
ipmitool -I lan -H 10.40.4.14 -U admin -a power reset
Konsooli pilti näeb järgneva käsuga
ipmitool -I lanplus -H 192.168.1.19 -U Operator sol activate
Vähemalt ILO100 puhul näeb vaid bios'i ning loaderist edasise pildi vaatamiseks tuleb näiteks FreeBSD'd seadistada serialkonsool manualis juhendatud viisil http://www.freebsd.org/doc/en/books/handbook/serialconsole-setup.html või Gentoos http://www.gentoo-wiki.info/HOWTO_Linux_serial_console
Kui käsu peale teatatakse
IPMI v1.5 Serial Over Lan (ISOL) not supported!
Tuleb vastav featuur BIOSis lubada.
Kaughaldus freeipmi abil
iDrac seadistuste küsimiseks
# bmc-config -D LAN_2_0 -v -u root -p parool -h 10.1.200.50 --checkout | less
kus
- -D - protokoll
Probleemid
Probleemide korral võib proovida kontrollerile teha kas külm
# ipmitool mc reset cold Sent cold reset command to MC
Või kuumtaaskäivitust:
# ipmitool mc reset warm Sent warm reset command to MC
Kanaleid võib üritada otsida skriptiga
# Channel for i in $(seq 0 10); do response=$(ipmitool lan print ${i} 2>/dev/null|grep "IP Address Source") if [ "$response" ]; then echo "IPMI is on channel ${i}"; channel=$i; break; fi done
FreeBSD's tuleb seq asemel kasutada jot 0 10
IPMI Watchdog
TODO
Valvekoera ülesanne seisneb teha masinale reboot kui see peaks kokku jooksma või muid rumalusi tegema.
Põhimõtteliselt on seadistatud IPMI kaardile teatud ajaga mahalugemine (countdown) nt 300 sekundit, mille möödudes masin teeb reboodi. Kuni aga deemon masinas töötab siis lükkab see näiteks iga 5 sekundi tagant mahalugemist taas nulli ehk tagasi 300 peale. Kui nüüd juhtub masin kinni jooksma ei saa deemon enam rebooti edasi lükatata, lugemine jookseb lõpuni ja serverile tehakse restart.
Linuxi kernelisse peab olema kompileeritud eelnevalt IPMI Watchdog Timer (vaata ülespoole kerneli seadistust).
Selleks, et vaadata watchdogi infot (antud juhul ei ole watchdog sisse lülitatud)
# ipmitool mc watchdog get Watchdog Timer Use: Reserved (0x00) Watchdog Timer Is: Stopped Watchdog Timer Actions: No action (0x00) Pre-timeout interval: 0 seconds Timer Expiration Flags: 0x00 Initial Countdown: 0 sec Present Countdown: 0 sec
Sisselülitamiseks
# ipmitool mc watchdog on
Linuxis on deemoniks watchdogd
# watchdogd
Deemon ja IPMI suhtlevad omavahel /dev/watchdog seadme kaudu.
FreeBSDs kasutamiseks tuleb paigaldada freeipmi pakett. Freeipmi paketist tuleb kaasa utiliit bmc-watchdog nimeline utiliit.
Setup a bmc-watchdog daemon that resets the machine after 15 minutes (900 seconds) if the OS has crashed (see default bmc-watchdog rc script /etc/init.d/bmc-watchdog for a more complete example):
# bmc-watchdog -d -u 4 -p 0 -a 1 -i 900
- -d, Run bmc-watchdog as a daemon.
- -u INT, Set timer use. The timer use value can be set to one of the following: 1 = BIOS FRB2, 2 = BIOS POST, 3 = OS_LOAD, 4 = SMS OS, 5 = OEM.
- -p INT, Set pre-timeout interrupt. The pre timeout interrupt can be set to one of the following: 0 = None, 1 = SMI, 2 = NMI, 3 = Messaging Interrupt.
- -a INT, Set timeout action. The timeout action can be set to one of the following: 0 = No action, 1 = Hard Reset, 2 = Power Down, 3 = Power Cycle.
- -i SECONDS, Set initial countdown in seconds.
Lingid:
FreeIPMI kasutamine
FreeIPMI http://www.gnu.org/software/freeipmi/ tarkvara võimaldab sooritada praktiliselt samu tegevusi nagu IPMItool. Tarkvara paigaldamiseks sobib öelda nt
# apt-get install freeipmi-tools
Kõigi seadistuste salvestamiseks sobib öelda
# bmc-config --checkout > bmc-config.output.txt
Sektsioonide nimekirja küsimiseks
# bmc-config -L User1 ... User16 Lan_Channel Lan_Conf Lan_Conf_Auth Lan_Conf_Security_Keys Lan_Conf_User_Security Lan_Conf_Misc Rmcpplus_Conf_Privilege Serial_Channel Serial_Conf SOL_Conf
Konkreetse sektsiooni seadistuste küsimiseks
# bmc-config -S Lan_Conf -o # # Section Lan_Conf Comments # # In the Lan_Conf section, typical networking configuration is setup. Most users # will choose to set "Static" for the "IP_Address_Source" and set the # appropriate "IP_Address", "MAC_Address", "Subnet_Mask", etc. for the machine. # Section Lan_Conf ## Possible values: Unspecified/Static/Use_DHCP/Use_BIOS/Use_Others IP_Address_Source Static ## Give valid IP address IP_Address 10.1.1.130 ## Give valid MAC address MAC_Address 00:30:05:FC:9F:80 ## Give valid Subnet Mask Subnet_Mask 255.255.255.0 ## Give valid IP address Default_Gateway_IP_Address 10.1.1.4 EndSection
Parameetri väärtuse salvestamiseks, nt
# bmc-config --commit --key-pair="lan_conf:Subnet_Mask=255.255.255.0"
Tundub, et FreeIPMI puhul on selles mõttes mõnus seadistusi muuta, et saab küsida mõne sektsiooni kohta olemasoleva seadistuse, teha tekstis vajalikud muudatused ja laadida nad sisse
TODO
Kasulikud lisamaterjalid
- http://www.intel.com/design/servers/ipmi/
- http://sources.redhat.com/cluster/wiki/IPMI_FencingConfig
- http://dpw.threerings.net/projects/ipmi-kmod/
- http://gfs.wikidev.net/IPMI_Fencing
- http://wiki.adamsweet.org/doku.php?id=ipmi_on_linux
- http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/topic/liaai/ipmi/BPipmi.pdf
- http://en.wikipedia.org/wiki/Out-of-band_management
- http://securfox.wordpress.com/2009/10/01/howto-setup-ipmi-under-linux-rhel-centos-5/
- http://openipmi.sourceforge.net/