IPMIとは

ウェブで簡単に引ける情報はいずれも漠然とした情報ばかりで具体的な話が見えなかったけど、実機をすこし触って徐々に見えてきた。
IPMIというのは現在では最下位モデルより少し上ぐらいのラインナップのサーバにはほぼ全て実装されているサーバの監視機構との通信規格。主体としては、サーバのマザーボードやアドオンカード上に配置されている監視専用の組み込みコンピュータ(メーカによって呼び方は色々だけど、Board Management Computer =BMCなどと呼ばれる)。ほとんどのモデルではこれらが独立した組み込みOSで稼動し、本体とは独立したIPアドレスEthernetのポートを使い通信する。IPMIとはこれらの監視用コンピュータとの通信規格。じゃあ、このコンピュータと誰が通信するのかと言えば、もちろん監視を集約するための別サーバになるのだけど、これ以外にも監視対象であるサーバ自身が自己診断のために直接通信を行うこともできる。例えば、Linuxの場合カーネルにドライバをロードしてやることで、/dev/ipmi*などして見える。
IPMIが若干分りにくかったのは、サーバ自身が自分の内部で行う通信の両方を定義しているところ。BMCはLANに対しても本体のOSに対しても等しくサービスを提供することが出来る。例えばLinuxなどで使えるCLIのクライアント ipmitoolはパラメータの渡し方一つで、サーバ内のBMCに対しての問い合わせ(-I open)かネットワークを介した問い合わせか(-I lanや-I lanplus)をを切り替えることができる。
もう一点分り難いのは、具体的にどんなことが出来るのかという点が実装によってまちまちなところ。これはサーバのクラスによって豪華な仕様だったり、最低限の機能しか持たなかったりで色々。IPMI1.5や2.0というのがそれらを定義しているのかと思っていたが、そうではなく、これらは通信方式の違い程度であるようだ。実際どの機能があるかはBMCに聞いてみないと詳細は得られない。例えば、GNUFreeIPMIのパッケージにあるbmc-info(1)というコマンドで問い合わせることができる。IPMI2.0だからと言って高機能、1.5だから低機能というわけではないらしい。ちなみにこのコマンドの出力を見てみると、BMCがLANやシリアル、ホストとの直接通信を等価に扱っている様子が見受けられる。
実装している機能の定番は電圧や温度などセンサー類からの出力、FRU情報の出力(構成部品の物品管理)、イベントログの保持、パワーサイクル(リセットや電源のon)などがある。リモートからシリアルコンソールを提供する機能は仕様としては定義されているが、実装に際してはあったりなかったりするので、要注意。
IPMIが無かった頃は各社勝手に独自実装をしていたので、それに比べればかなり改善したと思われる。BMCへのIPアドレス付与など基本的な設定もホストOSと標準的なコマンドで出来るので、実は専用クライアントが無くとも出来る部分も多い。
しかし、もう一歩機能の統一を図ってくれれば使い勝手が良くなるのだけど、残念。