気をつけろ!chronyの初期設定はstepモードだ!
RHEL7から新キャラとして登場してきたChrony
メインで使っている環境はまだRHEL6 が多かったのであまり触れてこなかったが、最近ver.7での構築が増えてきた。
一応RHEL7まではntpdと選択は可能であるものの、Chronyを覚えるいい機会だし、Chronyを使い始めます。
構築してたら気になりだした点が一つ、Chronyのデフォルトはstep? それともslewなの?
stepだと「うるう秒」とか、HWクロックとのズレが発生していた場合などに時間がしれっとジャンプする可能性があるから怖い。
そんなわけで今回はChronyについて調べたメモ
Chrony登場。
新たなNTPとして登場
今まで使い慣れていたntpdに入れ替わりでCent7から新登場。
御存知の通りCent7でserviceコマンドもsystemctlに置き換えられた。
注意はされるものの、一応使用可能なのにntpdは完全に切り捨てられてしまった。
Cent7でも共存しているので一応設定は可能であるものの、
8からntpdはついにサポートされなくなってしまうそうだ。
いい加減にChronyを覚えなければならない時代です。
NTPとの違い
大きく言えばChronyのほうが早くて正確とのこと。
加えて、使用するポートが変更やslewの細かい設定ができたり、
HWクロックの修正が可能等、以前のntpdより詳細設定が可能となっている。
configの設定内容や、コマンドも変わってきてるので後述したい。
esxiなどではどうなるのだろうか。
VMwareのESXiなどでもntpdは使用されている。
こちらでもchronyに置き換えられてしまうのだろうか。
今の所、調べた記事にはchronyに置き換えられたものは見つからないのでntpdを使用するようだ。
ただ置き換えられてしまうのも時間の問題だろう。
設定値
デフォルトの設定値
/etc/chrony.conf
confファイルは以下になる。 /etc/chrony.conf
server
NTPサーバに時刻問い合わせ先を指定
rtcsync
H/Wクロックの同期設定(11分/1回)
makestep
stepモード
maxslewrate
slewの調整スピード
port
使用するport指定
allow / deny
読んで字の如し
bindaddress
バインドの設定
ここで今日の本題です。
デフォルト設定は?
# In first three updates step the system clock instead of slew # if the adjustment is larger than 10 seconds. makestep 10 3
デフォルトだと上記の様になっており、
makestep [ずれを検知した秒数] [ずれを検知した回数]の書式で記載する
つまりデフォルトだとmakestep 1.0 3なので
1.0秒のずれを3回検知したらstepモードで同期する。となっている。
うん。それでは困るのです。ゆっくりスマートに正しい時間に合わせてほしいのです。
というわけでslewに変更
設定値の変更
# In first three updates step the system clock instead of slew # if the adjustment is larger than 10 seconds. #makestep 10 3 ★コメントアウト leapsecmode slew ★追記
先程記載したとおりstepの部分をコメントアウトし、slewモードの記載を追記する。
leapsecmode slew
よし。これでslewに変更。
あとはchronyのサービスを再起動して反映する。
# systemctl restart chronyd
使いそうなchronyのオプション
chronyc sources
ntpdにおけるntpq -p
chronyc sourcestats -v
chrony ソースの統計情報の確認
さいごに
色々変わると大変だけど、その度に新機能とか増えて便利になりますよねぇ。 日々勉強ですね。