概要

直近のうるう秒(2015/07/01 23:59:60 UTC)の挿入について。
OSやサービスごとに対応が結構違うので情報を得るのが少し大変。
もろもろの原理を理解する前にとりあえずOSの対策だけしておきたい人用に
Linuxで広く使われるntpdの対応方法を書いておく。
一先ずCentOS5,6, Amazon Linuxでの対応方法を下記する。

やるべきこと

  • ntp-4.2.6p5-3 以降にバージョンアップ (201506現在最新)
  • ntpdをslewモードで動かす

ntpdのslewモードって何

緩やかな時刻同期を実行するntpdの起動モード。
1秒間のズレを約2000秒(33分)かけて修正する。

slewモードで動くntpdはうるう秒そのものは無視して、1秒先に進む。そして緩やかに挿入後の時間に同期していく。今のところOSやアプリケーションに影響を与えない対策としてslewモードへの移行が推奨されてる。
なお、ntp-4.2.6p5-3(2015/03/09リリース)以前のntpdslewモードで動作しないバグが有るのでうるう秒対策をする場合は基本的にバージョンアップしたほうが良い。

Cent OS 5 & 6の場合

1. ntpdのバージョンアップ
# yum update ntp

2. ntpdを停止する
# service ntpd stop

3. kernelの保持時刻・周波数オフセットをクリアする
# ntptime -s 0 -f 0

4. ntpdをslewモードで起動するようセット
# vi /etc/sysconfig/ntpd
- OPTIONS="u ntp:ntp -p /var/run/ntpd.pid -g"
+ OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g"
 -xオプションを追記して保存

5. ntpd を起動
# service ntpd start

Amazon Linuxの場合

https://forums.aws.amazon.com/ann.jspa?annID=3064
公式の見解を参考にすると基本的に下記をやっとけば良い感じ。
細かい違いだが、Amazon Linuxのntpはntp-4.2.6p5-30.24.amzn1 以降が望ましい。

1. ntpdのバージョンアップ
# yum --releasever=latest install ntp

2. ntpdを停止する
# service ntpd stop

3. kernelの保持時刻・周波数オフセットをクリアする
# ntptime -s 0 -f 0

4. ntpdをslewモードで起動するようセット
# vi /etc/sysconfig/ntpd
- OPTIONS="-g"
+ OPTIONS="-g -x"
 -xオプションを追記して保存

5. ntpd を起動
# service ntpd start

余談: その他のOS, NTPクライアント

Windows OS

基本的に対応不要
https://support.microsoft.com/en-us/kb/2722715/ja

CentOS7以降で標準化された”chronyd”

基本的にchronydslewモードで動作するので対応不要(と思ってる)。
ただし、デフォルト設定ではntpdのslewモードと比べて同期完了までの速度が早い。
slewの調整速度は"maxslewrate"で指定出来る。気になる場合は調整したほうがよいかもしれない。

chronydはこちらが参考になる
http://qiita.com/yunano/items/7883cf295f91f4ef716b

元記事はこちら

ntpdのうるう秒対応(2015/07/01)