図1●1年前に埋め込まれたバグが表面化
2002年6月にパッチを適用した際,ファイル管理ソフト「SafeFILE」に“ファイルのステータスに矛盾を引き起こす”バグが埋め込まれた。2003年5月4日のファイル拡張作業により,実際に一部のファイルにステータスの矛盾が発生。5月8日にOracleが該当ファイルにアクセスした際にSafeFILEが異常を検知してシステムがダウンした
 5月8日 午後6時14分,何の前触れもなくデータベース・サーバーがダウンした。これにより,残高照会や振り込みなど,ジャパンネット銀行のすべてのサービスが停止。Oracleのリカバリ作業に手間取ったこともあり,完全復旧までに22時間あまりを要した。

バグは1年前に埋め込まれた

 障害の原因は,富士通のファイル管理ソフト「SafeFILE」のバグ。このバグにより,SafeFILEが管理するファイルの一部に,ステータスの矛盾が発生した。該当ファイルにOracleがアクセスした際にSafeFILEが異常を検知し,サーバー・ダウンに至った。クラスタリング構成を採っていたが,問題は共有ディスク上のファイルにあるため,フェール・オーバーできなかった。

 バグが埋め込まれたのは2002年6月,あるパッチをSafeFILEに適用したタイミングである(図1[拡大表示])。パッチの内容は明らかではないが,結果的に「1つのファイルに対して“使用中”と“空き”という矛盾した管理ステータスを持ってしまうバグが,SafeFILEに入った」(ジャパンネット銀行 取締役IT部長 山下明氏)。

 このSafeFILEを使ってファイルを拡張すると,矛盾したステータスが付加される恐れがある。同行では取引量の増加に応じ,これまで1年に1~2回,データベース・サーバーのファイルを拡張してきた。

 前回ファイルを拡張したのは昨年の5月。その時点ではSafeFILEはバグを抱えていないので,問題なく作業は完了した。今年の5月4日,バグが入ったSafeFILEから初めてファイルを拡張。これにより,矛盾したステータスを持つファイルが作成された。

 同行のシステムは,富士通が構築し,運用保守も担当している。パッチの適用作業は,ジャパンネット銀行が計画を承認した上で,富士通が行う。パッチによって埋め込まれたバグが1年近くも放置された,これがトラブルの元凶である。

計画通りならトラブルは未遂に

 5月4日には2つの作業が予定されていた。一つは,先に触れたデータベース・サーバーへのディスクの追加,およびファイルの拡張。クラスタリング構成を採っているため,実際には共有ディスクに対して実施する。

 もう一つはSafeFILEへのパッチ適用である。この作業は,SafeFILEを利用している全サーバーが対象だ。同社は,WebサーバーやAPサーバーだけで10数台のUNIXサーバーを抱えている。当初の作業計画では,このパッチを適用した後に,データベース・サーバーのファイルを拡張することになっていた。

 実は,今回適用したパッチの中には2002年6月に入り込んだバグを解消するものも含まれていた。もし計画していた通りの順序で作業が行われていれば,バグが解消された後にファイルが拡張され,ステータスの矛盾は発生しなかった。

 ただし,「該当のパッチが含まれていたのはあくまで結果に過ぎない。そのようなパッチが含まれていることは,富士通から事前に説明はなかった」(山下氏)。

 現実には,ファイルを拡張した後に,データベース・サーバーにパッチを適用した。パッチを適用するサーバーの台数が多いため,データベース・サーバーでは,ファイルの拡張作業が先行された。作業の前後関係に注意が払われなかった結果をみると,富士通がバグの内容をどこまで理解していたか疑問が残る。


(森山 徹=tmoriyam@nikkeibp.co.jp)