IPMIとは

IPMIとはサーバ機を遠隔からOSに関わらず監視、操作するインターフェイス規格のこと。

これを使用するにはまずハードウェアが対応していることが前提である上、それなりの設定が必要となる。

そしてこのIPMIデバイスにアクセスするためのソフトウェアがIPMIToolである。

version2から Serial over IP(sol) をサポートするようになったようなのでコンソールログインもできる。

IPMIの設定

IPMIを使用するにはいくつかの設定が必要となる。これは下記のように階層化されている。

  • BIOSレベルの入出力設定
  • BootLoaderレベルの入出力設定
  • Kernelレベルの入出力設定
  • OSレベルの入出力設定

ほとんどシリアルコンソールの設定と同じなので下記リンクが参考になる。

BIOSの設定

以下を設定するとPCのPOST(電源セルフテスト)からBIOSのスタートアップ、セットアップの入出力を管理LANポートに渡せる。

BIOS Setupを立ち上げて[Server]-[Console Redirection]に移動する。 以下のように設定する。

  • BIOS Redirection Port : [Serial Port B]
  • ACPI Redirection Port : [Serial Port B]
  • Baud Rate [115.2K]
  • Terminal Type : [VT100+]
  • Flow Control [CTS/RTS]

GRUBの設定

以下の設定をするとブートローダー(ここではGRUB)のスタートアップ、メニューの入出力を管理LANポートに渡せる。

/boot/grub/grub.conf

default=0
timeout=5
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz

textしか出力できないのでsplashimageはコメントアウトする。

続いてOSの入出力を管理LANポートに渡す設定。

title CentOS (2.6.18-128.1.10.el5xen)
	root (hd0,0)
	kernel /xen.gz-2.6.18-128.1.10.el5
	module /vmlinuz-2.6.18-128.1.10.el5xen ro root=/dev/sda2
	module /initrd-2.6.18-128.1.10.el5xen.img

ここでコンソールをどこに出力するかの設定をしている。

xenカーネルを使うと、本来IPMIで使うttyS1をxenconsoleに奪われてしまう。これを回避するには

上記のようにxencons=ttyS2などと明記する必要がある。とにかくttyS0, ttyS1 以外にする。

!!! 上の設定をしてもOSの起動メッセージが見れない。しかし xenカーネルではない普通のカーネルなら同様の設定でも見れる。

title CentOS (2.6.18-128.el5)
	root (hd0,0)
	kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/1
	initrd /initrd-2.6.18-128.el5.img

grub設定が悪いのか、xenカーネル自体がシリアル出力未対応でビルドされたのか、まだ不明。

OS上での設定

clsではCENTOS 5を用いているが、多くのLinuxでも同様の設定と思われる。

/etc/inittab に

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2

上のような記述があるのでそこに

co:2345:respawn:/sbin/agetty 19200 ttyS1 vt100-nav

を追加する。

/etc/securetty に

ttyS1

を追加。

また、下記のドライバを読み込む必要がある。

  • ipmi_devintf
  • ipmi_si
  • ipmi_msghandler
  • 8250

上の3つについてはyumでOpenIPMI、OpenIPMI-tools、OpenIPMI-devel、OpenIPMI-libsをインストールし、root権限で

chkconfig ipmi on

としておけば自動で読み込まれる。

8250については/etc/rc.localに

modprobe 8250

と書くことで自動化した。

これらのドライバがどう読み込まれているのかを知るためにはdmesgを使うと良い。

[root@cls002 ~]# dmesg | grep 8250
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

正常な状態では上記のようになる。

この8250ドライバは、GRUBの設定でttyS1をxen consoleに奪われないようにしないと読み込めないのでそこに注意する。

ちなみに、下記がxen consoleにttyS1を奪われているなど、何らかの理由で8250ドライバが正常に働いていない状態。

こうなるとIPMIToolのコンソールアクセスが出来ない。

# dmesg |grep 8250
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
8250_pnp: Unknown symbol serial8250_unregister_port
8250_pnp: Unknown symbol serial8250_register_port
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled

管理LANポートのIPアドレスなどの設定

ipmitoolというオープンソースのツールを用いる。

インストールはyumで。

# yum install -y OpenIPMI OpenIPMI-devel OpenIPMI-tools

ipmitoolの使い方はmanしてもぐぐっても、あまり分からなかったので、ここでは判明した分だけを載せる。以下の例はcls180のもの。他のclsも同様に設定できる。

まずは現在の管理LANポートの状態を取得。

