今日はタイムリープする
方法をご紹介します
今日話すこと
• うるう秒について
• うるう秒を感じる方法
• タイムリープする方法
今日話さないこと
• うるう秒による障害への対策
うるう秒とは
• 世界標準時(UTC) と 世界時(UT1) の差を埋めるもの
• 1秒増えたり減ったりする • 今のところ減ったことはない
• 1972年~2012年の間に計25回実施
• 実施年の 6月30日 または 12月31日
• 23時59分60秒 が追加される
• 日本時間だと次の日の 8時59分60秒
次回のうるう秒
• 2015年6月30日 23時59分60秒
• 日本時間だと 7月1日 23時59分60秒
• 2012年以来、3年ぶり
うるう秒と IT
• 2012年実施時には多くの Linux サーバで障害が発生
• 対策方法はカーネルとか ntpd とかのバージョンによって色々なので割愛
• ググれ (^ω^)
大手クラウドベンダーの対応
AWS:
前後12時間ずつ 計24時間かけて調整
GCP:
前後10時間ずつ 計20時間かけて調整
AWS, GCP
「うるう秒なんてなかった」 ( ・´ー・`)ドヤ
Leap Indicator
• うるう秒が近いことを知らせるフラグ
• 権威サーバに LI ビットが設定されると
徐々に下位 NTP サーバに浸透していく
• LI ビットを受け取ったときどう対応するかは
各 NTP サーバによって異なる
LI ビットの種類
00: うるう秒なし(通常時)
01: うるう秒あり(1秒増やす)
10: うるう秒あり(1秒減らす)
LI ビットを覗いてみる
$ ntpq -c rv
前提知識
• ntpd では 23時59分60秒 は挿入されない
• 23時59分59秒 が2秒分ある
• 「60秒」を扱えないシステムもあるため
• (と思われる)
ミリ秒はどうなるの?
2回目の 23時59分59秒 になったら
ミリ秒はリセットされます
ミリ秒はどうなるの?
23:59:59.000000 :
23:59:59.999999 23:59:59.000000
: 23:59:59.999999 00:00:00.000000
通常の 23時59分59秒
2回目の 23時59分59秒 (うるう秒)
つまりぼくたちは、
うるう秒によって
1秒間の時間遡行が
できる・・・っ!!!
こっ、これは・・・っ!
(;・`д・´)