시스템 시간 동기화를 통해 NTP 서버와 즉시 시간 동기화


16

NTP 서버에서 시간을 얻도록 systemd timesyncd를 구성했습니다.

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true

상태는 다음과 같습니다.

$ timedatectl status
...
Network time on: yes
NTP synchronized: no

출력에서 알 수 있듯이 시간은 아직 동기화되지 않았습니다. 다음 질문에 도움을 줄 수 있습니까?

  • 시간 동기화가 NTP와 동기화되는 데 얼마나 걸립니까? 어떤 간격으로 그렇게합니까, 어디서 확인하고 변경할 수 있습니까?
  • 긴급한 경우 : 시간을 수동으로 만 설정할 수 있습니까 아니면 NTP 서버와 즉시 동기화되도록 timesyncd를 강제 할 수 있습니까?

답변:


10

실제 NTP의 구현을 사용하려면 설치 및 구성 하나, 필요 chrony어쩌면 나 ntpd. 시간 성능 모니터링이 필요한 경우 그렇게하십시오. 나는 연대를 가정합니다.

초기 몇 패킷의 속도를 높이려면 구성 iburstpool또는 server라인에 추가하십시오 . 여전히 안정 되려면 몇 분이 걸릴 수 있습니다. 인내심을 가지십시오.

chronyc tracking현재 오프셋을 보여줍니다. 요구 사항이 무엇인지 이해하면 1 초의 정확도로 수십 밀리 초 오프셋을 쉽게 견딜 수 있습니다.

chronyc makestep현재 조정을 즉시 수행합니다. 일반적으로 필요하지 않습니다.


timesyncdSNTP 클라이언트는 시간을 설정할 수는 있지만 점진적으로 지속적으로 훈련하거나 품질에 따라 원격 NTP 서버를 필터링하지는 않습니다 . (또한 시간 하드웨어 나 PTP와 대화 할 수 없으며 NTP 프로토콜 만 가능합니다.) 반복되는 것보다 조금 낫습니다 ntpdate. 개인적으로 대부분의 서버에서 교체합니다.

timesyncd로 시간을 설정하는 유일한 방법은 수동 timedatectl set-time "2019-01-15 00:40:16"입니다. 시계를 훈련시키고 모니터 할 강력한 수단이 없습니다. 기본 NTP 통계 timedatectl timesync-status는 비교적 새로운 것이므로 Red Hat 7 또는 Ubuntu 18.04에서 옵션을 사용할 수 있다고 생각하지 않습니다.

systemd는 NTP가 Linux에게 시계 조정을 지시하는 데 사용 된 경우 "동기화"를 정의합니다. 특히 커널 규율 호출 인 경우 adjtimex ()가 초기 상태가 아닌 오류없이 반환되었습니다. 소스 코드 systemd / src / basic / time-util.c를 참조하십시오.


답변 주셔서 감사합니다, 존 실제로 systemd-timesyncd를 비활성화하고 chrony 만 사용할 수 있습니까? systemd에 NTP 옵션이있는 이유를 이해하지 못하고 실제로 시간을 동기화 할 수없는 경우 timeSYNCd라고합니다. "systemd는 NTP 커널 규율 호출 adjtimex ()가 오류없이 반환되고 초기 상태가 아닌 경우"syncronized "를 정의합니다. – 이것은 나에게 분명하지 않습니다.
manifestor

1
@chevallier systemd-timesyncd는 매우 간단하며 가장 일반적인 경우에 충분합니다. 예를 들어 실시간 클록이있는 서버는 24 시간 연중 무휴로 실행되고있을 것으로 예상됩니다. 귀하의 경우는 일반적인 경우가 아니므로 사용해서는 안됩니다. chrony는 네트워크 연결 중단을 처리하고 장기간 (예 : 랩톱) 종료되거나 RTC가 전혀없는 경우 (예 : 내장 장치) 훨씬 낫습니다.
Michael Hampton

1
timesyncd는 SNTP 클라이언트이므로 시간을 올바르게 징계하지 않고 설정합니다. 거친 정확도 요구 사항에 적합합니다. 시간 성능을 측정하거나 동기화 될 때까지 기다리려면 chrony 또는 ntpd와 같은 완전한 NTP를 사용하십시오.
John Mahowald

11

더 이상 패키지를 설치하지 않고 ... NTP를 끄고 수동으로 시간을 충분히 가깝게 설정 한 다음 NTP를 다시 켜십시오.

NTP 서비스 비활성화

$ timedatectl set-ntp false

시간을 수동으로 설정

그래, 슬프지만 작동하지만 아무것도 설치하고 작동시킬 필요가 없습니다. 벽시계, 휴대폰, 인터넷에서 대략적인 현지 시간을 확인하십시오. 잠시 후 ntp를 다시 설정하기 때문에 완벽 할 필요는 없습니다 ...

$ sudo timedatectl set-time "2019-06-22 13:41:00"

NTP 서비스 활성화

$ sudo timedatectl set-ntp true

기다림

john@mybox:~$ timedatectl
               Local time: Sat 2019-06-22 13:49:53 AEST
           Universal time: Sat 2019-06-22 03:49:53 UTC
                 RTC time: Sat 2019-06-22 03:49:54
                Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

"동기화"상태로 간주 될만큼 충분히 조정되면 "시스템 시계 동기화 : 아니오"가 "예"로 바뀝니다.

문제 해결

$ cat /etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org

$ timedatectl timesync-status
       Server: 13.210.208.89 (au.pool.ntp.org)
Poll interval: 8min 32s (min: 32s; max 34min 8s)
 Packet count: 0

$ grep systemd-timesyncd /var/log/syslog | tail
Jun 22 14:13:09 meebox systemd-timesyncd[8333]: Timed out waiting for reply from 103.214.220.220:123 (au.pool.ntp.org).

회사 방화벽으로 인해 ntp 패킷이 차단되었습니다.


다른 시간 동기화 서비스를 설치하는 것도 나의 첫 번째 아이디어 였지만 해결 방법 일뿐입니다. 나는 진짜 고침을 찾고 있었다. 그게 답입니다. 효과가있다. 감사합니다 :-)
Ingo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.