[root@cls180 ~]# ipmitool lan print
Set in Progress         : Set Complete
Auth Type Support       : NONE MD5 PASSWORD
Auth Type Enable        : Callback : NONE MD5 PASSWORD
                        : User     : NONE MD5 PASSWORD
                        : Operator : NONE MD5 PASSWORD
                        : Admin    : NONE MD5 PASSWORD
                        : OEM      : NONE MD5 PASSWORD
IP Address Source       : DHCP Address
IP Address              : 10.10.49.180
Subnet Mask             : 255.255.255.0
MAC Address             : 00:16:17:c3:55:e1
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 10.10.49.254
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 0,1,2,3
Cipher Suite Priv Max   : Not Available

次に、IPアドレスの取得方法の設定。

[root@cls180 ~]# ipmitool lan set 2 ipsrc
lan set <channel> ipsrc <source>
  none   = unspecified
  static = static address (manually configured)
  dhcp   = address obtained by BMC running DHCP
  bios   = address loaded by BIOS or system software

4つから選択できるが、ここではstaticにしてみる。

[root@cls180 ~]# ipmitool lan set 2 ipsrc static

再度、状態を表示させ確認する。

[root@cls180 ~]# ipmitool lan print
----------略----------
IP Address Source       : Static Address
IP Address              : 192.168.1.1
Subnet Mask             : 255.255.255.0
MAC Address             : 00:16:17:c3:55:e1
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 0.0.0.0
---------略-----------

IPアドレス、サブネットマスク、ゲートウェイの設定は以下。

[root@cls180 ~]# ipmitool lan set 2 ipaddr 10.10.49.180
Setting LAN IP Address to 10.10.49.180
[root@cls180 ~]# ipmitool lan set 2 netmask 255.255.255.0
Setting LAN Subnet Mask to 255.255.255.0
[root@cls180 ~]# ipmitool lan set 2 defgw ipaddr 10.10.49.254
Setting LAN Default Gateway IP to 10.10.49.254

ipmitoolのユーザー設定

ipmitoolを使用するユーザーの設定をする。

ユーザー関連のコマンド群

[root@cls180 ~]# ipmitool user
User Commands: summary [<channel number>]
                   list    [<channel number>]
                   set name     <user id> <username>
                   set password <user id> [<password>]
                   disable      <user id>
                   enable       <user id>
                   priv         <user id> <privile level> [<channel number>]
                   test         <user id> <16|20> [<password]>

ユーザーリストは以下。

[root@cls180 ~]# ipmitool user list
ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
4   administrator    true    false      false      Unknown (0x0)

上のは全くの初期状態なので、適当なユーザーとパスワードを設定しなければならない

ipmitoolで遠隔から電源ON,OFF、コンソールログインなど

注意事項

clsの管理LANポートは10.10.49.0/24のネットワークにいる。遠隔からこれにアクセスするには操作するマシンも

10.10.49.0/24のネットワークにいなければならない。現在はfutenmaだけを参加させている。

[root@futenma ~]# ifconfig eth1.60
eth1.60   Link encap:Ethernet  HWaddr 00:13:21:C8:64:E2
          inet addr:10.10.49.200  Bcast:10.10.49.255  Mask:255.255.255.0
          inet6 addr: fe80::213:21ff:fec8:64e2/64 Scope:Link

なので、以下、ipmitoolを使用するにはまずfutenmaにログインする。

[user@ibook ~]# ssh futenma.ie.u-ryukyu.ac.jp
  • ユーザー 説明では
    -U administrator

    としているが、これはサーバ班用なので、その他の人は

    -U os

    として下さい。

  • IPアドレス
    -H 10.10.49.180

    これはcls180のIPアドレスです。他のclsにアクセスする場合は第四フィールドを変更してください。

    -H 10.10.49.[1~180]
  • セッションsolセッションは同時に1ユーザーしか張れません。

使い方

ipmitoolでclsの電源を切るには

[root@futenma ~]# ipmitool -I lanplus -H 10.10.49.180 -U administrator power soft

電源を入れるには

[root@futenma ~]# ipmitool -I lanplus -H 10.10.49.180 -U administrator power on

再起動するには

[root@futenma ~]# ipmitool -I lanplus -H 10.10.49.180 -U administrator power reset

コンソールログインするには

[root@futenma ~]# ipmitool -I lanplus -H 10.10.49.180 -U administrator sol activate

抜ける時は、 enter→~(チルダ)→.(ドット)

特に最後のコンソールログインは、clsにsshできない、pingすら通らない、といった状況で非常に役にたつ。

さらにBIOSの設定、GRUBの設定をちゃんとやっていれば、BIOSセットアップも遠隔から行える。

参考リンク