うるう秒について
うるう秒
たとえば、日本時間 2012 年 7 月 1 日 9:00 にうるう秒が挿入されている。
「08:59:59」の次の時刻に「08:59:60」が入る。
+―――――――――+―――――――――-+――――――――――――――――――――+ | 日本標準時 JST | NTPDを使っている | NTPを使っていない | | 2012/07/01 | (STEPモード +――――――――――-+――――――――+ | | デフォルト)[※1] | TZDATA更新済み[※2] | 未対策[※3] | +―――――――――+―――――――――-+――――――――――-+――――――――+ | 08:59:59 | 08:59:59 | 08:59:59 | 08:59:59 | +―――――――――+―――――――――-+――――――――――-+――――――――+ | 08:59:60 | 08:59:59 | 08:59:60 | 09:00:00 | +―――――――――+―――――――――-+――――――――――-+――――――――+ | 09:00:00 | 09:00:00 | 09:00:00 | 09:00:01 | +―――――――――+―――――――――-+――――――――――-+――――――――+
[※1]:ntpdが有効な場合、標準のstepモード(大体これで運用されている)
・うるう秒 08:59:60 (JST)挿入時、08:59:59 を繰り返す(時間遡行)
・ntpd に ‘-x’ オプション(slewモード)を有効にすると、うるう秒を挿入せず、ゆっくり時間補正する
しかし、ntp-4.2.2p1-9 以下の ntpd では、-x オプションをつけても時間が遡行する
・kernelが古い場合は、クラッシュする可能性がある
○問題のあったバージョン
・v2.6.22 以降のkernel
※v2.6.22 以前のkernelは問題なし
○対応されたkernel(以降のkernelであれば問題なし)
・SLES11 SP1 x86_64 kernel >= 2.6.32.59-0.7.1
・SLES11 SP2 x86_64 kernel >= 3.0.38-0.5.1
・SLES11 SP1 i386 kernel >= 2.6.32.59-0.7.1
・SLES11 SP2 i386 kernel >= 3.0.38-0.5.1
・RHEL4 | kernel-2.6.9-89.EL (RHSA-2009:1024-1) 以上
・RHEL5 | kernel-2.6.18-164.el5 (RHSA-2009:1243-3) 以上
STEPモード
STEPモードでは不連続に一度に時刻を調整するため、時刻がずれている場合は
すぐに正しい時刻に調整されていきますが、時間の逆行が発生する可能性が
あります。これによりソフトウェアに不具合が起きることがあります。
SLEWモード
SLEWモードは、時間を逆行させることはせず、最大でも0.5msずつ徐々に
時間をずらしていきます。時刻がずれている場合には正しい時刻に調整する
にの膨大な時間がかかります。
例えば10秒ずれていると、これを調整するのに20000秒必要になります。
[※2]:TZDATA更新済みの場合(2015年のうるう秒を含んだtzdataパッケージにアップデート、かつ、うるう秒を含んだタイムゾーンを指定している場合
・ntp を動かさなくても、08:59:60 がカウントされる
・ただし、08:59:60 秒をカウントしても、許容されうる環境のみ推奨
[※3]:ntpdを入れていない場合
・世間から「1秒」時刻が進む
※参考URL
http://hiroki.jp/leap-second-2015
http://pocketstudio.jp/log3/2012/06/23/leaptime_2012/