chrony

提供: ArchWiki
ナビゲーションに移動 検索に移動

この記事は、NTP クライアントとサーバーの代替である、Chrony の設定と起動の方法について記述しています。Chrony はローミングや、ネットワークに接続している時間が限られるシステムに向いています。

インストール

chrony パッケージをインストールしてください。

設定

最小限の設定ファイルは以下のようになります (ホストネームの代わりに IP アドレスを使用):

/etc/chrony.conf
server 1.2.3.4 offline
server 5.6.7.8 offline
server 9.10.11.12 offline
driftfile /etc/chrony.drift
rtconutc
rtcsync

NTP サーバー

まず /etc/chrony.conf にマシンが同期するサーバーを設定する必要があります。NTP サーバーは strata と呼ばれる多数の階層でクラス分けされています。独立したソースとされるデバイスは stratum 0 ソース、stratum 0 デバイスに直接接続しているサーバーは stratum 1 ソース、stratum 1 ソースに接続しているデバイスは stratum 2 ソースというふうに分類されます。

サーバーの stratum は正確性や信頼性を表しているわけではないことに注意してください。一般的に時刻同期に使われるのは stratum 2 のサーバーです。どのサーバーに接続するのかまだ決めてない場合、pool.ntp.org サーバー (別リンク) を使って一番地理的に近いサーバープールを選んでください。

設定例:

server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

起動時にコンピュータがインターネットに接続しない場合、offline オプションを使うことが推奨されます。サーバーに接続できるようになるまで chrony に接続を試みないようにすることができます:

server 0.pool.ntp.org offline
server 1.pool.ntp.org offline
server 2.pool.ntp.org offline
server 3.pool.ntp.org offline

接続が確立されるまで DNS 解決は利用できないため、ホストネームのかわりに IP アドレスを使ったり、/etc/hosts ファイルでホストネームに対して IP アドレスを指定すると良いでしょう。

chronyd にインターネット接続が確立されたことを知らせる

インターネットに接続したら、以下のコマンドを実行:

# chronyc
chronyc> online
200 OK
chronyc> exit

activity オプションを使うことで状態を表示できます:

# chronyc activity
200 OK
3 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

コマンドを実行すると Chrony はあらかじめ設定された時刻サーバーに接続して必要であれば時刻を更新します。インターネットに接続しなくなったことを通知するには、以下のコマンドを実行:

# chronyc offline
200 OK

# chronyc activity
200 OK
0 sources online
3 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

networkmanagerconnman のディスパッチャサービスを使うことでオンライン・オフラインの状態を自動的に管理することができます。下を見てください。

最後に、/usr/share/doc/chrony/chrony.txt のユーザーガイドを覚えておいてください、疑問がでたときに役にたつはずです。オンラインから読むこともできます [1]。関連する man ページも参照しましょう: man {chrony|chronyc|chronyd|chrony.conf}

For intermittently running desktops

The configuration described here is not really suited well for intermittently running desktops. A machine running Arch Linux for five years, accumulated a 300 s error within the RTC. After a reboot it took chrony a long time to adjust this difference.

/etc/sysconfig/chronyd
OPTIONS='-r -s'
/etc/chrony.conf
dumponexit
dumpdir /var/lib/chrony
rtcfile /var/lib/chrony/rtc

This keeps, interestingly, the RTC still out-of-date, but after each re-start, chrony adjusts the accumulated error of the RTC and the system time is quite synchronous to NTP even shortly after a start.

使用方法

chronyd の起動

パッケージには chronyd.service が含まれています。詳しくは systemd を参照してください。

ノート: systemd-timesyncd.servicechronyd と衝突するため、chronyd有効化するには先に systemd-timesyncd.service を無効にする必要があります。

システムクロックとハードウェアクロックを同期させる

起動中に起動時刻をハードウェアクロック (RTC) から読み込みシステム時刻がセットされます。そして chrony デーモンが動いている間、数分毎に同期されます。ハードウェアクロックの時刻がズレていると、システム時刻も数分のあいだ時刻がズレることになります。この場合ハードウェアクロックをリセットする必要があります。

chronyc を使うことで強制的にシステム時刻をハードウェアに同期させることができます:

# chronyc
chronyc> trimrtc
200 OK
chronyc> quit

RTC とシステム時刻の差は数マイクロ秒以内になるはずです。すぐ後に完全に同期されます。

ネットワーク状態の通知

chrony.conf でプールを offline で指定した場合、ネットワーク状態が変わったことを chrony に通知する必要があります。

ネットワーク状態を chrony に通知する方法としては chronyc を使用する方法と、使用しているネットワーク設定マネージャのディスパッチャを使用する方法があります。

NetworkManager

NetworkManager の dispatcher スクリプトを使うことで、ネットワークの接続によって chronyd をオンライン/オフラインモードに切り替えることができます。AUR から networkmanager-dispatcher-chronyAUR をインストールして使うことができます。

netctl

AUR から netctl-dispatcher-chronyAUR をインストールしてください。netctl にフックが追加され接続時に自動的に実行されます。

参照