Debian10で時刻同期を設定する方法
序章
正確な計時は、最新のソフトウェア展開の重要なコンポーネントになっています。 ログが正しい順序で記録されていることを確認している場合でも、データベースの更新が正しく適用されている場合でも、非同期の時間は、エラー、データの破損、およびその他のデバッグが難しい問題を引き起こす可能性があります。
Debian 10には時刻同期が組み込まれており、ntp
パッケージによって提供される標準のntpdタイムサーバーを使用してデフォルトでアクティブ化されます。 この記事では、いくつかの基本的な時間関連コマンドを確認し、ntpdがアクティブでピアに接続されていることを確認し、代替のsystemd-timesyncdネットワークタイムサービスをアクティブにする方法を学習します。
前提条件
このチュートリアルを開始する前に、このDebian 10サーバーセットアップチュートリアルで説明されているように、ルート以外のsudo
対応ユーザーがいるDebian10サーバーが必要です。
ステップ1—基本的な時間コマンドのナビゲート
サーバーの時刻を確認するための最も基本的なコマンドは、date
です。 すべてのユーザーがこのコマンドを入力して、日付と時刻を出力できます。
- date
OutputWed 31 Jul 2019 06:03:19 PM UTC
上記の出力で強調表示されているように、ほとんどの場合、サーバーはデフォルトでUTCタイムゾーンになります。 UTCは協定世界時、経度0度の時間です。 ユニバーサルタイムを一貫して使用すると、インフラストラクチャが複数のタイムゾーンにまたがる場合の混乱が軽減されます。
要件が異なり、タイムゾーンを変更する必要がある場合は、timedatectl
コマンドを使用して変更できます。
まず、利用可能なタイムゾーンを一覧表示します。
- timedatectl list-timezones
タイムゾーンのリストが画面に印刷されます。 SPACE
を押すとページダウンし、b
を押すとページアップできます。 正しいタイムゾーンを見つけたら、それをメモし、q
と入力してリストを終了します。
次に、タイムゾーンをtimedatectl set-timezone
で設定します。下で強調表示されている部分を、リストで見つけたタイムゾーンに置き換えてください。 この変更を行うには、sudo
とtimedatectl
を使用する必要があります。
- sudo timedatectl set-timezone America/New_York
date
を再度実行すると、変更を確認できます。
- date
OutputWed 31 Jul 2019 02:08:43 PM EDT
タイムゾーンの省略形は、新しく選択した値を反映している必要があります。
時計を確認してタイムゾーンを設定する方法がわかったので、時刻が正しく同期されていることを確認しましょう。
ステップ2—ntpdのステータスを確認する
デフォルトでは、Debian 10は標準のntpdサーバーを実行して、システム時刻を外部タイムサーバーのプールと同期させます。 systemctl
コマンドで実行されていることを確認できます。
- sudo systemctl status ntp
Output● ntp.service - Network Time Service
Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-07-31 13:57:08 EDT; 17min ago
Docs: man:ntpd(8)
Main PID: 429 (ntpd)
Tasks: 2 (limit: 1168)
Memory: 2.1M
CGroup: /system.slice/ntp.service
└─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112
. . .
active (running)
ステータスは、ntpdが正しく起動したことを示します。 ntpdのステータスに関する詳細情報を取得するには、ntpq
コマンドを使用できます。
- ntpq -p
Output remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
+208.67.72.50 152.2.133.55 2 u 12 64 377 39.381 1.696 0.674
+198.46.223.227 204.9.54.119 2 u 6 64 377 22.671 3.536 1.818
-zinc.frizzen.ne 108.61.56.35 3 u 43 64 377 12.012 1.268 2.553
-pyramid.latt.ne 204.123.2.72 2 u 11 64 377 69.922 2.858 0.604
+nu.binary.net 128.252.19.1 2 u 10 64 377 35.362 3.148 0.587
#107.155.79.108 129.7.1.66 2 u 65 64 377 42.380 1.638 1.014
+t1.time.bf1.yah 98.139.133.62 2 u 6 64 377 11.233 3.305 1.118
*sombrero.spider 129.6.15.30 2 u 47 64 377 1.304 2.941 0.889
+hydrogen.consta 209.51.161.238 2 u 45 64 377 1.830 2.280 1.026
-4.53.160.75 142.66.101.13 2 u 42 64 377 29.077 2.997 0.789
#horp-bsd01.horp 146.186.222.14 2 u 39 64 377 16.165 4.189 0.717
-ntpool1.603.new 204.9.54.119 2 u 46 64 377 27.914 3.717 0.939
ntpq
は、ntpdのクエリツールです。 -p
フラグは、ntpdが接続されているNTPサーバー(または p eers)に関する情報を要求します。 出力は少し異なりますが、デフォルトのDebianプールサーバーと他のいくつかのサーバーをリストする必要があります。 ntpdが接続を確立するのに数分かかる場合があることに注意してください。
ステップ3—systemd-timesyncdに切り替える
systemdの組み込みtimesyncdコンポーネントを使用してntpdを置き換えることができます。 timesyncdは、systemdとより統合されたntpdの軽量な代替手段です。 ただし、タイムサーバーとしての実行はサポートされておらず、システム時刻の同期を維持するために使用する手法は少し洗練されていないことに注意してください。 複雑なリアルタイム分散システムを実行している場合は、ntpdを使い続けることをお勧めします。
timesyncdを使用するには、最初にntpdをアンインストールする必要があります。
- sudo apt purge ntp
次に、timesyncdサービスを起動します。
- sudo systemctl start systemd-timesyncd
最後に、サービスのステータスをチェックして、実行されていることを確認します。
- sudo systemctl status systemd-timesyncd
Output● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Wed 2019-07-31 14:21:37 EDT; 6s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 1681 (systemd-timesyn)
Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."
Tasks: 2 (limit: 1168)
Memory: 1.3M
CGroup: /system.slice/systemd-timesyncd.service
└─1681 /lib/systemd/systemd-timesyncd
timedatectl
を使用して、systemdの現在の時間の理解を印刷できます。
- timedatectl
Output Local time: Wed 2019-07-31 14:22:15 EDT
Universal time: Wed 2019-07-31 18:22:15 UTC
RTC time: n/a
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
これにより、現地時間、協定世界時(UTCタイムゾーンから切り替えなかった場合は現地時間と同じになる場合があります)、および一部のネットワーク時間ステータス情報が出力されます。 System clock synchronized: yes
は時刻が正常に同期されたことを意味し、NTP service: active
はtimesyncdが有効で実行されていることを意味します。
結論
この記事では、システム時刻の表示、タイムゾーンの変更、ntpdの操作、systemdのtimesyncdサービスへの切り替えの方法を説明しました。 ここで説明したものよりも高度なタイムキーピングのニーズがある場合は、公式のNTPドキュメントを参照し、グローバルグループであるNTPプールプロジェクトも参照してください。世界のNTPインフラストラクチャの多くを提供するボランティアの数。