15.3. chrony の使用

15.3.1. chrony のインストール

chrony スイートは一部のバージョンの Red Hat Enterprise Linux 7 でデフォルトでインストールされます。必要な場合には、インストールされていることを確認するために root で以下のコマンドを実行します。
~]# yum install chrony
chrony デーモンのデフォルトの場所は、/usr/sbin/chronyd です。コマンドラインユーティリティーは、/usr/bin/chronyc にインストールされます。

15.3.2. chronyd ステータスの確認

chronyd のステータスを確認するには、以下のコマンドを発行します。
~]$ systemctl status chronyd
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
   Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h ago

15.3.3. chronyd の起動

chronyd を起動するには、root で以下のコマンドを発行します。
~]# systemctl start chronyd
chronyd をシステム起動時に自動的に起動するには、root で以下のコマンドを発行します。
~]# systemctl enable chronyd

15.3.4. chronyd の停止

chronyd を停止するには、root で以下のコマンドを発行します。
~]# systemctl stop chronyd
chronyd がシステム起動時に自動的に起動しないようにするには、root で以下のコマンドを発行します。
~]# systemctl disable chronyd

15.3.5. chrony の同期を確認する

chrony が同期しているかどうかを確認するには、trackingsources、および sourcestats のコマンドを使用します。

15.3.5.1. chrony トラッキングの確認

chrony のトラッキングを確認するには、以下のコマンドを発行します。
~]$ chronyc tracking
Reference ID    : 1.2.3.4 (a.b.c)
Stratum         : 3
Ref time (UTC)  : Fri Feb  3 15:00:29 2012
System time     : 0.000001501 seconds slow of NTP time
Last offset     : -0.000001632 seconds
RMS offset      : 0.000002360 seconds
Frequency       : 331.898 ppm fast
Residual freq   : 0.004 ppm
Skew            : 0.154 ppm
Root delay      : 0.373169 seconds
Root dispersion : 0.024780 seconds
Update interval : 64.2 seconds
Leap status     : Normal
各フィールドは、以下のとおりです。
Reference ID
入手可能な場合、コンピューターが現在同期しているサーバーの参照 ID および名前 (または IP アドレス) です。これが127.127.1.1 の場合はコンピューターが外部ソースと同期しておらず、local モードで稼働していることを意味します (chronyc の local コマンド、または /etc/chrony.conf ファイル内の local 経由 (local のセクションを参照))。
Stratum
参照クロックのあるコンピューターから何ホップ離れているかを示します。このようなコンピューターは stratum-1 コンピューターなので、上記の例のコンピューターは 2 ホップ離れていることになります (つまり、a.b.c が stratum-2 で、stratum-1 から同期しています)。
Ref time
参照ソースからの最後の測定が処理された時間 (UTC) です。
System time
通常の操作では、chronyd はシステムクロックを更新しません。これは、タイムスケールにおけるジャンプはいかなるものでも特定のアプリケーションプログラムに有害な結果をもたらすためです。代わりに、システムクロックのエラーはこれをわずかに早めたり遅くしたりしてエラーがなくなるまで修正します。その後に、システムクロックを通常のスピードに戻します。その結果、(gettimeofday() システムコールを使用した他のプログラム、またはシェルの日付コマンドが読み取る) システムクロックが chronyd が予測する現在の実際の時間 (サーバーモードで稼働している場合、これを NTP クライアントに報告) と異なることになります。この行で報告される値は、この効果による差異です。
Last offset
最後のクロック更新におけるローカルオフセットの予測です。
RMS offset
オフセット値の長期の平均です。
Frequency
frequency は、chronyd が修正しない場合にシステムクロックが間違うレートです。これは、ppm (100 万分の 1) で表されます。たとえば、1ppm という値が意味するのは、システムクロックが 1 秒進んだと考えると、実際の時間と比較して 1.000001 秒進んでいるということです。
Residual freq
現在選択されている参照ソースの residual frequency を示します。これは、参照ソースからの測定が示すあるべき周波数と現在使用されている周波数の差異を反映しています。これが常にゼロとは限らない理由は、補正する手順が周波数に提供されているためです。参照ソースからの測定が取得され、新たな剰余周波数が計算されるごとに、この剰余の予測される正確性は既存の周波数の値の予測される正確性 (次の skew を参照) と比較されます。新たな剰余の加重平均は、加重がこれらの正確性に依存して計算されます。参照ソースからの測定に一貫した傾向がある場合、剰余は時間をかけてゼロにされます。
Skew
周波数の予測されるエラー範囲です。
Root delay
コンピューターが究極的に同期される stratum-1 コンピューターへのネットワークパスの遅延の合計です。極端な状況では、この値はマイナスになる場合もあります。(コンピューターの周波数が相互に追跡しておらず、ネットワークの遅れが各コンピューターでの応答時間に比べて非常に短いという対称的なピア配置でこれが発生する可能性があります。)
Root dispersion
コンピューターが究極的に同期される stratum-1 コンピューターにすべてのコンピューターで累積された分散の合計です。分散はシステムクロックの解像度、統計数字の測定変動などに起因します。
Leap status
Leap のステータスで、Normal、Insert second、Delete second、または Not synchronized のいずれかになります。

15.3.5.2. chrony ソースの確認

