리눅스 하드웨어 시간 동기화

4 분 소요

리눅스 시스템을 운용하다 보면 하드웨어 시간과 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/a

timedatectl 명령어를 실행하면 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시간을 더하면 현지시간이 됩니다. 그리고 Univeral Time인 UTC 시간과 RTC 시간이 맞지 않는 것도 알 수 있습니다. 하드웨어 시간이 정확한 시간이므로 OS 시간을 하드웨어 시간으로 동기화 하도록 하겠습니다.

OS 시간을 하드웨어 시간과 동기화하기 위해서는 다음 명령어를 실행하면 됩니다.

[root@centos7-1 ~]# hwclock --hctosys

다시 datetimectl 명령어로 동기화 상태를 확인해 보겠습니다.

[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 시간을 동시에 같은 시간으로 변경하려면 다음과 같이 datetimectl 명령어로 변경을 하시면 편합니다.

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/a

OS 시간과 하드웨어 시간이 동시에 변경된 것을 확인하였습니다.