前書き

正確な計時は、最新のソフトウェア展開の重要なコンポーネントになっています。 ログが正しい順序で記録されているか、データベースの更新が正しく適用されているかどうかにかかわらず、非同期時間はエラー、データ破損、その他のデバッグが難しい問題を引き起こす可能性があります。

Ubuntu 18.04には時刻同期が組み込まれており、systemdのtimesyncdサービスを使用してデフォルトで有効になっています。 この記事では、いくつかの基本的な時間関連コマンドを調べ、timesyncdがアクティブであることを確認し、代替ネットワークタイムサービスをインストールする方法を学習します。

前提条件

このチュートリアルを開始する前に、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu- 18-04 [このUbuntu 18.04サーバーセットアップチュートリアル]。

基本時間コマンドのナビゲート

サーバーの時間を調べるための最も基本的なコマンドは、「+ date +」です。 すべてのユーザーがこのコマンドを入力して、日付と時刻を出力できます。

date
OutputTue Jul 10 14:48:52  2018

ほとんどの場合、上記の出力で強調表示されているように、サーバーはデフォルトで_UTC_タイムゾーンになります。 UTCは協定世界時、経度0度の時刻です。 一貫して世界時を使用すると、インフラストラクチャが複数のタイムゾーンにまたがる場合の混乱が軽減されます。

異なる要件があり、タイムゾーンを変更する必要がある場合は、 `+ timedatectl`コマンドを使用して変更できます。

まず、利用可能なタイムゾーンを一覧表示します。

timedatectl list-timezones

タイムゾーンのリストが画面に印刷されます。 「+ SPACE」キーを押してページダウンし、「+ b 」キーを押してページアップできます。 正しいタイムゾーンを見つけたら、それを書き留めてから「 q +」と入力してリストを終了します。

次に、「+ timedatectl set-timezone 」でタイムゾーンを設定し、下で強調表示されている部分をリストで見つけたタイムゾーンに置き換えてください。 この変更を行うには、「 timedatectl 」とともに「 sudo +」を使用する必要があります。

sudo timedatectl set-timezone

変更を確認するには、 `+ date +`を再度実行します。

date
OutputTue Jul 10 10:50:53  2018

タイムゾーンの略語は、新しく選択した値を反映する必要があります。

時計の確認方法とタイムゾーンの設定方法がわかったので、時刻が正しく同期されていることを確認しましょう。

timedatectlによるtimesyncdの制御

最近まで、ほとんどのネットワーク時刻同期は、_Network Time Protocolデーモン_または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)


                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サーバー(または p eers)に関する情報を要求します。 出力は若干異なりますが、デフォルトのUbuntuプールサーバーとその他のサーバーが表示されます。 ntpdが接続を確立するのに数分かかる場合があることに注意してください。

結論

この記事では、システム時刻の表示、タイムゾーンの変更、Ubuntuのデフォルトのtimesyncdの操作、およびntpdのインストール方法を示しました。 ここで説明したよりも高度な計時ニーズがある場合は、https://www.eecis.udel.edu/%7Emills/ntp/html/index.html [公式NTPドキュメント]を参照し、 NTP Pool Projectをご覧ください。世界のNTPインフラストラクチャの多くを提供しているボランティアのグローバルグループです。