Linuxハードウェア時刻同期
Linuxシステムを運用していると、ハードウェア時刻とOS時刻の同期が取れず、手動で同期させる必要がある場合があります。このような場合、まずtimedatectlコマンドで同期状態を確認する必要があります。
[root@centos7-1 ~]# timedatectl
Local time: Sat 2021-11-06 18:55:29 JST
Universal time: Sat 2021-11-06 09:55:29 UTC
RTC time: Sat 2021-11-06 11:55:51
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/atimedatectlコマンドを実行するとLocal time(現地時刻)とRTC(ハードウェア時刻)を確認できます。RTC in local TZ(ハードウェア時刻の現地タイムゾーン表示)が「no」になっているため、RTCはUTC時刻で表示されていることを知っておく必要があります。
[root@centos7-1 ~]# timedatectl
Local time: Sat 2021-11-06 18:55:29 JST
Universal time: Sat 2021-11-06 09:55:29 UTC
RTC time: Sat 2021-11-06 11:55:51
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a私のシステムのTime zoneはAsia/Tokyoに設定されているため、UTC時刻を基準に9時間を足すと現地時刻になります。そして、Universal TimeであるUTC時刻とRTC時刻が合っていないこともわかります。ハードウェア時刻が正確な時刻なので、OS時刻をハードウェア時刻に同期させていきます。
OS時刻をハードウェア時刻と同期させるには、次のコマンドを実行すればよいです。
[root@centos7-1 ~]# hwclock --hctosys再度timedatectlコマンドで同期状態を確認していきます。
[root@centos7-1 ~]# timedatectl
Local time: Sat 2021-11-06 21:16:18 JST
Universal time: Sat 2021-11-06 12:16:18 UTC
RTC time: Sat 2021-11-06 12:16:18
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a正常に同期されたことを確認しました。
これとは反対に、ハードウェア時刻をOS時刻と同期させたい場合は、次のコマンドを実行してください。
hwclock --systohcハードウェア時刻とOS時刻を同時に同じ時刻に変更したい場合は、次のようにtimedatectlコマンドで変更すると便利です。
timedatectl set-time "2021-11-06 21:20:00"実行してみましょう。
[root@centos7-1 ~]# timedatectl set-time "2021-11-06 21:20:00"; timedatectl
Local time: Sat 2021-11-06 21:20:00 JST
Universal time: Sat 2021-11-06 12:20:00 UTC
RTC time: Sat 2021-11-06 12:20:00
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/aOS時刻とハードウェア時刻が同時に変更されたことを確認しました。