목차

IPMI 셋팅과 이용

IPMI(Intelligent Platform Management Interface)는 서버를 포함한 컴퓨터를 관리하고 모니터링 할 수 있는 기능을 제공하는 표준 플랫폼이다. 제조사에 상관없이 H/W가 IPMI를 지원하면 동일한 방식으로 괸리와 모니터링을 할 수 있다. (제조사별로 추가된 일부 명령이 있음) IPMI를 이용하면 서버 CPU, FAN, 파워, 메모리, 온도 등 각종 센서 정보를 모니터링할 수 있고, H/W 이벤트 발생(메모리 문제, Power 문제)시 syslog를 통해 바로 확인할 수 있다. 그리고 IPMI 네트웍환경을 통해 원격에서 서버를 켜고 끌 수 있을 뿐 아니라 콘솔화면을 그대로 볼 수 있다.
H/W 장애시 빠른 대응과 관리 편의성을 제공하는 IPMI는 서버 관리에 필수 사항이다.

IPMI 준비

오래된 서버들도 IPMI를 지원하지만, 실제 지원하는지 확인하고 싶다면 dmidecode로 알 수 있다. IPMI정보가 나오면 지원하는 것이다. 단 버전이 2.0보다 낮다면(예를들어 1.5라던지) 이용하는데 제약이 생길 수 있다.

$ dmidecode | grep -A10 IPMI

Linux에서 (CentOS)

IPMI 패키지를 설치한다. freeipmi, ipmitool 등 여러 툴이 있지만 ipmitool을 사용하겠다.

$ yum install ipmitool OpenIPMI
$ ipmitool lan print 1             # <-- IPMI 커널 모듈을 로딩하지 않아서 그렇다.
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory

IPMI 커널 모듈을 로딩한다.

$ service ipmi start
$ lsmod |grep ipmi
ipmi_devintf            7729  2
acpi_ipmi               3745  1 power_meter
ipmi_si                44687  2 acpi_ipmi
ipmi_msghandler        38826  3 ipmi_devintf,acpi_ipmi,ipmi_si

FreeBSD에서

ipmitool 패키지를 설치하고 커널 모듈을 로딩한다.

$ pkg install ipmitool
$ kldload ipmi
$ kldstat | grep ipmi
3    1 0xffffffff80fdc000 f970     ipmi.ko

부팅시에 IPMI모듈이 자동으로 올라오도록 /boot/loader.conf 에 다음을 추가한다. 단, FreeBSD 8.1에서는 버그(?)로 인해 부팅시 kernel panic이 일어날 수 있으니, 부팅 이후 따로 로딩하도록.

ipmi_load="YES"
coretemp_load="YES"

IPMI 이용 예

	
$ ipmitool sel list
   1 | 06/20/2012 | 21:32:52 | Event Logging Disabled #0x72 | Log area reset/cleared | Asserted
   2 | 07/18/2012 | 14:19:01 | Power Supply #0x63 | Power Supply AC lost | Asserted
   3 | 07/18/2012 | 14:19:11 | Power Supply #0x74 | Redundancy Lost | Asserted
... 생략 ...
$ ipmitool fru
... 생략 ...
FRU Device Description : iDRAC7          
Board Mfg Date        : Wed May  2 17:27:00 2012
Board Mfg             : DELL
Board Product         : PowerEdge R620                
... 생략 ...

FRU Device Description : PS1 (ID 1)
Board Mfg Date        : Mon Jun  4 18:14:00 2012
Board Mfg             : DELL
Board Product         : PWR SPLY,750WP,RDNT,DELTA    
... 생략 ...

FRU Device Description : PS2 (ID 2)
Board Mfg Date        : Mon Jun  4 18:44:00 2012
Board Mfg             : DELL
Board Product         : PWR SPLY,750WP,RDNT,DELTA    
... 생략 ...
$ ipmitool sensor
... 생략 ...
FAN MOD 1A RPM   | 4320.000   | RPM        | ok    | na        | 1920.000  | na        | na        | na        | na        
FAN MOD 2A RPM   | 4440.000   | RPM        | ok    | na        | 1920.000  | na        | na        | na        | na        
FAN MOD 3A RPM   | 4320.000   | RPM        | ok    | na        | 1920.000  | na        | na        | na        | na        
... 생략 ...

