IPMI

Allikas: Kuutõrvaja

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

Supermicro aoc-ipmi20-e.jpg

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