全3362文字

2021年12月、京都大学のスーパーコンピューターがトラブルに見舞われた。学術論文に使う重要データなど、実に77テラバイト(TB)分のファイルが消失した。ITベンダーの担当者が実行中のスクリプトを不用意に更新したのが原因だった。本来はログ削除の処理が利用者のファイルを削除する誤動作を引き起こした。ミスを犯したITベンダーも問題だが、監督不十分だった京都大学の責任も重い。

 「弊社100%の責任によりLustreファイルシステムのファイル消失の重大障害を来し、多大なるご迷惑をお掛けしたことを深くお詫び申し上げます」

 京都大学が2021年12月28日に公表した「スーパーコンピュータシステムのファイル消失のお詫び」のお知らせには、大規模なデータ消失を引き起こした日本ヒューレット・パッカードが同大学宛てに提出した報告書がリンクされていた。「弊社100%の責任」という説明は、ITベンダー側の「完全降伏」ともいえる内容だ。異例の謝罪報告書はTwitterなどのSNS(交流サイト)でたちまち広がり、大きな話題を呼んだ。前代未聞のトラブルは一体、どうして起こったのか。

43時間にわたってファイルを削除

 「スパコンのファイルが消えているようなのですが……」

 トラブルが表面化したのは2021年12月16日に受けた1本の連絡だった。京都大学学術情報メディアセンターは、同大学だけでなく他大学の教員や学生、公的研究機関の研究者などが有償でスパコンを利用できるようにしている。利用者からの連絡を受け、スパコンのデータが大量に消失している事態に初めて気付いた。

図 2021年12月に京都大学のスーパーコンピューターで発生したファイル消失の経緯
図 2021年12月に京都大学のスーパーコンピューターで発生したファイル消失の経緯
実行中のスクリプトを不用意に更新したことがトラブルを招いた
[画像のクリックで拡大表示]

 京都大学は即座にスパコンの納入ベンダーである日本ヒューレット・パッカードの担当者に連絡。状況を確認したところ、コマンド処理プログラム「bash」のシェルスクリプトがファイル削除を実行していたことが判明した。当該スクリプトを12月16日午後0時43分に停止し、以降のファイル削除を食い止めた。

 ただファイル削除が実行された期間は12月14日午後5時32分からスクリプトを止めた16日午後0時43分までの約43時間に及んだ。影響を受けたのはスパコンの利用者約1600人のうち68人にとどまったものの、消失ファイル数は約3400万、容量は約77テラバイト(TB)に達した。「研究者が学術論文のために使う重要データなども含まれる」と、京都大学情報部情報基盤課の担当者は説明する。一部はバックアップが残っている他、復旧不要なファイルもあるため、実質的な被害は約8TBという。

ログを削除するはずが誤動作

 ファイルが消失した原因はその後の調査により、日本ヒューレット・パッカードの担当者が2021年11月下旬に実施した作業だったことが分かった。バックアップスクリプトの修正とその適用手順に問題があり、不要になったバックアップログファイルを削除するはずの処理が、利用者向け「/LARGE0」ディレクトリ配下のファイル群を削除する処理として誤動作した。

 バックアップスクリプトには、findコマンドを用いて10日以上古いログファイルを検索・削除する処理が含まれている。日本ヒューレット・パッカードの担当者は同スクリプトの機能改善と併せてコードの視認性や可読性を高めるため、findコマンドの検索・削除処理に渡す変数名を変更。この修正スクリプトのリリース手順に考慮不足があった。

 bashはスクリプトの実行中も適時スクリプトファイルからコマンドを読み込む。日本ヒューレット・パッカードの担当者はこれを認識しておらず、スクリプトが実行中の状態で内容を書き換えた。結果、上書きしたスクリプトの再読み込みが発生し、未定義の変数が含まれたfindコマンドが実行された。これにより、ログディレクトリ配下にあるファイルを削除する本来の処理ではなく、/LARGE0ディレクトリのファイルを削除する誤動作が発生したという。

 では、なぜこの処理が約43時間にもわたって続いてしまったのか。京都大学情報部情報基盤課の担当者によると、「利用者によるファイルの作成と削除は日常的に行われている。利用者単位でのファイル保有状況は監視しておらず、異常なファイル減少に気付けなかった」としている。