前書き
正確な計時は、最新のソフトウェア展開の重要なコンポーネントになっています。 ログが正しい順序で記録されているか、データベースの更新が正しく適用されているかどうかにかかわらず、非同期時間はエラー、データ破損、その他のデバッグが難しい問題を引き起こす可能性があります。
Ubuntu 18.04には時刻同期が組み込まれており、systemdのtimesyncdサービスを使用してデフォルトで有効になっています。 この記事では、いくつかの基本的な時間関連コマンドを調べ、timesyncdがアクティブであることを確認し、代替ネットワークタイムサービスをインストールする方法を学習します。
前提条件
このチュートリアルを開始する前に、this Ubuntu 18.04 server setup tutorialで説明されているように、root以外のsudo対応ユーザーがいるUbuntu18.04サーバーが必要です。
基本時間コマンドのナビゲート
サーバー上の時間を見つけるための最も基本的なコマンドはdate
です。 すべてのユーザーがこのコマンドを入力して、日付と時刻を出力できます。
date
OutputTue Jul 10 14:48:52 UTC 2018
上記の出力で強調表示されているように、ほとんどの場合、サーバーはデフォルトでUTCタイムゾーンになります。 UTCはCoordinated Universal Timeで、経度0度の時刻です。 一貫して世界時を使用すると、インフラストラクチャが複数のタイムゾーンにまたがる場合の混乱が軽減されます。
要件が異なり、タイムゾーンを変更する必要がある場合は、timedatectl
コマンドを使用して変更できます。
まず、利用可能なタイムゾーンを一覧表示します。
timedatectl list-timezones
タイムゾーンのリストが画面に印刷されます。 SPACE
を押すとページダウンし、b
を押すとページアップできます。 正しいタイムゾーンを見つけたら、それをメモし、q
と入力してリストを終了します。
次に、タイムゾーンをtimedatectl set-timezone
で設定します。下で強調表示されている部分を、リストで見つけたタイムゾーンに置き換えてください。 この変更を行うには、sudo
とtimedatectl
を使用する必要があります。
sudo timedatectl set-timezone America/New_York
date
を再度実行すると、変更を確認できます。
date
OutputTue Jul 10 10:50:53 EDT 2018
タイムゾーンの略語は、新しく選択した値を反映する必要があります。
時計の確認方法とタイムゾーンの設定方法がわかったので、時刻が正しく同期されていることを確認しましょう。
timedatectlによるtimesyncdの制御
最近まで、ほとんどのネットワーク時刻同期はNetwork Time Protocol daemonまたはntpdによって処理されていました。 このサービスは、他のNTPサーバーのプールに接続し、一定の正確な時刻更新を提供します。
Ubuntuのデフォルトのインストールでは、ntpdではなくtimesyncdが使用されるようになりました。 timesyncdは同じタイムサーバーに接続し、ほぼ同じ方法で動作しますが、より軽量で、systemdおよびUbuntuの低レベルの動作とより統合されています。
引数なしでtimedatectl
を実行することにより、timesyncdのステータスをクエリできます。 この場合、sudo
を使用する必要はありません。
timedatectl
Output Local time: Tue 2018-07-10 10:54:12 EDT
Universal time: Tue 2018-07-10 14:54:12 UTC
RTC time: Tue 2018-07-10 14:54:12
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
これにより、現地時間、世界時(UTCタイムゾーンから切り替えていない場合は現地時間と同じ場合があります)、およびネットワーク時間のステータス情報が出力されます。 System clock synchronized: yes
は、時刻が正常に同期されたことを示し、systemd-timesyncd.service active: yes
は、timesyncdが有効で実行されていることを示します。
timesyncdがアクティブでない場合、timedatectlで有効にします:
sudo timedatectl set-ntp on
timedatectl
を再度実行して、ネットワーク時間のステータスを確認します。 実際の同期が行われるまでに1分かかる場合がありますが、最終的にはNetwork time on:
とNTP synchronized:
の両方がyes
を読み取る必要があります。
ntpdへの切り替え
timesyncdはほとんどの目的に適していますが、時間のわずかな変動にも非常に敏感な一部のアプリケーションは、ntpdのほうがより適切に機能する場合があります。
ntpdをインストールする前に、timesyncdをオフにする必要があります。
sudo timedatectl set-ntp no
timesyncdがオフになっていることを確認します。
timedatectl
出力でsystemd-timesyncd.service active: no
を探します。 これは、timesyncd
が停止したことを意味します。 これで、apt
を使用してntp
パッケージをインストールできます。
sudo apt update
sudo apt install ntp
ntpdはインストール後に自動的に開始されます。 ステータス情報についてntpdを照会して、すべてが機能していることを確認できます。
ntpq -p
Output remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
+ec2-52-0-56-137 216.239.35.0 2 u 16 64 1 7.872 -2.137 1.485
+66.220.10.2 129.6.15.30 2 u 12 64 1 65.204 3.740 2.686
+block.steinhoff 209.51.161.238 2 u 11 64 1 33.364 1.710 3.586
+eterna.binary.n 216.229.0.50 3 u 11 64 1 35.330 2.821 2.839
+2604:a880:800:1 209.51.161.238 2 u 14 64 1 0.394 0.386 2.462
+ec2-52-6-160-3. 130.207.244.240 2 u 11 64 1 8.150 2.050 3.053
+mx.danb.email 127.67.113.92 2 u 13 64 1 63.868 1.539 2.240
*hydrogen.consta 129.6.15.28 2 u 12 64 1 2.989 1.755 2.563
+ntp-3.jonlight. 127.67.113.92 2 u 10 64 1 64.561 2.122 3.593
+undef.us 45.33.84.208 3 u 12 64 1 33.508 1.631 3.647
+ntp-3.jonlight. 127.67.113.92 2 u 8 64 1 64.253 2.645 3.174
2001:67c:1560:8 145.238.203.14 2 u 22 64 1 71.155 -1.059 0.000
+test.diarizer.c 216.239.35.4 2 u 11 64 1 64.378 4.648 3.244
2001:67c:1560:8 145.238.203.14 2 u 18 64 1 70.744 -0.964 0.000
alphyn.canonica 132.246.11.231 2 u 17 64 1 7.973 -0.170 0.000
+vps5.ctyme.com 216.218.254.202 2 u 10 64 1 65.874 1.902 2.608
ntpq
は、ntpdのクエリツールです。 -p
フラグは、ntpdが接続しているNTPサーバー(またはpeers)に関する情報を要求します。 出力は若干異なりますが、デフォルトのUbuntuプールサーバーとその他のサーバーが表示されます。 ntpdが接続を確立するのに数分かかる場合があることに注意してください。
結論
この記事では、システム時刻の表示、タイムゾーンの変更、Ubuntuのデフォルトのtimesyncdの操作、およびntpdのインストール方法を示しました。 ここで説明したものよりも高度な時間管理のニーズがある場合は、the offical NTP documentationを参照し、世界のNTPインフラストラクチャの多くを提供するボランティアのグローバルグループであるthe NTP Pool Projectも確認してください。