ソースコマンドは、chronyd がアクセスしている現在の時間ソースについての情報を表示します。オプションの引数 -v を指定すると、詳細情報になります。この場合、コラムの意味を表示する見出しの行が表示されます。
~]$ chronyc sources
	210 Number of sources = 3
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
#* GPS0                          0   4   377    11   -479ns[ -621ns] +/-  134ns
^? a.b.c                         2   6   377    23   -923us[ -924us] +/-   43ms
^+ d.e.f                         1   6   377    21  -2629us[-2619us] +/-   86ms
各コラムの表示内容は、以下のとおりです。
M
ソースのモードを示します。^ はサーバーを、= はピアを、# はローカル接続している参照クロックを意味します。
S
このコラムは、ソースの状態を示します。* は、chronyd が現在同期しているソースを示します。+ は、選択されたソースと結合される受け入れ可能なソースを示します。- は、受け入れ可能なソースで結合アルゴリズムに除外されたものを示します。? は、接続が切断されたソース、またはパケットがすべてのテストをパスしないソースを示します。x は、chronydfalseticker と考える (つまり、その時間が他の大半のソースと一致しない) クロックを示します。~ は、時間の変動性が大きすぎるように見えるソースを示します。? 条件は、少なくとも 3 つのサンプルが収集されるまで開始時にも表示されます。
Name/IP address
ソースの名前または IP アドレス、または参照クロックの参照 ID を表示します。
Stratum
最も間近に受信したサンプルでレポートされている、ソースの stratum を表示します。Stratum 1 は、ローカルで参照クロックに接続されているコンピューターを示します。Stratum 1 コンピューターに同期しているコンピューターは、stratum 2 に存在することになります。Stratum 2 コンピューターに同期しているコンピューターは stratum 3 に存在することになり、以後も同様に続きます。
Poll
ソースがポーリングされるレートで、間隔のベース-2 対数を秒数で示します。つまり、値が 6 の場合、64 秒ごとに測定が行われます。chronyd は、支配的な条件に対応して自動的にポーリングレートを変化させます。
Reach
ソースの到達可能性のレジスターで、8 進法で表示されます。レジスターは 8 ビットで、ソースからパケットを受信するたびに、またはミスするたびに更新されます。値が 377 の場合、最近の 8 回の通信全体についての有効な返信が受信されたことを意味します。
LastRx
このコラムは、ソースから最後のサンプルが受信されたのがいつだったかを表示します。通常は、秒数で表示されます。mhd、および y の各文字は、それぞれ分、時間、日数、年を意味します。値が 10 年の場合、このソースからまだサンプルを受信していないことを示します。
Last sample
このコラムは、ローカルクロックと最後に測定されたソースのオフセットを表示します。角括弧内の数字は、実際に測定されたオフセットを表示します。これには ns (ナノ秒)、us (マイクロ秒)、ms (ミリ秒)、または s (秒) の各接尾辞が付く場合があります。角括弧の左側は元の測定を示し、slew がそれ以降にローカルクロックに適用可能になるように調整されています。+/- に続く数字は、測定におけるエラーのマージンを示します。オフセットの値がプラスの場合、ローカルクロックがソースよりも進んでいることを意味します。

15.3.5.3. chrony ソースの統計情報の確認

sourcestats コマンドを使うと、chronyd が現在調査している各ソースの誤差のレートとオフセットの予測プロセスについての情報を表示できます。オプション引数 -v を使うと、詳細情報になります。この場合、コラムの意味を表示する見出しの行が表示されます。
~]$ chronyc sourcestats
210 Number of sources = 1
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
===============================================================================
abc.def.ghi                11   5   46m     -0.001      0.045      1us    25us
各コラムの表示内容は、以下のとおりです。
Name/IP address
NTP サーバー (またはピア) の名前または IP アドレス、または行の残りの部分が関連する参照クロックの参照 ID です。
NP
現在サーバーで保持されているサンプルポイントの数です。誤差レートと現在のオフセットは、これらのポイントを使って線形回帰を実行することで予測されます。
NR
最新の回帰を追跡している同一サインを持つ剰余の実行数です。この数字がサンプル数に対して少なくなりすぎる場合は、直線がデータに適合しなくなったことを意味します。実行数が少なすぎる場合、chronyd は古いサンプルを破棄し、実行数が受け入れ可能なものになるまで回帰を再実行します。
Span
一番古いサンプルと最新のサンプルの間隔です。単位が表示されない場合は、秒数を表しています。この例の間隔は 46 分です。
Frequency
これは予測されるサーバーの剰余周波数で、ppm (100 万分の 1) で表されます。このケースでは、コンピューターのクロックはサーバーよりも 109 分の 1 遅く実行していると判断されています。
Freq Skew
Freq の予測されるエラー範囲です (ppm (100 万分の 1) で表されます) 。
Offset
ソースの予測されるオフセットです。
Std Dev
サンプルの予測される標準偏差です。

15.3.6. システムクロックを手動で調整する

クロックの回転による進行中の調整を迂回して、システムクロックをただちに更新するには、root で以下のコマンドを発行します。
~]# chronyc
chrony> password commandkey-password
200 OK
chrony> makestep
200 OK
ここでの commandkey-password は、キーファイルに保存されているコマンドキーまたはパスワードになります。
rtcfile ディレクティブを使用している場合は、リアルタイムクロックを手動で調整しないでください。ランダムな調整を行うと、リアルタイムクロックがずれるレートを測定する必要のある chrony に影響を与えます。
chronyc を使ってローカルの chronyd を設定する場合は、-a を使うと authhashpassword のコマンドが自動的に実行されます。つまり、上記のインタラクティブのセッションが以下のもので置き換えられます。
chronyc -a makestep