HP SmartArray RAIDコントローラで書き込み速度が異様に遅い時

結論から言うと、RAIDコントローラのバッテリー切れが原因。バッテリー切れでもライトキャッシュを強制的に有効にすることは出来る、がしかし・・・

注意: 当社は、この記事の情報を元に行われた行動のいかなる結果についても責任を持たない

HP SmartArray RAIDコントローラ(Linuxでのドライバ名は cciss) で構成したRAIDアレイへの書き込みアクセスが(読み込みでは200MB/s以上出ているにも関わらず) 5MB/sなど異様に遅くなることがある。これは多くの場合、RAIDコントローラに搭載されているバッテリーが上がってしまっている時にライトキャッシュが自動的に無効になるため起こっている。

バッテリーが上がっているとホストの起動時にその旨の警告表示が出ているはずなのだが、システム自体は正常起動するため見逃しがちだ。バッテリーが上がってしまっている疑いがある場合、HP SmartArray専用の管理ツールである hpssacliコマンドでコントローラの状態を表示することでバッテリーやキャッシュの状態を確認できる。

システムに搭載されている HP SmartArray RAIDコントローラの一覧を得るには、hpssacli ctrl all show と入力する。hpssacliコマンドは HP社のサポートサイトからダウンロードできる。Linux版はRPMパッケージで提供されているが、RPMをインストールできない環境の場合は単にRPMファイルから hpssacliのバイナリファイルを取り出して /usr/sbin にでもコピーすれば利用できる。(パッケージには同名のシェルスクリプトが収録されているが、そちらではなくバイナリファイルのほうをコピーするよう気を付けること)

# hpssacli ctrl all show

Smart Array P400 in Slot 5                (sn: XXXXXXXXXXXXXX)

この例では、HP SmartArray P400が5番のスロットに刺さっていることがわかる。スロット番号を指定して showコマンドを与えることでコントローラのステータスを表示することができる。

この時、hpssacliコマンドがエラーを返すようであればコントローラのファームウェアが古い可能性があるためアップデートする必要がある。ファームウェアアップデートは起動可能なDVDイメージと自己解凍実行型のファイルの両形式で提供されているが、前者であればOSとの互換性を気にすることなくアップデートが行える。
# hpssacli ctrl slot=5 show

Smart Array P400 in Slot 5
   Cache Status: Temporarily Disabled
   Cache Status Details: Cache disabled; low batteries.
   No-Battery Write Cache: Disabled
   Battery/Capacitor Status: Failed (Replace Batteries)

上記では、バッテリーやキャッシュに関する箇所を抜粋した。明らかにバッテリーが上がっているためキャッシュを無効にしていると読み取れる。

HP社の保守がまだ切れていなければ依頼すればすぐにバッテリー交換を行ってくれるのだが、残念ながらそうでない場合で書き込み速度が 5MB/sでは困るという場合には強制的にキャッシュを有効にすることができる

バッテリーバックアップが効かない状態で大容量のライトキャッシュを有効にするということは、不意の電源断が起こった際にかなりひどいデータ損失が発生することを意味する。このリスクが理解できる場合のみ下記のコマンドを用いること。
# hpssacli ctrl slot=5 modify nbwc=enable

Warning: Enabling write caching on a cache module without a fully charged
         battery/capacitor could cause data loss in the event of power failure.
         Use of this feature is not recommended unless proper precautions are
         followed to maintain power to the controller. Continue (y/n)?y

お前は正気か(y/n) という趣旨の警告文が表示されるので y と答える。

# hpssacli ctrl slot=5 show

   No-Battery Write Cache: Enabled

これにより、バッテリーが上がってしまった HP SmartArray RAIDコントローラでも元通りの書き込み速度が得られるようになる。

繰り返しになるが、100MB以上もあるハードウェア・ライトキャッシュがハードディスクに書き込まれる前の状態で不意の電源断が起こった場合、どのような結果になるかわからない。ファイルが100MB分壊れるだけなら良いが、メタデータも破損した場合はもっと広範囲にわたって読み書きに支障をきたすことになる可能性がある。