データセンターなど、遠隔地に設置したサーバに障害が発生した時、最終手段として電源をON/OFFしたくなることはよくあるとことだと思います。そんな時、皆さんはどうするのでしょう?

 通常だと、サーバーが設置されている場所に行って操作をするか、現地のオペレーターに頼んで操作してもらわなければなりません。

このような場合に対応すべく、遠隔地ののサーバを管理するための標準インターフェイス仕様としてIPMIがあります。 IPMIでは、電源のON/OFFのみならず、コンソールを操作しBIOSの設定変更ができたり、 温度や電圧などの状態監視を遠隔で行うこともできたりします。

今回はSupermicro X7SBiにIPMIカード(AOC-SIMSO-HTC)を付けた場合の、電源操作やコンソール操作の方法について調べてみました。

IPMIの設定

IPMIカード設定プログラムの起動

IPMIを使用する前に、ファームウェアの更新とIPMIカードへのIPアドレス設定を行う必要があります。

ファームウェアの更新やIPアドレスの設定を行うには、更新用のプログラムを実行する必要があります。 IPMIカードに添付されているドライバCDはブータブルになっており、そのCDからサーバーをブートすることでファームウェアを更新することが出来ます。
あるいは、ファームウェア更新用のフロッピーを作成し、そこからブートすることもできます。その場合は、ドライバCDに含まれているユーティリティを利用して、ファームウェア更新用フロッピーを作成することが出来ます。このユーティリティはWindowsでしか利用できませんが、今回はこの方法でファームウェア更新用フロッピーを作成しました。

WindowsPCにCDを挿入すると、自動起動の画面が出てきます。 「Make firmware Programming Diskette」を選択します。

Image

マザーボードの選択画面が出てくるので、利用しているマザーボードを選択します。

Image

「Create Floppy」というタイトルのウィンドウが出てくるので、指示にしたがいフロッピーを挿入したあと、「Create Floppy」をクリックします。

Image

これでフロッピーディスクの作成は完了です。

ファームの更新

CDかフロッピーディスクでブートすると、すぐにファームの更新が始まります。 更新中はとくに何か操作する必要はなく、すべて自動的に行われます。 更新が完了すると、DOSのプロンプト画面に移行します。

IPアドレスの設定

IPMIを利用するためには、IPMIカード自体にIPアドレス等の設定をする必要があります。 IPアドレスの設定は、ファーム更新後のプロンプトから、「ipmicfg」というプログラムを 利用して設定することができます。 DHCPから自動的にアドレスを取得するように設定する事も出来ますし、任意のIPアドレス、ゲートウェイアドレスなどを設定する事もできます。

また、ドライバCDにはLinuxから利用できるipmicfgも含まれています。したがって、 Linuxを立ち上げた後、Linux用のipmicfgでIPアドレスを設定する事もできます。

Console Redirectionの設定

IPMIでコンソールを操作するには、BIOSでシリアルコンソールの設定が必要になります。 BIOSの設定画面に入ってからAdvancedのタブを開き、Console Redirectionの項目を選択します。 設定項目が出てくるので、次のように設定します。

  • Com Port Address:   On-board COM B
  • Baud Rate:                19.2K
  • Console Type:           VT100+
  • Flow Control:           CTS/RTS
  • Console connection: Direct
  • Continue C. R. after POST: Off(場合によってはONでも可)

Image

IPMIを使用する

実際にGNU FreeIPMI(Webページ)を使ってサーバーを操作する方法を説明します。 IPMIはRMCP(Remote Management Control Protocol)というプロトコルを利用して 通信します。このプロトコルはUDPの623番のポートを使用します。 したがってIPMIで操作するためには、操作対象のサーバとUDPの623番で通信できるような ネットワーク構成である必要があります。

それぞれの操作を実行する際に、ユーザーIDとパスワードが必要になります。 デフォルトではユーザーIDとパスワードは共に'ADMIN'に設定されています。 これらはドライバCDに含まれているツールで変更することができます。

動作の確認

FreeIPMIに含まれている'ipmiping'というコマンドでIPMIが利用可能な状態かどうか確認することが出来ます。

$ ipmiping (IPMIカードのIPアドレス)