SDR(Sensor Data Repository) 정보 중에 FAN 정보만 보려면 type fan 옵션을 추가한다. 이 외에 온도 정보(type temp), Voltage 정보(type voltage), 배터리 정보(type batt)만 등 다양한 센서정보만 별도로 확인할 수 있다.

$ ipmitool sdr
... 생략 ...
Current 1        | 0.40 Amps         | ok
Current 2        | 0.20 Amps         | ok
Voltage 1        | 216 Volts         | ok
Voltage 2        | 216 Volts         | ok
PS Redundancy    | 0x00              | ok
... 생략 ...
$ ipmitool sdr type
$ ipmitool sdr type fan
Fan1A RPM        | 30h | ok  |  7.1 | 2400 RPM
Fan2A RPM        | 32h | ok  |  7.1 | 2280 RPM
Fan3A RPM        | 34h | ok  |  7.1 | 2400 RPM
Fan4A RPM        | 36h | ok  |  7.1 | 2160 RPM
Fan5A RPM        | 38h | ok  |  7.1 | 2280 RPM
Fan6A RPM        | 3Ah | ok  |  7.1 | 2280 RPM
Fan Redundancy   | 75h | ok  |  7.1 | Fully Redundant
... 생략 ...
$ ipmitool power status
Chassis Power is on

부팅시 PXE 부팅, CDROM 부팅되도록 설정할 수 있다. 또는 자동으로 BIOS 셋업화면으로 들어갈 수도 있다.
하지만 IPMI SOL(Serial Over LAN)을 이용하면 콘솔화면을 원격에서 볼 수 있으니, 이 명령을 이용하지 않고도 원격에서 BIOS화면을 보면서 부팅 디바이스를 변경할 수 있다. 따라서 이 명령은 IPMI SOL을 이용할 수 없는 상황에서 유용하다. (※ SOL에 대해서는 별도 글에서 설명하겠다.)

$ ipmitool chassis bootdev
bootdev [clear-cmos=yes|no]
bootdev [options=help,...]
  none  : Do not change boot device order
  pxe   : Force PXE boot
  disk  : Force boot from default Hard-drive
  safe  : Force boot from default Hard-drive, request Safe Mode
  diag  : Force boot from Diagnostic Partition
  cdrom : Force boot from CD/DVD
  bios  : Force boot into BIOS Setup
  floppy: Force boot from Floppy/primary removable media

$ ipmitool chassis bootdev cdrom     # <-- CD/DVD 부팅되도록 한다.
Set Boot Device to cdrom
$ ipmitool chassis bootparam get 5
Boot parameter version: 1
Boot parameter 5 is valid/unlocked
Boot parameter data: 8014000000
Boot Flags :
   - Boot Flag Valid                                     # <-- Invalid -> Valid로 바뀜
   - Options apply to only next boot                     # <-- 이번 Boot Device설정은 일회성
   - BIOS PC Compatible (legacy) boot
   - Boot Device Selector : Force Boot from CD/DVD       # <-- No override -> Force Boot ...로 바뀜
   - Console Redirection control : System Default
   - BIOS verbosity : Console redirection occurs per BIOS configuration setting (default)
   - BIOS Mux Control Override : BIOS uses recommended setting of the mux at the end of POST

$ ipmitool chassis bootdev bios                 # <-- 부팅할 때 BIOS 셋업화면으로 들어간다.
Set Boot Device to bios

$ ipmitool chassis bootparam set bootflag force_bios         # <-- 또는 chassis bootparam 설정으로도 동일한
Set Boot Device to force_bios

부팅 디바이스 변경은 일회성이여서 한 번 부팅 후에는 원래 설정으로 돌아간다. 만약 매번 바뀐 설정이 유지되도록 하려면 persistent 옵션을 추가하면 된다. Dell 1950서버는 persistent 옵션이 유지되었지만, R610서버에서는 부팅 후 이전 상태로 돌아가버렸다. 개인적 경험이니 R610설정을 제가 잘 못 한 것일 수도. ^^

$ ipmitool chassis bootdev none  options=help        # <-- 다양한 옵션 확인
$ ipmitool chassis bootdev cdrom options=persistent  # <-- 부팅할 때마다 계속 CDROM BIOS화면으로 들어가도록 한다.
$ ipmitool chassis bootparam get 5
... 생략 ...
Boot Flags :
   - Boot Flag Valid
   - Options apply to all future boots               # <-- 변경 유지
... 생략 ...
$ ipmitool delloem mac

System LOMs
NIC Number   MAC Address      Status

