概要
直近のうるう秒(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リリース)
以前のntpd
はslew
モードで動作しないバグが有るのでうるう秒対策をする場合は基本的にバージョンアップしたほうが良い。
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”
基本的にchronyd
はslew
モードで動作するので対応不要(と思ってる)。
ただし、デフォルト設定ではntpdのslew
モードと比べて同期完了までの速度が早い。
slewの調整速度は"maxslewrate"
で指定出来る。気になる場合は調整したほうがよいかもしれない。
chronyd
はこちらが参考になる
– http://qiita.com/yunano/items/7883cf295f91f4ef716b