• Showing Page History #11200
  • Showing Page History #11203

Show page source of ExpressScopeHowTo_2p2 #16548

==== EXPRESSSCOPEエンジンを使う / ![基本編2] コマンドラインからの電源制御 ====

[ExpressScopeHowTo_2p1 <前のページ] | [ExpressScopeHowTo_2p1 1] | 2 | 次のページ>

== ipmitoolを使った電源制御 ==

通常、サーバは連続稼働させておくものですから、電源制御が必要になるのはトラブル発生時に個別のサーバの電源を操作するようなケースがほとんどでしょう。

ただし、システム構築時やマシンの入れ替え時などは、複数台のサーバの電源をまとめて入れたり切ったりするようなことがあるかもしれません。2~3台ならともかく、10台くらいのマシンが対象となるといちいちログインしてコマンドを実行するのは面倒です。

そこで登場するのがipmitoolというコマンドです。このコマンドを使うと管理ホストからリモートのサーバのBMCにIPMI管理コマンドを送出することが可能です。IPMI(Intelligent Platform Management Interface)はリモートからサーバを制御するための標準仕様で、EXPRESSSCOPEのようなBMC(Baseboard Management Controller)を対象にしています。NECはこのIPMIの策定に参画しており、もちろんEXPRESSSCOPEもIPMIに対応しています。

まず、ipmitoolを管理ホスト(サーバではありません)にインストールします。Ubuntuの場合は以下のようにします。

{{{
$ sudo apt-get install ipmitool
}}}

IPMIのさまざまな機能を利用するにはサーバ側にIPMIドライバをインストールしたりする必要があるのですが、とりあえず電源制御が行えればよいのであれば、管理ホストにipmitoolをインストールするだけで十分です。

=== ipmitoolのオプションとコマンド ===

ipmitoolコマンドは以下の書式で実行します。

{{{
ipmitool [オプション] コマンド [コマンド引数]
}}}

使用頻度の高いオプションとしては以下のようなものがあります。

 * '''-I''':IPMIのバージョン。IPMI 1.5の場合は「lan」、IPMI 2.0の場合は「lanplus」と指定(iモデルのEXPRESSSCOPEはIPMI 2.0に対応しています)
 * '''-H''':操作対象サーバのホスト名もしくはIPアドレス
 * '''-U''':アカウント名
 * '''-P''':パスワード

ipmitoolには非常にたくさんのサブコマンドがあるのですが、電源制御を行うときは「chassis power」を使います。

  実際は、chassisがipmitoolのサブコマンドで、powerはさらにそのサブコマンドという関係です。面倒なので、ここでは「chassis power」として扱います。

「chassis power」の引数としては以下のようなものがあります。

 * '''status''':電源の状態確認
 * '''on''':電源オン
 * '''off''':強制電源オフ
 * '''reset''':ハードリセット
 * '''soft''':OSのシャットダウン

=== 電源制御の実際 ===

それではipmitoolを使ってみましょう。まず、サーバの電源の状態を確認します。

{{{
$ ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx chassis power status
Chassis Power is on ←電源が入っている
}}}

次に電源を落としてみます。ただし、「off」を使うとOSのシャットダウン処理が行われないので「soft」を使います。

{{{
$ ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx chassis power soft
Chassis Power Control: Soft
}}}

「off」はEXPRESSSCOPEのCLIにおける「stop /system1 -f」に相当し、「soft」は「stop /system1」に相当します。つまり、「soft」でOSをシャットダウンするには、OSがACPIに対応している必要があります。

「soft」で電源が落ちたかどうか確認してみます。
{{{
$ ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx chassis power status
Chassis Power is off ←電源は落ちている
}}}

ちゃんと落ちています。このように電源の状態をその場で確認できるので非常に便利です。

=== 複数サーバの一括電源制御 ===

ipmitoolなら、複数台のサーバにいっせいに電源を入れるようなこともできます。たとえば、172.17.4.1~172.17.4.20の20台のサーバの電源を入れるのであれば、以下のようにfor文を使います(bashやzshの場合)。

{{{
$ for i in 172.17.4.{1..20}
> do
> ipmitool -I lanplus -H $i -U hmori -P xxxxxxxx chassis power on
> done
}}}

以下のようにすれば、複数台のサーバの電源の状態もまとめて調べられます。

{{{
$ for i in 172.17.4.{1..20}
> do
> echo -n "$i: "
> ipmitool -I lanplus -H $i -U hmori -P xxxxxxxx chassis power status
> done
172.17.4.1: Chassis Power is on  ←実行結果
172.17.4.2: Chassis Power is on
172.17.4.3: Chassis Power is on
172.17.4.4: Chassis Power is on
…省略…
}}}

実行結果をgrepして「off」と表示された行だけを出力するようにしてもよいかもしれません。

さて、今回は電源制御だけを扱いましたが、IPMIでは各種センサーの情報を収集したり、シリアルコンソールに接続したり(IPMI 2.0以降)することもできます。この当たりの操作については、回を改めて説明することにします。

[ExpressScopeHowTo_2p1 <前のページ] | [ExpressScopeHowTo_2p1 1] | 2 | 次のページ>
----
==== 関連記事
 * [ExpressScopeHowTo_1p1 基本編1:リモートからのOSインストール]
 * [ExpressScopeHowTo_3p1 応用編1:Serial over LANを設定する]
 * [ExpressScopeHowTo_bangai1 番外編:ipmitoolでのパスワード指定方法を考える]