0      ??:??:fd:??:??:ba   Enabled
1      ??:??:fd:??:??:bb   Enabled
2      ??:??:fd:??:??:b8   Enabled
3      ??:??:fd:??:??:b9   Enabled

iDRAC7 MAC Address ??:??:fd:??:??:54

$ ipmitool delloem powermonitor
Power Tracking Statistics
Statistic      : Cumulative Energy Consumption
Start Time     : Thu Mar 31 16:05:44 2011
Finish Time    : Mon Nov 24 18:21:01 2014
Reading        : 1142.4 kWh
... 생략 ...

ipmitool에서 지원하지 않는 OEM별 명령을 freeipmiipmi-oem명령에서 지원할 수 있으니, 필요시 함께 사용하는 것도 좋을 것 같다.

$ ipmi-oem dell get-power-consumption-data              # <-- ipmitool delloem powermonitor와 동일한 명령
Cumulative Energy Start Time : 03/31/11 - 16:05:44
Cumulative Energy            : 1142.39 kWh
... 생략 ...

원격 관리를 위한 IPMI IP 셋팅

IPMI용 IP를 셋팅하지 않으면 로컬에서만 IPMI 결과를 볼 수 있다. 로컬에서만 사용하는 건 IPMI의 능력(?)을 반의 반만 사용하는 것이다.
IPMI IP를 셋팅하면 원격에서 서버를 켜거나 리부팅할 수 있고, 콘솔화면을 원격에서 그대로 볼 수 있다. 그리고 FAN RPM, 파워 서플라이 정보, 전력사용량, 각종 센서 정보를 원격에서도 그대로 뽑아올 수 있다.

IPMI IP셋팅을 위해서는 별도 네트웍망을 구축해야 하는가? 아니다. 네트웍망을 변경없이 그대로 사용하고, IPMI IP만 서버에 추가해주면 된다.
단 서버의 IP와는 다른 IP를 사용해야하며, 네트웍 스위치에는 IPMI용 게이트웨이 IP를 추가 셋팅해줘야 한다.

IPMI IP 셋팅 명령은 다음과 같다.

$ ipmitool lan set 1 ipsrc static
$ ipmitool lan set 1 ipaddr
$ ipmitool lan set 1 netmask
$ ipmitool lan set 1 defgw ipaddr
$ ipmitool lan set 1 access on

다음과 같은 환경으로 셋팅한다고 하자.

- 서버 IP : 10.10.1.120  (ifconfig결과에 나오는 IP. IPMI와 무관함)
- IPMI IP : 10.10.20.120
- IPMI GW : 10.10.20.1   (네트웍 스위치에 이 IP가 있어야 다른 IPMI서버끼리 통신을 할 수 있다.)
$ ipmitool lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback : MD2 MD5
                        : User     : MD2 MD5
                        : Operator : MD2 MD5
                        : Admin    : MD2 MD5
                        : OEM      :
IP Address Source       : Static Address       # <-- static
IP Address              : 192.168.0.120        # <-- 셋팅 전
Subnet Mask             : 255.255.255.0
MAC Address             : ??:??:c4:ee:??:??
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled
Default Gateway IP      : 192.168.0.1
Default Gateway MAC     : 00:00:00:00:00:00
... 생략 ...

$ ipmitool lan set 1 ipsrc static                 # <-- DHCP로 되어 있으면 아래 명령 자체가 먹지 않는다. 보통 static으로 이미 되어 있음.
$ ipmitool lan set 1 ipaddr 10.10.20.120
Setting LAN IP Address to 10.10.20.120

$ ipmitool lan set 1 netmask 255.255.255.0
Setting LAN Subnet Mask to 255.255.255.0

$ ipmitool lan set 1 defgw ipaddr 10.10.20.1
Setting LAN Default Gateway IP to 10.10.20.1

$ ipmitool lan set 1 access on

$ ipmitool lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback : MD2 MD5
                        : User     : MD2 MD5
                        : Operator : MD2 MD5
                        : Admin    : MD2 MD5
                        : OEM      :
IP Address Source       : Static Address
IP Address              : 10.10.20.120               # <-- 셋팅 후
Subnet Mask             : 255.255.255.0
MAC Address             : ??:??:c4:ee:??:??
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled
Default Gateway IP      : 10.10.20.1                 # <-- 셋팅 후
Default Gateway MAC     : 00:00:00:00:00:00
... 생략 ...

