|
データセンターなど、遠隔地に設置したサーバに障害が発生した時、最終手段として電源を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」を選択します。 マザーボードの選択画面が出てくるので、利用しているマザーボードを選択します。 「Create Floppy」というタイトルのウィンドウが出てくるので、指示にしたがいフロッピーを挿入したあと、「Create Floppy」をクリックします。 これでフロッピーディスクの作成は完了です。 ファームの更新 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でも可)
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の画面やブートメニューなどを遠隔から操作することができるということです。 コンソールから抜けるにはエスケープシーケンスを使用します。デフォルトではエスケープキャラクタは '&'(アンパサンド)になっており、'&.'(アンパサンドの後にドット)と入力することで コンソールを抜けることが出来ます。それ以外のエスケープシーケンスに関しては以下の 表のものが使えます。 | エスケープ文字 | 意味 | | &? | 使用できるエスケープシーケンスのリストを表示 | | &. | 接続を終了する | | &B | シリアルブレークを送信 | | &D | DEL文字を送信 | | && | 一つの'&' | まとめ IPMIを導入することで、再起動やBIOSの設定など遠隔から行うことが出来るようになります。 サーバーにトラブルが起こっても、設置されている現地に行かずに対処することができるので 非常に重宝するでしょう。 通信はすべてIPの上で行うので、IPのネットワークさえあれば、 ほかに特別な通信機器を導入する必要はありません。 また、複雑な設定も必要ないので、対応マザーボードさえあれば容易に導入することができるでしょう。 参考 |