最近の 1U サーバなどでは、IPMI という Intel の規格にそったものが搭載されています。IPMI を使うと、おもに次のようなことがなんとネットワーク経由で操作できます。詳しくは、DSAS 開発者のブログを参照してください。
- BIOS の設定変更
- 電源のオフオン
- 各種センサーの情報の取得(温度やファンの回転数など)
今回、IPMI を使ってみようと思ったのは、おもに BIOS の設定変更を遠隔でやりたいと思ったからで、さらにいうと BIOS のブート順序の設定変更をいちいちデータセンターまで行って行いたくない。データセンターでの現場作業はあまり心身によろしくないということではじめて IPMI を設定して使ってみました。
さて、今回は DELL 1U サーバの R300 + DRAC5 と R200 + DRAC4 での組み合わせでの IPMI の設定方法です。DRAC というのは、Dell Remote Access Controller の略で簡単に言ってしまうと DELL 製の IPMI カードです。DRAC がない場合でも IPMI に対応していましたが、DRAC があるメリットもあるので後述します。
まずは、R300 + DRAC5 の組み合わせでの設定方法から。R300 は SOL(Serial Over LAN) をサポートしているので SOL 経由で IPMI を使うことができます。
- BIOS POST 画面が表示されているとき、F2 キー押下で BIOS を起動する
- Serial Communication 項目を選択して、次の項目を変更する(実際に変更するのは上の二つ、Redirection After Boot は必ず Enabled にしておかないと PXE ブートメニュー画面を表示することができなくなります)
- Serial Communication ……. On with Console Redirection via COM2
- External Serial Connector .. COM2
- Failsafe Baud Rate ……… 115200
- Remote Terminal Type ……. VT100/VT220
- Redirection After Boot ….. Enabled
- BIOS POST 画面が表示されているとき、Ctrl + E キー押下で Remote Access Configuration Utility を起動する(OS が起動する直前のタイミングで5秒以内にキーを押す必要があるので注意)
- Remote Access Configuration Utility の画面で、IPMI Over LAN を ON にする(BMS の Traffic Management 機能が動かなくなくという警告が出るが無視する)
- LAN User Configuration 項目を選択して、管理者のパスワードを変更する
ここまで設定すれば、DRAC のウェブ管理画面を開いていろいろと設定することができますが、SOL に関してはデフォルトのパラメータのままで問題ありません。ちなみに通信速度は、57600kbps になっています。
これで BIOS の設定は完了です。DRAC カードにある NIC に LAN ケーブルを接続してネットワークの疎通を確認します。
疎通が確認できたところで、ipmitool でアクセスしてみます。今回は、CentOS で動作確認したけれど、CentOS でインストールできる ipmitool を含んだ OpenIPMI-tools というパッケージはすこし古いので最新の ipmitool 1.8.9 を使いました。ipmitool の基本構文は、次のとおりです。
$ ipmitool -I lanplus -H ホスト名 -U ユーザー名 [-P パスワード] コマンド
ipmitool は、man を見てみと具体的な使い方がよく分からないので、よく使うコマンドリファレンスは次のとおりです。
- power status: 電源の状態を確認する
- power on: 電源をオンにする
- power off: 電源をオフにする
- power reset: 電源を再起動する
- power soft: OS からシャットダウンさせる
- sol activate: シリアル接続する
- sol deactivate: シリアル接続を解除する
- lan print: IPMI の IP 情報などを表示する
- shell: shell のようなインタラクティブモードに入る
- sdr: ハードウェア情報を表示する
- sensor: センサー情報を取得する
例えば、次のようなになります。
$ ipmitool -I lanplus -H 192.168.0.1 -U root lan print
Password:
Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD
…
Cipher Suite Priv Max : aaaaaaaaaaaaaaa
: X=Cipher Suite Unused
: c=CALLBACK
: u=USER
: o=OPERATOR
: a=ADMIN
: O=OEM
このようにうまくいけば、power on で電源をオンしたり、power off で電源をオフしたり、サーバ OS がハングアップしてどうしてもないとき power reset でリセットしたりすることができます。BIOS を操作したいときは、sol activate コマンドを使って遠隔にあるサーバのコンソール画面を自分のターミナルに表示して行います。このときは、まるでデータセンターにあるサーバの BIOS が VNC 経由で遠隔操作されているように見えて素敵です。BIOS の POST 画面は搭載しているハードウェアの BIOS の表示などによって多少画面が乱れることがありますが、許容範囲内です。コンソール画面を閉じたいときには、~ . <enter> と入力します。リモートのサーバへ SSH 経由でログインしてそこから ipmitool を使っていると SSH 接続ごと落ちるので注意してください。
BIOS を起動するとき、よく F2 などの特殊なキーを使いますが、F2 はそのままだとターミナルから入力できません。F2 は <ESC> + 2 キーを同時押します。このあたりについての詳細は、こちらを参照してください。個人的によく使うであろうキーは、次のとおりです。
- F2 – <ESC> + 2
- F10 – <ESC> + 0
- F11 – <ESC> + !
- F12 – <ESC> +@
なるほどよく考えられていますね!
さて、次はエントリ 1U サーバである R200 + DRAC4 での設定方法です。R200 は、R300 と同じように SOL を設定する BIOS があるのですが、不思議なハードウェア構成になっていて試した結論から言うと SOL に対応してません。なので、DRAC4 に ssh 経由で接続してシリアルポート経由でコンソール画面を操作したり、DRAC4 の専用コマンド (CLI) で操作します。このあたりの情報は DELL のサポート情報にもなく、サポートに聞いても微妙な回答しか得られなかったので、かなりはまりました。。。
- F2 キー押下で BIOS を起動する
- Console Redirection 項目で、次の項目を変更する
- Console Redirection Serial … Port 1
- Failsafe Baud Rate 115200
- Remote Terminal Type VT100/VT220
- Redirection After Boot … Enabled
- Integrated Devices 項目で、次の項目を変更する
- Serial Port 1 … RAC
- BIOS POST 画面が表示されているとき、Ctrl-D キーを押下して DRAC BIOS を起動する
- LAN Parameters 項目を選択して、IP アドレス、サブネットマスク、デフォルトゲートウェイを入力して保存する
- DRAC の IP アドレスに SSH 経由でログインして、次のコマンドを実行して管理者のパスワードを変更する
- [root]# racadm config -g cfgUserAdmin -o cfgUserAdminPassword -i 1 <新しいパスワード>
ちなみに DRAC4 は、DRAC5 と比べてるとウェブの管理画面のレスポンスがかなり遅いので実用的ではないです。SSH 経由の場合はすこし遅いという印象なので、SSH 経由で操作することをおすすめします。なお、SSH のセッション数は 1 、telnet は同時 4 接続までなので注意しましょう。ここからは、DRAC4 特有のバットノウハウになりますが、SSH 経由でログインしたあと connect com2 してコンソール画面を表示したあと <enter> ~ . でセッションを閉じると SSH のセッションが開きっぱなしになって二度と SSH 経由でログインできなくなります。そこで telnet 接続を有効にして、コンソール画面を表示するときには telnet 接続の方で使うことにしましょう。DRAC4 で telnet 接続を有効にするには、次のコマンドを実行します。これは、SSH は同時接続最大 1 という制限があるのに対して、telnet の方は同時接続数に制限がないことを利用したバットノウハウです。telnet を解放するのでセキュリティには十分注意しましょう。
$ racadm config -g cfgSerial -o cfgSerialTelnetEnable 1
ちなみに SSH 接続ができなくなったときに回復する方法は、サーバの電源ケーブルを抜き差しするしかありませんので慎重に作業しましょう。(正直な感想としては、こんなに制限があるのなら R200 + DRAC4 はやめたほうがよいなと思いました、R200 は感覚的に後から IPMI を無理矢理サポートしたという印象があります、コスト的なメリットがかなりない限りもう個人的にはもう R200 + DRAC4 を選択することないでしょう…)
ここで設定するポイントは、3 に Serial Port 1 の出力先をどこにするかという設定です。この設定は、たくさんの選択肢があるので注意します。
DRAC4 からコンソール画面を表示するには、DRAC4 にログインしたあと、次のコマンドを実行します。
[root]# connect com2
表示したコンソール画面を閉じるのは、<Enter> ~ . をキーを入力します。この設定は任意のキーに変更できます。R200 のスペック表によると IPMI に対応しているようなのですが、SOL に対応していないので実質あまり使えないと思って確認していません。
ここで、DRAC があるメリットを考えてみます。
- https 経由の管理画面経由でさまざまな情報を閲覧や電源のオフオンなどの操作をすることができる
- NIC が DRAC のカードに内蔵しているため、オンボードの NIC とは物理的にわけることができる(特にメンテナンス回線がある場合は便利になる)
- DRAC 側でシステムの状態を監視して、アラートをメールで送ることができる(実際にECC エラーのアラートが実際に届いてメモリを交換したことがある)
- DRAC に SSH や telnet 経由でログインして設定変更や設定の閲覧ができる
というメリットがあります。デメリットはカード費用と DRAC のファームウェアはけっこう更新されているのでそのアップデートする手間コストがあります。前者は、他の IPMI カードと同じくらいのコスト、後者は管理画面経由で簡単にアップデートできることからそれほどデメリットは感じません。DRAC4 のファームウェアアップデートを Firefox で行おうとするとアップデートの進捗状況を現すプログレスバーがちゃんと完了ならないけれどファームウェアのアップデートは完了しているという不思議な現象にはまったけれど。でも、これは TFTP 経由でファームウェアをアップデートできるようなので、次回からはサーバの台数も多いので TFTP 経由にして改善したいと思っています。
ここまで、それぞれのサーバの BIOS POST 画面は IPMI 経由でアクセスすることが可能になりました。
しかし、実際の OS(Linux) をブートしたときの画面が表示されないので、OS の出力をシリアルポートにも出力します。今回は、CentOS 5.3 x86_64 を例に設定方法を説明します。
まず、grub の設定ファイル (/boot/grub/grub.conf) を次のように変更します。
— /boot/grub/grub.conf-org 2009-04-10 16:45:04.000000000 +0900
+++ /boot/grub/grub.conf 2009-04-14 13:00:45.000000000 +0900
@@ -8,10 +8,12 @@
# initrd /initrd-version.img
#boot=/dev/sda
default=0
-timeout=5
-splashimage=(hd0,0)/grub/splash.xpm.gz
+timeout=10
+serial –unit=0 –speed=57600 –word=8 –parity=no –stop=1
+terminal –timeout=10 console serial
+#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.1.1.el5)
root (hd0,0)
- kernel /vmlinuz-2.6.18-128.1.1.el5 ro root=/dev/datavg/data
+ kernel /vmlinuz-2.6.18-128.1.1.el5 ro root=/dev/datavg/data console=tty0 console=ttyS1,57600n8
initrd /initrd-2.6.18-128.1.1.el5.img
ここで一番注意するべきは、terminal のところ。terminal の最後に console serial と指定していますが、これを serial console としてしまうと grub が起動する直前でのキーボード入力待ち時間がかなり長く5分くらいになってしまうので注意します。今のところシリアルポートは使っていないのでこの設定で問題ないです。grub.conf の設定パラメータについては、JF を参照してください。R200 のときは、com1 しかないので ttyS1 ではなくて ttyS0 になります。
次に /etc/inittab に次の内容を追記します。
# Console Redirection via COM1/COM2
s0:2345:respawn:/sbin/agetty -h -L 57600 ttyS0 vt100
s1:2345:respawn:/sbin/agetty -h -L 57600 ttyS1 vt100
最後に、/etc/securetty に次の内容を追記します。
ttyS0
ttyS1
これで設定完了です。再起動して、リモートコンソール画面に正しく Linux の起動画面が表示されることを確認します。文字化けしている場合は、通信速度が違っているときに発生します。
また、OpenIPMI をインストールすると ipmi デーモンもあわせてインストールされますが、これは自分のサーバの IPMI へアクセスするサービスを提供するものなので基本的には不要です。
あとは、上記の設定を kickstart ファイルに書いておけば便利になります。
# 2009.04.22 追記: 参考資料
Enjon IPMI!
Tags: dell ipmi












[...] 最近やっと IPMI を導入したこともあって、昔より 1U サーバの VGA コネクタにディスプレイをつなぐことは少なくなってきましたが、それでも何かあったときは直接ディスプレイをつない [...]
[...] をアクセスするコマンドラインツールに、ipmitool があるけれど、前述したとおり man [...]
[...] 詳しい設定内容は、こちらを参照してください。 [...]