概要
直近のうるう秒(2015/06/30 23:59:60 UTC)の挿入について。
OSやサービスごとに対応が結構違うので情報を得るのが少し大変。
もろもろの原理を理解する前にとりあえずOSの対策だけしておきたい人用に
Linuxで広く使われるntpdの対応方法を書いておく。
一先ずCentos5,6, AmazonLinuxでの対応方法を下記する。
やるべきこと
- 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リリース)以前のntpdはslewモードで動作しないバグが有るのでうるう秒対策をする場合は基本的にバージョンアップしたほうが良い。
CentOS5 & 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
AmazonLinuxの場合
https://forums.aws.amazon.com/ann.jspa?annID=3064
公式の見解を参考にすると基本的に下記をやっとけば良い感じ。
細かい違いだが、AmazonLinuxの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
基本的に対応不要
CentOS7以降で標準化された"chronyd"
基本的にchronydはslewモードで動作するので対応不要(と思ってる)。
ただし、デフォルト設定ではntpdのslewモードと比べて同期完了までの速度が早い。
slewの調整速度は"maxslewrate"で指定出来る。気になる場合は調整したほうがよいかもしれない。
chronydはこちらが参考になる