切り替え処理に失敗するだけでなく、フェイルオーバーの高機能化が被害を拡大することもある。富士フイルムでは2012年1月、150に上る社内システムで利用する大容量共有ストレージが故障。冗長化機能が働かなかったばかりか、データ救済機能が余計な処理を行い、業務データを失う事態に陥った。

 ストレージは筐体内部のパーツを二重化することで信頼性を高めている。同社が使用していたストレージは大きく三つのコンポーネントで構成する。一つはストレージ全体の動作を制御する「コントローラー」で、プロセッサ上のファームウエアが故障時のフェイルオーバーも担う。

 もう一つは「小型スイッチ」。コントローラーとHDD間で経路制御を担う。コントローラーも小型スイッチも二重化してある。

 残りはデータを格納するHDDだ。1セットの小型スイッチ配下に16個のHDDが一つのグループを形成する。

 障害の発端は一つの小型スイッチの故障(図1)。通常ならば待機系に切り換わるのだが失敗した。ファームウエアのバグにより、小型スイッチの故障が検知できなかったのだ。

図1●富士フイルムの社内システムで発生したトラブル
ストレージ内部で、コントローラー上のファームウエアが故障箇所を誤認。小型スイッチの故障をHDDの複数故障と判断し、異なる小型スイッチ配下のHDDへのデータ移動を試みた結果、データの整合性が崩れた
[画像のクリックで拡大表示]

 さらにファームウエアは、スイッチの故障を、その配下にあるHDDの複数故障と誤認し、HDDのデータを別グループのHDDへ移動する処理を始めた。同ストレージにはデータ救済機能があり、容量に空きのある別のHDDにデータを自動的にコピーして逃がす仕様になっていたのだ。ここでデータ破壊が起こった。

 ストレージのコントローラーはデータの格納場所を示すアドレス情報を管理している。今回の場合、移動処理が起動されたことでアドレス情報は更新された。だが小型スイッチの故障により実データは移動されなかった。アドレス情報と実データの間で論理的不整合が起こり、一定期間の業務データをロストした。

 3日にわたりデータ復旧に追われた富士フイルムコンピューターシステム ITインフラ部の柴田英樹部長は、「ストレージのハードと制御ソフトが協調し障害の影響を局所化しようとしていることは分かる。ただ、高機能な分、処理が複雑になり、仕組みが追いついていないのではないか」と話す。