当サーバーはProLiant Microserverを利用しているのですが、先日利用しているOSをDebian 7.0にバージョンアップして以降、Remote Management Cardに実装されているセンサーの情報が取れなくて気になっていました。
しばらく仕事が忙しく手をつけられていなかったのですが、ようやく仕事が一段落したのでアレコレやってみたところ解消できましたので、次回のバージョンアップ時に苦労しないよう、自分用メモがてら残しておくことにしました。
以下バージョンアップ前は読めていた、ということで、あらかじめ/etc/modulesにはipmi_siとipmi_devintfが記載されているという前提で記載していますが、新たにインストールする場合は再起動したときに備えて、/etc/modulesに記載しておいたほうが良いでしょう。
まずは/dev配下にipmi0があるか確認します。Debian 7.0にしたからなのか、後述の理由によるものかは分かりませんが、自分の場合バージョンアップ後ipmi0が無くなっていました。
server:~# ls -la /dev | grep ipmi0
なければmknodでデバイスファイルを作成します。
server:~# cat /proc/devices | grep ipmi
251 ipmidev
server:~# mknod /dev/ipmi0 c 251 0 ← 251の箇所は上でgrepしたときに表示された数字を入力
server:~# ls -la /dev | grep ipmi0
crw——T 1 root root 251, 0 May 22 11:45 ipmi0
早速 ipmitool を実行…してみましたが、やはりエラーとなります。
server:~# ipmitool sdr
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
Get Device ID command failed
Unable to open SDR for reading
ほとんどのサイトはmknodだけで上手くいくようで、今回のようなエラーになることはないようなのですが、調べてみると同じような環境でエラーになる、という事例がみつかりました。
http://bodgitandscarper.co.uk/centos/hp-microserver-remote-management-card/
要するにBIOSが教えているアドレスが間違っている、というものなので、本当に同じ状況になっているか確認してみます。
server:~# dmesg | grep ipmi
[ 7.045900] ipmi message handler version 39.2
[ 7.061675] ipmi_si: probing via SMBIOS
[ 7.061680] ipmi_si: SMBIOS: io 0xca8 regsize 1 spacing 1 irq 0
[ 7.061684] ipmi_si: Adding SMBIOS-specified kcs state machine
[ 7.061691] ipmi_si: probing via SPMI
[ 7.061696] ipmi_si: SPMI: mem 0x0 regsize 1 spacing 1 irq 0
[ 7.061699] ipmi_si: Adding SPMI-specified smic state machine
[ 7.061705] ipmi_si: Trying SMBIOS-specified kcs state machine at i/o address 0xca8, slave address 0x20, irq 0
[ 7.061752] ipmi_si: Interface detection failed
[ 7.076092] ipmi_si: Trying SPMI-specified smic state machine at mem address 0x0, slave address 0x0, irq 0
[ 7.076099] ipmi_si: Could not set up I/O space
[ 7.136092] ipmi device interface
server:~# dmidecode –type 38
# dmidecode 2.11
SMBIOS 2.6 present.
Handle 0x001B, DMI type 38, 18 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 1.5
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA8 (I/O)
Register Spacing: Successive Byte Boundaries
やはり同じエラーが発生していました。
というわけでmodprobe.d配下に以下の内容をipmi.confという名前で保存します。
server:~# echo “options ipmi_si type=kcs ports=0xca2” > /etc/modprobe.d/ipmi.conf
そしてモジュールを読み込み直してみます。
server:~# modprobe -r ipmi_devintf
server:~# modprobe -r ipmi_si
server:~# modprobe ipmi_si
server:~# modprobe ipmi_devintf
うまく読めたか確認してみます。
server:~# tail -10 /var/log/messages
May 22 12:02:26 server kernel: [457541.348220] ipmi message handler version 39.2
May 22 12:02:26 server kernel: [457541.349327] IPMI System Interface driver.
May 22 12:02:26 server kernel: [457541.349331] ipmi_si: probing via hardcoded address
May 22 12:02:26 server kernel: [457541.349336] ipmi_si: Adding hardcoded-specified kcs state machine
May 22 12:02:26 server kernel: [457541.349343] ipmi_si: Trying hardcoded-specified kcs state machine at i/o address 0xca2, slave address 0x0, irq 0
May 22 12:02:26 server kernel: [457541.496550] ipmi_si ipmi_si.0: Found new BMC (man_id: 0x000001, prod_id: 0x3431, dev_id: 0x20)
May 22 12:02:26 server kernel: [457541.496577] ipmi_si ipmi_si.0: IPMI kcs interface initialized
May 22 12:02:30 server kernel: [457545.351928] ipmi device interface
今度は読めたようなので、早速ipmitoolを実行してみます。
server:~# ipmitool sdr
Watchdog | 0x00 | ok
CPU_THEMAL | 35 degrees C | ok
NB_THERMAL | 40 degrees C | ok
SEL Rate | 0 messages | ok
AMBIENT_THERMAL | 27 degrees C | ok
EvtLogDisabled | 0x00 | ok
System Event | 0x00 | ok
SYS_FAN | 1200 RPM | ok
CPU Thermtrip | Not Readable | ns
Sys Pwr Monitor | 0x00 | ok
問題ないことが確認でき、ようやくすべてバージョンアップ前と同等の状況に復帰しました。
CentOS6.9で同じ現象で悩みましたが、
このとおりに対応したら上手くいきました。
大変助かりました。
ありがとうございました。
すみません、わざわざコメントを残していただきありがとうございます。
お役に立てたようで何よりです。