chronyd覚書


# `chronyd`とは

chronydデーモンは、カーネルで実行されているシステムクロックを調整します。
調整は、NTPプロトコルを使用して外部のタイムソースを参照することで行われます。
外部参照が使用できない場合、chronydはドリフトファイルに格納されている最後に計算された情報を使用します。

### chronycコマンド
chronyデーモンは、コマンドラインユーティリティchronyc によって制御できます。

このユーティリティは、chronydに変更を加えるためにいくつかのコマンドを入力できるコマンドプロンプトを提供します。

デフォルトの設定では、chronydはchronycのローカルインスタンスからのコマンドのみを受け入れますが、chronycを使用して構成を変更し、chronyd が外部制御を許可するようにすることができます。

## chronyのインストール
```
# rpm -qa | grep chrony

chrony-2.1.1-3.el7.x86_64
```

```
# yum update chrony
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos Resolving Dependencies
--> Running transaction check
---> Package chrony.x86_64 0:2.1.1-3.el7 will be updated
---> Package chrony.x86_64 0:2.1.1-4.el7_3 will be an update
--> Finished Dependency Resolution Dependencies Resolved
=============================================================================================================
Package	Arch	Version	Repository	Size
=============================================================================================================
Updating:
chrony	x86_64	2.1.1-4.el7_3	rhui-REGION-rhel-server-releases	281 k

Transaction Summary
=============================================================================================================
Upgrade 1 Package

Total download size: 281 k
Is this ok [y/d/N]: y
Downloading packages:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/797a8b55-63bd-43ad-ebcb-daead2f9c588.png)
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
chrony-2.1.1-4.el7_3.x86_64.rpm
Running transaction check	| 281 kB 00:00:00
Running transaction test
Transaction test succeeded Running transaction	
Warning: RPMDB altered outside of yum.
Updating : chrony-2.1.1-4.el7_3.x86_64	
1/2
Cleanup : chrony-2.1.1-3.el7.x86_64	2/2
Verifying : chrony-2.1.1-4.el7_3.x86_64	1/2
Verifying : chrony-2.1.1-3.el7.x86_64	2/2
Updated:
chrony.x86_64 0:2.1.1-4.el7_3	
Complete!	

```

```
# systemctl status chronyd
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2017-01-25 14:26:24 EST; 4min 36s ago
Process: 6402 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 6398 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 6400 (chronyd)
CGroup: /system.slice/chronyd.service
└─6400 /usr/sbin/chronyd

Jan 25 14:26:24 RH73-1 chronyd[6400]: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC
+PR...HASH)
Jan 25 14:26:24 RH73-1 systemd[1]: Starting NTP client/server...
Jan 25 14:26:24 RH73-1 chronyd[6400]: Frequency -13.214 +/- 0.044 ppm read from
/var/lib/chrony/drift
Jan 25 14:26:24 RH73-1 systemd[1]: Started NTP client/server.
Jan 25 14:26:29 RH73-1 chronyd[6400]: Selected source 104.131.53.252 Hint: Some lines were ellipsized, use -l to show in full.

```
## 実行確認
```
# chronyc tracking
Reference ID	: 104.131.53.252 (104.131.53.252)
Stratum	: 3
Ref time (UTC) : Wed Jan 25 19:34:04 2017
System time	: 0.000376487 seconds fast of NTP time 
Last offset	: -0.000031977 seconds
RMS offset	: 0.000982537 seconds 
Frequency	: 12.888 ppm slow Residual freq	: +0.053 ppm
Skew	: 0.679 ppm
Root delay	: 0.014095 seconds 
Root dispersion : 0.021393 seconds Update interval : 65.1 seconds 
Leap status	: Normal 
#

```


### Reference ID
コンピュータが現在同期されているサーバーの参照ID と名前 (またはIPアドレス) です。

127.127.1.1の場合、コンピュータが外部ソースと同期されておらず、"local"モードが動作していることを意味します。

### Stratum 階層
参照クロックが接続されているコンピュータから離れているホップ数を示します。

上記の例では、コンピュータは2ホップ離れています(コンピュータ自体を1階層として数えます)。

### Ref time 参照時間
参照ソースからの最後の測定値が処理された時刻 (UTC) です。

### System time システム時刻

報告される値は、以下の効果による差です。

通常の動作では、タイムスケールのジャンプは特定のアプリケーションプログラムに悪影響を及ぼす可能性があるため、chronydはシステムクロックをステップしません。代わりに、システムクロックのエラーは、エラーが取り除かれるまでシステムクロックをわずかにスピードアップまたは減速し、システムクロックの通常の速度に戻ることによって修正されます。 

その結果、システムクロック(gettimeofday()システムコールを使用するプログラムが読み取る、またはシェルのdateコマンドによって読み取られる)が、chronyd の現在の実際の時刻の推定値と異なる期間が生じます(サーバーモードで動作している場合には、NTPクライアントに報告します)。

### Last Offset 最後のオフセット

前回のクロック更新時の推定ローカルオフセットです。

### RMS Offset RMSオフセット

オフセット値の長期平均(Root Mean Square)です。

### Frequency 周波数
「周波数」とは、chronydが時計を修正しなかった場合にシステムのクロックが間違っている速度です。 ppm(100万分の1)で表現されます。たとえば、値が 1ppmの場合、システムの時計が1 秒進んだと考えると、実際には実際の時刻に対して 1.000001秒進んだという意味になります。

### freq 残存周波数
現在選択されている参照元の「残存周波数」が表示されます。

参照ソースからの測定値が、周波数を示す値と現在使用されている周波数との差を反映します。これが必ずしもゼロであるとは限らないのは、周波数にスムージング手順が適用されるためです。 基準ソースからの測定値が取得され、新しい残差周波数が計算されるたびに、この残差の推定精度が既存の周波数値の推定精度(次のスキューを参照)と比較されます。 新しい周波数の加重平均は、これらの精度に応じて重み付けで計算されます。基準ソースからの測定値が一貫した傾向に従う場合、残差は時間の経過とともにゼロに近づきます。  

### Skew スキュー
周波数の推定誤差です。

### Root delay ルート遅延
コンピュータが最終的に同期される階層1コンピュータへのネットワークパス遅延の合計です。  


### Root dispersion　ルート分散
すべてのコンピュータを通じて蓄積された総分散量です。分散は、システムクロックの分解能、統計的測定の変動などによって生じます。

### Leap status　うるう秒ステータス
うるう秒ステータス。  

## 関連情報

https://chrony.tuxfamily.org/manual.html

https://www.mk-mode.com/blog/2016/12/27/linux-chrony-leap-second-measure/

https://qiita.com/ynishimura0922/items/ab4fed24f680aa034f82