IPMI를 2대 이상 셋팅하고, 셋팅된 다른 서버에서 ping 10.10.20.120을 해본다. ping이 되어야 정상.
ping이 안된다면 IPMI over LAN(IPMI 네트웍 접속) 트러블슈팅을 읽어보길 바란다.

IPMI user 셋팅

원격지에서 인증할 user를 설정한다.

$ ipmitool user list 1
ID  Name        Callin  Link Auth   IPMI Msg   Channel Priv Limit
2   root             true    true       true       ADMINISTRATOR

$ ipmitool user set password 2            # <-- 숫자 2는 위의 ID필드에 표시된 유저 ID를 말함. 위에서는 'root' ID.
Password for user 2:  <-- PW 입력
Password for user 2:  <-- PW 재입력

$ ipmitool user summary 1
Maximum IDs       : 16
Enabled User Count  : 1                   # <-- enable 유저가 1명 있음.
Fixed Name Count    : 1

만약 Enabled User0으로 나온다면 ipmitool user enable 2 명령으로 enable시킨다. 비밀번호는 interactive하게 입력하지 않고, ipmitool user set password 2 <비밀번호> 처럼 셋팅할 수 있다. 스크립트로 셋팅하면 이 방법이 유용

$ ipmitool -I lan -H 10.10.20.20 -U root power status
Password:
Chassis Power is on

$ ipmitool -I lan -H 10.10.20.20 -U root -P <비밀번호> power status
Chassis Power is on

IPMI event 데몬

ipmievd 데몬은 SEL(System Event Log, ipmitool sel info로 확인 가능)을 10초간격으로 체크해서 syslog로 보내주는 데몬이다. 데몬은 syslogLOCAL4 facility값으로 보내준다. CPU, FAN, 메모리 H/W 문제, RAID 배터리 문제, 파워 Redundancy 메시지, Disk 교체 메시지 등 각종 H/W 메시지를 SEL 결과값으로 확인할 수 있다.

Linux에서 (CentOS)

/etc/sysconfig/ipmievd 셋팅한다. (120초 간격으로 체크하도록 설정)

IPMIEVD_OPTIONS="sel timeout=120 pidfile=/var/run/ipmievd.pid"

### 수정 후 서비스 재기동

$ service ipmievd start

FreeBSD에서

ipmievd용 rc 스크립트는 제공되지 않으므로 다음과 같이 /usr/local/etc/rc.d/ipmievent 스크립트를 만들고, rc.confipmievent_enable=“YES” 를 추가한다.

$ service ipmievent start
#!/bin/sh
#
# ipmievd daemon
#
# PROVIDE: ipmievent
# REQUIRE: LOGIN
# BEFORE:  securelevel
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable 'ipmievd':
# ipmievent_enable="YES"
#
# by truefeel (좋은진호, http://coffeenix.net/)

. /etc/rc.subr

ipmievent_enable=${ipmievent_enable:-"NO"}

name="ipmievent"
rcvar="ipmievent_enable"      # `set_rcvar`
command="/usr/local/sbin/ipmievd"

[ -z "${ipmievent_flags}" ] && ipmievent_flags="timeout=120"
ipmievent_flags=" sel ${ipmievent_flags}"
required_files="/dev/ipmi0"
pidfile="/var/run/ipmievd.pid0"

load_rc_config $name
run_rc_command "$1"

syslog의 경우 (/etc/syslog.conf)

# IPMI
local4.debug            @10.10.1.123

rsyslog의 경우 (/etc/rsyslog.d/ipmi.conf)

# IPMI
local4.debug            @10.10.1.123:514

서버 LCD 바꾸기 (Dell 서버의 경우)

Dell서버는 LCD화면에 표시될 정보(또는 메시지)를 바꿀 수 있다. 디폴트로 서버 시리얼넘버(Service Tag)가 표시된다.
coffeenix.net으로 변경한 예이다.

$ ipmitool delloem lcd
... 생략 ...
   lcd set mode {none}|{modelname}|{ipv4address}|{macaddress}|
   {systemname}|{servicetag}|{ipv6address}|{ambienttemp}
   {systemwatt }|{assettag}|{userdefined}
... 생략 ...

$ ipmitool delloem lcd set mode userdefined coffeenix.net
LCD info
    Setting: User defined
    Text:    coffeenix.net

$ ipmitool delloem lcd set mode servicetag
LCD info
    Setting:   System Tag

참조링크