Linux Daily Topics

2012年7月3日うるう秒がLinuxシステムを直撃! わかっていても避けられなかったトラブル

すでにあちこちでニュースになっているので、ご存じの方も多いかと思うが、グリニッジ標準時で6月30日の深夜、地球の自転にあわせるためにうるう秒(a leap second)が23時59分60秒として挿入された。そしてこの1秒が世界各地のコンピュータシステムをちょっとした混乱に陥れたのである。Linuxもその例外ではなく、いくつものトラブルが報告されている。

今回のうるう秒トラブルの多くはコンピュータの内部時計を調整するNTP(Network Time Protocol)に正しく情報を伝達できなかったことが主原因だとされている。Linuxではカーネルバージョンが2.6.26以上のシステムで頻発したようだ。

Linuxで起こったトラブルの中では、⁠Server Fault」というサイトにDebian "Squeeze"のクラッシュ事例が詳細に記録されている。

この記事によれば、データセンターで稼働するDebianマシンがすべて、うるう秒が挿入された当該時刻から何の反応も示さなくなったとある。カーネルはバージョン3.2.21をカスタムビルドしたもので、ほとんどがDellのブレードサーバ上で動作していたとのこと。pingにも反応せず、画面は真っ黒なブランクスクリーンとなった。管理者はNTPデーモンを停止し、うるう秒をリセットするためのPerlスクリプトを作成/適用することでシステムを修復し、翌日になってからNTPをリスタートしたようだ。

うるう秒は2009年にも挿入されており、その当時もLinuxシステムでのトラブルが報告された。なぜ今回はその教訓を生かせなかったのか。どうも今回のそれは、2009年のトラブルとは違う理由に起因するらしく、カーネルデベロッパのひとりであるJohn Stultz氏はLinuxカーネルが「hrtimerサブシステムに通知する関数clock_was_set()が呼び出されない状態でうるう秒が追加される仕様になっていた」ことが問題だと指摘している。なお同氏はこの問題を修正するパッチを公開している

来るのがわかっていても、準備をしていても、避けられないトラブルはある。幸い、データ全消失のような大きな事故にはつながらなかったが、ITは思っているより不安定だということを今回のうるう秒バグは改めて証明したのかもしれない。

おすすめ記事

記事・ニュース一覧