Ubuntu16.04で時刻同期を設定する方法
序章
正確な計時は、最新のソフトウェア展開の重要なコンポーネントになっています。 ログが正しい順序で記録されていることを確認している場合でも、データベースの更新が正しく適用されている場合でも、非同期の時間は、エラー、データ破損、およびその他のデバッグが難しい問題を引き起こす可能性があります。
Ubuntu 16.04には時刻同期が組み込まれており、systemdのtimesyncdサービスを使用してデフォルトでアクティブ化されます。 この記事では、いくつかの基本的な時間関連コマンドを確認し、timesyncdがアクティブであることを確認し、代替ネットワークタイムサービスをインストールする方法を学習します。
前提条件
このチュートリアルを開始する前に、このUbuntu 16.04サーバーセットアップチュートリアルで説明されているように、root以外のsudo対応ユーザーがいるUbuntu16.04サーバーが必要です。
基本的な時間コマンドのナビゲート
サーバーの時刻を確認するための最も基本的なコマンドは、date
です。 すべてのユーザーがこのコマンドを入力して、日付と時刻を出力できます。
- date
OutputWed Apr 26 17:44:38 UTC 2017
上記の出力で強調表示されているように、ほとんどの場合、サーバーはデフォルトで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 Apr 26 13:55:45 EDT 2017
タイムゾーンの省略形は、新しく選択した値を反映している必要があります。
時計を確認してタイムゾーンを設定する方法がわかったので、時刻が正しく同期されていることを確認しましょう。
timedatectlを使用したtimesyncdの制御
最近まで、ほとんどのネットワーク時間同期はネットワークタイムプロトコルデーモンまたはntpdによって処理されていました。 このサーバーは、他のNTPサーバーのプールに接続して、一定の正確な時刻更新を提供します。
Ubuntuのデフォルトのインストールでは、ntpdの代わりにtimesyncdが使用されるようになりました。 timesyncdは同じタイムサーバーに接続し、ほぼ同じように機能しますが、より軽量で、systemdおよびUbuntuの低レベルの動作とより統合されています。
引数なしでtimedatectl
を実行することにより、timesyncdのステータスを照会できます。 この場合、sudo
を使用する必要はありません。
- timedatectl
OutputLocal time: Wed 2017-04-26 17:20:07 UTC
Universal time: Wed 2017-04-26 17:20:07 UTC
RTC time: Wed 2017-04-26 17:20:07
Time zone: Etc/UTC (UTC, +0000)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
これにより、現地時間、協定世界時(UTCタイムゾーンから切り替えなかった場合は現地時間と同じになる場合があります)、および一部のネットワーク時間ステータス情報が出力されます。 Network time on: yes
は、timesyncdが有効になっていることを意味し、NTP synchronized: yes
は、時刻が正常に同期されたことを示します。
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
出力でNetwork time on: no
を探します。 これは、timesyncd
が停止したことを意味します。 これで、ntp
パッケージをapt-get
とともにインストールできます。
- sudo apt-get install ntp
ntpdは、インストール後に自動的に開始されます。 ntpdにステータス情報を照会して、すべてが機能していることを確認できます。
- sudo ntpq -p
Outputremote 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
-makaki.miuku.ne 210.23.25.77 2 u 45 64 3 248.007 -0.489 1.137
-69.10.161.7 144.111.222.81 3 u 43 64 3 90.551 4.316 0.550
+static-ip-85-25 130.149.17.21 2 u 42 64 3 80.044 -2.829 0.900
+zepto.mcl.gg 192.53.103.108 2 u 40 64 3 83.331 -0.385 0.391
ntpq
は、ntpdのクエリツールです。 -p
フラグは、ntpdが接続しているNTPサーバー(または p eers)に関する情報を要求します。 出力は少し異なりますが、デフォルトのUbuntuプールサーバーと他のいくつかのサーバーをリストする必要があります。 ntpdが接続を確立するのに数分かかる場合があることに注意してください。
結論
この記事では、システム時刻の表示、タイムゾーンの変更、Ubuntuのデフォルトのtimesyncdの操作、およびntpdのインストールの方法を示しました。 ここで説明したものよりも高度なタイムキーピングのニーズがある場合は、公式のNTPドキュメントを参照し、NTPプールプロジェクトのグローバルグループも参照してください。世界のNTPインフラストラクチャの多くを提供するボランティア。