JP7FKFの備忘録

ヒトは,忘れる生き物だから.

HPのRAIDコントローラのキャッシュバッテリを換装してみた話

キャッシュバッテリ交換アラート

我が家のサーバはIPMIの監視としてzabbixにてSNMP経由で各種情報を取得している. あるとき,zabbixから1通のアラートが.内容はRAIDコントローラのキャッシュバッテリのreplaceが必要であるという内容のものであった. RAIDキャッシュバッテリとは,RAIDコントローラのメモリ上の保持されている未書き込みデータを保持するためのもので,バッテリが有効なある一定期間であれば意図しない電源断が発生した場合でも,RAIDコントローラに残ってしまった未書き込みデータの消失を防いでくれる.通常のシグナル等による電源OFFのシーケンスであれば,RAIDコントローラのデータはすべて不揮発性デバイス(RAIDストレージ)に書き込まれるが,意図しない突然の電源喪失があった場合,この書き込みがされず,RAIDコントローラにデータが残ってしまう.キャッシュバッテリがなければこのデータは揮発してしまい,writeされるべきデータがwriteされず,さらに揮発してしまい,データの喪失という結果を引き起こす.キャッシュバッテリはRAIDコントローラにとってのUPSのように働き,これを防ぐ役割を持っている.

キャッシュバッテリの交換と失敗

アラートに気づき,早速交換を検討した.同じパーツNoであれば良いと考え,IPMIの画面からパーツ番号を同定し,eBayで交換用のキャッシュバッテリを探した. 想定通りeBayで同一の型番のキャッシュバッテリが見つかったので早速オーダー.船便で1ヶ月程度で到着した.

バッテリが到着したので何らかの事故が起きる前に早々に交換したい.早速やってみる. キャッシュバッテリの交換は,私の持っているマシンではホットスワップには対応しておらず,マシンを停止した状態で行わなければならなかった. UPSのように使っているキャッシュバッテリのホットスワップができないのは意外だった.これは今どきのマシンでもホットスワップは不可なのだろうか?RAIDコントローラが冗長化されているマシンではおそらくホットスワップ可能ではないかと思う.

マシンを停止し電源ケーブルを引き抜き,エアフローガイドやファンモジュールを取り外し,RAIDバッテリにアクセスできるようにする. あとはRAIDカードからRAIDバッテリのコネクタを引き抜き新しいものに差し替える. 逆の手順を踏んで組み直して完了.電源を入れる.

電源を入れてブートしてきたが,SNMPのアラートやIPMIの画面上のdegraded表示は復帰せずそのまま. マニュアルによると,キャッシュバッテリを交換した場合にはキャッシュバッテリへのチャージに,数時間から数十時間程度かかるようだ.キャッシュバッテリがチャージできていないと電圧が検出されずにステータスが異常のままになってしまっていると推測された.したがって数日間様子を見てみることとした.

数日後,同じくステータスを見てみたものの状態は変化していなかった. このままではキャッシュバッテリの役目を果たしてくれないため,RAIDバッテリが正常に機能していないと判断し,調査してみることにした.

再度マシンを停止しRAIDバッテリを取り外し,交換前と交換後のバッテリの双方について故障調査をしてみることにした.

RAIDバッテリの故障調査

今回取り扱ったタイプのRAIDバッテリはEDLCを利用したものであった.EDLCとは電気二重層コンデンサのことで,通常のコンデンサよりも大きな数Fオーダの静電容量をもつコンデンサである. EDLCは通常の2次電池と比べ,充放電回数や安全性にアドバンテージを持っており,短時間のバックアップ電源として利用されている事が多い. EDLCは振る舞い上コンデンサとしてみればよく,まずは電圧を印加し,蓄電動作をするかどうかを確かめてみることにした.

電圧を印加するにあたり,RAIDコントローラと接続する端子のピンアサインが不明であることから,RAIDバッテリを分解した. 分解していくといくつかのことがわかった. コネクタは6端子まで利用できるものだが,配線は合計で5本であった.配線色は赤白黒青青の4種類. まず4端子ある配線のうち2本はEDLCの温度を計測するためのサーミスタに接続されているということである. 配線の色でいうと青2本がこのサーミスタに接続されていた.このサーミスタの抵抗値を室温下で測定すると約10kΩであった. おそらくB定数がよく見る3435Kあたりのものかと想像される(実際にそうかは測定していない). あとの3本はEDLCと共に基板にはんだ付けされていた.赤がEDLCのプラス側,黒と白がEDLCのマイナス側に接続されており,基板上には抵抗のようなものが配置されていた.これは複数のEDLCを直接接続して利用する際のバランス抵抗と呼ばれるものと思われる.この抵抗により2つのEDLCの電圧のアンバランスを防ぐ. 色々と観察したところ,次のような回路となっているようだった.

まずは大雑把に充電可能かどうかを検査するべく,電源装置を用いて該当のRAIDバッテリのプラス端子とマイナス端子に対して電圧を印加してみたが,全く電流が流れる気配がなかった. テスタの電圧レンジでも電圧がふれておらず,抵抗値測定を行っても開放状態であった. 各所のはんだ付けのクラック等も疑ったが問題なく接続されていたため,これはEDLCの開放モードの故障であると推定した. しかしEDLCに抵抗が並列に入っている用に見えるのに開放となっているのはおかしい. よくよく観察すると抵抗が炭のように燃えてしまっているようであることがわかった.

原因を推測してみたが,断定することまではできなかった.観測された事象として

  1. EDLCが開放モードの故障状態である.
  2. 開放モードで故障したEDLCに接続されいてるバランス抵抗に許容電力を超える入力があり発熱した結果,抵抗が炭化し開放モード故障となった.

の2つのことは確認できた.

交換前と交換後のパーツの2つを分解してみたが,どちらも同じ状態だった.なんとebayで入手したRAIDバッテリも元から故障していたのだった.

RAIDバッテリの換装

分解したRAIDバッテリに用いられているEDLCは2.7V/34F,12mmx46mmの筒状のものが2本用いられていた.パッケージから型番はTPL-34と読み取れた.TecateGroupのTPLシリーズと考えられるが,すでに生産は終了しているようだ. 代替となる部品を調達することも考えたが,秋月電子通商で5.4VのEDLCが販売されていたので,手っ取り早くこれを利用することにした.

秋月電子にある5.4VのEDLCは各種あるが,このRAID用のEDLCは17Fの容量をもつことから,それ以上の容量を持つものを選んだ. 購入したものが下記のものである. akizukidenshi.com

すでに2本のプラスマイナスの配線と,バランス抵抗が装荷されているもので,配線を分解したRAIDバッテリのケーブルで置き換え,サーミスタをいい感じにくっつけてあげればよい. とても簡単である.その変更を加えたものが下記である.

サーミスタはホットボンドで固定.配線した部分がむき出しになっている部分もホットボンドで絶縁した. 電源装置を用いて充電試験をしたところ問題なく充電され,5.4Vまで充電された*1. 動作に問題はなさそうなので,これをもとのサーバに取り付けし,起動. するとRAIDバッテリアラートは解消し,オールグリーン状態となった.

まとめ

交換パーツの入手も容易ではないサーバのRAIDバッテリ故障だったが,汎用部品で代替して解決することができた.めでたし.

*1:充電せずに取り付けをしてもよいが,取り付け後に充電され十分な電圧になるまでアラートは消えないので注意する必要がある