InfraPlatform

(꿀팁) 리눅스 시스템 시간 동기화 하기 (Chrony,NTP )

IT오이시이 2023. 11. 24. 06:57
728x90

(꿀팁) 리눅스 시스템 시간 동기화 하기 (Chrony,NTP )

#리눅스_시간동기화

  • NTP(Network Time Protocol)
  • Chrony
  • rdate -s
  • hwclock -w


시스템의 시간은 운영체제의 시간으로 보통 알고 있다. 시스템의 시간은 운영체제가 관리하는 S/W 시간과 메인보드가 관리하는 H/W시간으로 나누어 볼수 있습니다.
시스템을 재부팅하더라도 시간이 유지되는 것은 메인보드의 시간이 저장되어 있기 때문입니다. 또한 하드웨어의 시간과 S/W의 시간은 특정 시점 동기화가 된 이후 자체적인 시간 타이머를 통해서 관리가 됩니다.

종종 시스템의 시간을 표준시로 설정을 하고 나면 조금씩 차이가 나는 경우가 있을수 있습니다. 그 차이를 눈으로 확인하기는 어렵지만, 하루이상 지나면 조금씩 차이가 발생 하는 경우가 있습니다.
그 원인은 찾아본 사람만 알수 있는 부분이기 때문에 흔하게 경험해본 사람은 적을 것 같습니다.

시스템의 시간 오차 발생 원인

고수만 아는 시스템 시간의 오차 내용은 이런 내용입니다.

시스템의 시간은 메인보드의 Clock을 발생하는 Oscillator (오실레이터)와 연관이 있습니다. 모든 H/W 부품에서 이런 클럭 주파수를 생성하는 제품이 똑같지 않기 때문에 H/W의 오차를 주기적으로 갱신을 해주어야 합니다.

흔히 NTP, rdate 명령으로 시간을 동기화 해 놓으면 조금씩 시스템의 시간 오차가 생긴다는 것입니다.

*그리고 최근 기술이 좋아서 발생가능성은 희박 하지만 하드웨어 타임클럭 Oscillator가 불량이면 시스템의 시간에 오차가 자주 발생한다고 생각하시면 될 것 같습니다.

 
자주 사용되는 표준시 타임서버들 은 알아 두세요.

한국의 표준시 NTP 서버

  • kr.pool.ntp.org
  • time.bora.net
  • time.nuri.net


세계 NTP 서버 목록 - 아시아

https://www.ntppool.org/zone/asia

# /etc/ntp.conf 에 아시아 NTP 서버 풀을 등록하면 된다.
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

 
 

리눅스에서 시간 설정 하는 방법과 유의 사항

1. Redhat Linux 7,8의 chrony 설정
2. NTP로 시간 설정
3. rdate로 시간 설정
 

시간 오차가 많이 생긴 경우 수동 시간 동기화 (중요)


hwclock 명령은  RTC(실시간 시계)라고도 하는 하드웨어 시계(메인보드 시간)에 액세스하기 위한 유틸리티입니다.

하드웨어 시계는 사용하는 운영 체제와 독립적이며 메인보드에 장착된 배터리를 이용하여  시스템이 종료되고 전원이 차단된 경우에도 작동합니다.
hwclock 유틸리티 명령은 하드웨어 시계에서 시간을 표시하는 데 사용됩니다.

hwclock 또한 하드웨어 클록의 체계적인 드리프트를 보상하기 위한 기능이 포함되어 있습니다.

/sbin/hwclock --hctosys 명령은 하드웨어 클럭 시간을 시스템 시간으로 동기화하여 시간을 일치시킵니다.

/sbin/hwclock --systohc 는 시스템 시간으로 하드웨어 클럭의 시간에 동기화하여 변경합니다. (NTP 동기화후 실행 필요)

또는 /sbin/hwclock --w
  ( set the hardware clock to the current timezone )

 

* hwclock명령은 시스템을 종료하거나 재부팅할 때마다 자동으로 실행되었지만 Fedora 23에서는 그렇지 않습니다.
시스템 시계가 NTP(Network Time Protocol) 또는 PTP(Precision Time Protocol)에 의해 동기화되면 커널이 자동으로 동기화합니다. 11분마다 하드웨어 시계를 시스템 시계로 변경합니다.


표준시를 관리하는 리눅스 시스템 데몬 서비스

1. chronyd
# chronyc -a makestep
# hwclock -w (현재 설정된 시간으로 하드웨어 시간 설정)

2. ntpd
# systemctl stop ntpd (ntpd가 실행 중일 경우 ntpdate가 실행되지 않습니다.)
# ntpdate [NTP server] (한번 수행으로 차이가 크게 줄어들지 않으므로, 여러 번 수행하시기 바랍니다.)
# hwclock -w (현재 설정된 시간으로 하드웨어 시간 설정)
# systemctl start ntpd

 


1. Redhat Linux 7,8의 chrony 설정

리눅스 7이후 NTP보다 개선된 chrony를 사용합니다.

chronyd설정 



1) chrony 서비스 작동 상태 확인

# chronyd 설치
[root@ ~]# yum remove ntp # ntp package가 설치 되어 있다면 삭제
[root@ ~]# yum install chrony

