timedatectl と chronyd を使用した正確なシステム時刻の維持
このステップでは、timedatectl コマンドを使用して正確なシステム時間を維持する方法を学び、chronyd サービスの役割を理解します。正確な時間管理は、ロギング、セキュリティ、および多くのネットワークサービスにとって不可欠です。
1. timedatectl を使用したシステム時間とタイムゾーンの管理:
timedatectl コマンドは、ローカル時間、協定世界時(UTC)、RTC 時間、タイムゾーン、NTP 同期ステータスなど、現在の時間関連のシステム設定の概要を提供します。
システムの現在の時間設定を確認してみましょう。
timedatectl
次のような出力が表示されるはずです(正確な日時には、現在のシステム時間が反映されます)。
Local time: Sun 2025-06-15 21:46:11 EDT
Universal time: Mon 2025-06-16 01:46:11 UTC
RTC time: Mon 2025-06-16 01:46:10
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
list-timezones オプションを使用して、利用可能なすべてのタイムゾーンを一覧表示できます。
timedatectl list-timezones | less
q を押して less を終了します。タイムゾーンは、Internet Assigned Numbers Authority(IANA)タイムゾーンデータベースに基づいて、通常は大陸/海洋、次に最大の都市で名前が付けられます。
システムのタイムゾーンを変更するには、set-timezone オプションを使用します。たとえば、タイムゾーンを America/Phoenix に変更してみましょう。これには sudo 権限が必要です。
sudo timedatectl set-timezone America/Phoenix
次に、変更を確認します。
timedatectl
タイムゾーンが America/Phoenix に更新されているはずです。
set-time オプションを使用して、システムの現在の時間を手動で設定することもできます。形式は「YYYY-MM-DD hh:mm:ss」ですが、日付または時間を省略できます。時間を 09:00:00(現在の日付の場合)に設定してみましょう。
sudo timedatectl set-time 09:00:00
時間の変更を確認します。
timedatectl
最後に、set-ntp オプションは、自動時間調整のために NTP 同期を有効または無効にします。引数として true または false を受け取ります。しばらくの間、NTP 同期を無効にしましょう(後で再度有効にします)。
sudo timedatectl set-ntp false
NTP サービスのステータスを確認します。
timedatectl
NTP service: inactive と表示されるはずです。
2. chronyd サービスの理解と設定:
chronyd サービスは、Network Time Protocol(NTP)サーバーと同期することにより、システムのリアルタイムクロック(RTC)を正確に保つデーモンです。これは、Red Hat Enterprise Linux のデフォルトの NTP クライアントです。
chronyd の設定ファイルは /etc/chrony.conf です。デフォルトでは、パブリック NTP サーバーを使用します。実際のシナリオでは、内部 NTP サーバーを使用するように設定できます。
デフォルトの chrony.conf ファイルを表示してみましょう。
cat /etc/chrony.conf
NTP ソースを定義する server または pool で始まる行が表示されます。iburst オプションは、より正確な初期同期のために 4 つの測定を迅速に行うため、推奨されます。
NTP タイムソースの stratum は、その品質を示します。stratum 0 はリファレンスクロック、stratum 1 はリファレンスクロックに直接接続され、stratum 2 は stratum 1 サーバーから同期します。
このコンテナ環境では systemctl を使用できないため、chronyd を直接再起動して設定変更を適用することはできません。ただし、ファイルを変更することで、設定変更をシミュレートできます。
timedatectl を使用して、NTP 同期を再度有効にしましょう。
sudo timedatectl set-ntp true
NTP サービスのステータスをもう一度確認します。
timedatectl
NTP service: active と表示されるはずです。
chronyc コマンドは、chronyd サービスへのクライアントとして機能します。これを使用して、同期ステータスを監視できます。chronyc sources コマンドは、現在のタイムソースとその同期ステータスを表示します。
chronyc sources -v
出力には、NTP ソースに関する詳細が表示されます。S(Source state)フィールドの星印 * は、chronyd が現在同期しているソースを示します。
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 100.100.61.88 1 5 377 16 +1824us[+2180us] +/- 85ms
...output omitted...
この出力は、システムが NTP サーバーと積極的に時間を同期していることを確認します。