$ ipmiping -c 4 192.168.20.231
ipmiping 192.168.20.231 (192.168.20.231)
response received from 192.168.20.231: rq_seq=25
response received from 192.168.20.231: rq_seq=26
response received from 192.168.20.231: rq_seq=27
response received from 192.168.20.231: rq_seq=28
--- ipmiping 192.168.20.231 statistics ---
4 requests transmitted, 4 responses received in time, 0.0% packet loss

返答がくれば、IPMIが利用可能な状態であるということです。

電源の操作

遠隔で電源を操作するには、'ipmipower'というコマンドを使用します。 まずは電源の状態を確認します。

$ ipmipower -h (IPMIカードのIPアドレス) -u (ユーザーID) -p (パスワード) --stat

$ ipmipower -h 192.168.20.231 -u ADMIN -p ADMIN --stat
192.168.20.231: on

このように電源の状態を確認することが出来ます。

再起動するためには、

$ ipmipower -h (IPMIカードのIPアドレス) -u (ユーザーID) -p (パスワード) --reset

というように使用します。それ以外にも、以下の表のオプションを使用することで 電源のONやOFFを行うことができます。 もちろん、サーバーの電源がOFFの状態からでも遠隔から電源を投入することが出来ます。

オプション(短縮版) できること
--reset(-r) 再起動
--on(-n) 電源を入れる
--off(-f) 電源を切る

センサーによる監視

'ipmi-sensors'を使用することで、各種センサーによる情報を取得することが出来ます。 サーバーの温度や電圧、ファンの回転数などを取得することができます。

$ ipmi-sensors -h 192.168.20.231 -u ADMIN -p ADMIN
Fetching SDR repository information... done
Fetching record 17 of 18 (current record ID 18)
1: CPU (Temperature): 29.00 C (NA/78.00): [OK]
2: System (Temperature): 28.00 C (NA/78.00): [OK]
3: CPU Core (Voltage): 1.20 V (0.90/1.39): [OK]
4: DIMM (Voltage): 1.81 V (1.58/2.00): [OK]
5: 3.3V (Voltage): 3.33 V (2.93/3.66): [OK]
6: 5V (Voltage): 4.87 V (4.44/5.54): [OK]
7: 5VSB (Voltage): 4.90 V (4.44/5.54): [OK]
8: 12V (Voltage): 12.00 V (10.56/13.44): [OK]
9: -12V (Voltage): -12.23 V (-13.72/-10.29): [OK]
10: Battery (Voltage): 3.28 V (2.93/3.66): [OK]
11: FAN1 (Fan): 9315.00 RPM (405.00/NA): [OK]
12: FAN2 (Fan): 10125.00 RPM (405.00/NA): [OK]
13: FAN3 (Fan): 9855.00 RPM (405.00/NA): [OK]
14: FAN4 (Fan): 9450.00 RPM (405.00/NA): [OK]
15: FAN5 (Fan): 0.00 RPM (405.00/NA): [OK]
16: FAN6/CPU (Fan): 0.00 RPM (405.00/NA): [OK]
17: Intrusion (Platform Chassis Intrusion): [General Chassis Intrusion]
18: Power Supply (Power Supply): [Power Supply Failure detected]

コンソールの操作

'ipmiconsole'というコマンドを使用し、遠隔でコンソールの操作をすることができます。

$ ipmiconsole -h (IPMIカードのIPアドレス) -u (ユーザーID) -p (パスワード)

これを利用することで、OSが起動する前の段階からコンソールを操作することが出来ます。 つまり、BIOSの画面やブートメニューなどを遠隔から操作することができるということです。

Image

コンソールから抜けるにはエスケープシーケンスを使用します。デフォルトではエスケープキャラクタは '&'(アンパサンド)になっており、'&.'(アンパサンドの後にドット)と入力することで コンソールを抜けることが出来ます。それ以外のエスケープシーケンスに関しては以下の 表のものが使えます。

エスケープ文字 意味
&? 使用できるエスケープシーケンスのリストを表示
&. 接続を終了する
&B シリアルブレークを送信
&D DEL文字を送信
&& 一つの'&'

まとめ

IPMIを導入することで、再起動やBIOSの設定など遠隔から行うことが出来るようになります。 サーバーにトラブルが起こっても、設置されている現地に行かずに対処することができるので 非常に重宝するでしょう。

通信はすべてIPの上で行うので、IPのネットワークさえあれば、 ほかに特別な通信機器を導入する必要はありません。 また、複雑な設定も必要ないので、対応マザーボードさえあれば容易に導入することができるでしょう。

参考