# 서비스 상태 확인
[root@ ~]# systemctl status chronyd.service
# 자동 서비스 시작 설정 등록
[root@ ~]# systemctl enable chronyd.service
# 서비스 재기동
[root@ ~]# systemctl start chronyd.service


2)chrony 설정

# vi /etc/chronyconf

# 한국 서버 주소
server time.bora.net
server time.kornet.net
server kr.pool.ntp.org

# 아시아 서버 주소
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst

 

# iburst는 표준시와 시스템 시간의 오차가 클경우 조금씩 오차를 줄이므로 시간의 오차가 10분 이상 발생 될수 있다.
# 시스템 시간을 즉시 수정해야 하는 상황에서는 iburst 를 추가 해야 합니다.


3)chrony 시간 작동 확인

# chronyc sources

 

2. NTP로 시간 설정


1) NTP 서버 설치

yum install ntp


2) NTP 설정

vi /etc/ntp.conf

# 한국 서버 주소
server time.bora.net
server time.kornet.net
server kr.pool.ntp.org

# 아시아 서버 주소
server 0.asia.pool.ntp.org  iburst
server 1.asia.pool.ntp.org  iburst
server 2.asia.pool.ntp.org  iburst
server 3.asia.pool.ntp.org  iburst
# 표준시와 시스템 시간의 오차가 클경우 조금씩 오차를 줄이게 됩니다. 이때 시간의 오차가 10분 이상 발생 될수 있다.
# 시스템 시간을 즉시 수정해야 하는 상황에서는 iburst 를 추가 해야 합니다.


3) NTP 서버 실행

ntpd 시스템 데몬 실행은 리눅스 버전에 따라 시작 하면 됩니다.
[root@ ~]# /etc/init.d/ntpd start
또는
[root@ ~]# systemctl enable ntpd.service
[root@ ~]# systemctl start ntpd.service


4) NTP 시간 작동 확인

# ntpq -p

(1) 비정상 상태의 경우

[root@ ~]# ntpstat
unsynchronised
polling server every 64 s
[root@ ~]# ntptime | grep returns
ntp_gettime() returns code 5 (ERROR)
ntp_adjtime() returns code 5 (ERROR)

(2) 정상 상태 확인의 경우

[root@ ~]#ntpstat
synchronised to NTP server (203.158.177.10) at stratum 3
time correct to within 98 ms

[root@ ~]# ntptime | grep returns
ntp_gettime() returns code 0 (OK)
ntp_adjtime() returns code 0 (OK)



3. rdate로 시간 설정

rdate를 이용한 표준시 설정은 주로 crontab에 설정하여 관리하는 수동으로 사용시 용이한 방법입니다.

오래된 방법이지만 주로 하루에 한 두번 정도 시스템을 동기화 하는데 용이게 많이 써온 방법입니다.
외부로 NTP를 동기화 하거나 시간 설정을 명확하게 관리하고자 할때 시스템 시간을 관리하는 방법으로 유용합니다.

1) 표준시 확인

rdate -p time.bora.net


2) 표준시 설정
아래 내용을 crontab에 설정하여 매시간 마다 작동되도록 설정하면 끝...

# /etc/cron.sync
rdate -s time.bora.net
/sbin/hwclock --systohc

 

MAILTO=""
10 * * * * rdate -s time.bora.net; hwclock --systohc
or
10 * * * * sh /etc/cron.sync

 


Sytem Timer 와 Oscillator 에 대한 정리


/sbin/hwclock --systohc는 오실레이터의 오차를 보정하기 위해 타이머 클럭을 보정한다고 합니다.

시스템의 메인보드에는 시간 클럭을 발생하는 시스템 타이머 모듈이 있습니다.

이런 타이머 클럭은 Oscillator를 통해 발생하는 전기적 주파수를 이용하는 것이라는 점에서 오차를 생각 할 수 있다.

 

Oscillator란 ?

Oscillator(오실레이터)는 주기적/반복적인 신호를 생성하는 전자 회로 이다. 이러한 신호를 이용하여 디바이스의 명령, 디지털 로직, 통신을 위한 클럭 주파수로 실행하게 됩니다.
RC Oscillator, Crystal Oscillator, Ceramic Oscillator 등으로 나누어집니다.

Oscillator의 종류


RC Oscillator 는 저항, 캐퍼시터, 앰프 등에서 사용하는 것으로 가격이 저렴하고, 온도에 따라 주파수 변동이 발생하여 정확도는 보장하지 못합니다.

Crystal Oscillator는 클럭을 생성하기 위한 기계적인 진동을 이용하여 매우 정밀하고 온도변화에도 안정적인 동작을 합니다.
주로 석영, 수정을 이용하므로 가격이 비쌉니다. ( 컴퓨터 메인보드에서 볼수 있습니다.)

Ceramic Oscillator는 크리스탈에 비해 값이 싸고 제조가 쉽습니다.

<메인보드용 크리스탈 발진기>

 
 


1. [꿀팁] Centos 8에서 표준시간 설정하는 방법
    :  https://couplewith.tistory.com/180
2. (꿀팁) 리눅스 시스템 시간 동기화 하기
   : https://couplewith.tistory.com/320
    #리눅스_시간동기화

728x90
반응형