chrony vs. systemd-timesyncd – NTP 클라이언트와의 차이점과 사용 사례는 무엇입니까?


18

어떻게 든 오래된 질문 "ntpd vs. systemd-timesyncd-안정적인 NTP 동기화를 얻는 방법?" NTP 클라이언트의 관점에서 chrony와 systemd-timesyncd의 차이점에 대해 묻고 싶습니다 .

systemd-timesyncd는 다소 최소한의 ntp 클라이언트 구현이지만 chrony는 NTP 클라이언트를 포함하는 완전한 NTP 데몬 솔루션입니다.

우분투 바이오닉 비버 릴리즈 노트 는 다음과 같이 말합니다 :

간단한 시간 동기화를 위해 기본 시스템에는 이미 systemd-timesyncd가 제공됩니다. Chrony는 시간 서버 역할을하거나 광고가보다 정확하고 효율적인 동기화를 원하는 경우에만 필요합니다.

나는 사전 설치된 최소한의 도구를 사용하여 작업을 수행한다는 아이디어를 좋아하며 systemd-timesyncd가 내 사용 사례에 대해 작업을 수행 할 것이라고 확신하지만 여전히 궁금합니다.

  • 정확도 측면에서이 둘의 실제 차이점은 무엇입니까?
  • 효율성의 차이는 무엇입니까?
  • NTP 클라이언트로 사용하기위한 "단순하지 않은"시간 동기화 요구 사항은 무엇입니까?

답변:


13

systemd NEWS 파일에서 systemd-timesyncd발표는 Chrony 및 이와 유사한 도구와 비교하여이 도구의 차이점을 잘 설명합니다. (강조 광산) :

네트워크에서 시스템 시계를 동기화하기 위해 새로운 "systemd-timesyncd" 데몬이 추가되었습니다. SNTP 클라이언트를 구현합니다 . chrony 또는 NTP 참조 서버 와 같은 NTP 구현과 달리 이것은 클라이언트 측만 구현하며 하나의 원격 서버에서 시간을 쿼리하고 로컬 클럭을 동기화하는 데에만 집중 하여 완전한 NTP 복잡성을 방해하지 않습니다 . 네트워크 클라이언트에 NTP를 제공하거나 로컬 하드웨어 시계에 연결하려는 경우가 아니면이 간단한 NTP 클라이언트는 대부분의 설치에 적합해야합니다. [...]

이 설정은 서버 집합에있는 대부분의 호스트에 대한 일반적인 사용 사례입니다. 일반적으로 로컬 NTP 서버에서 동기화되며,이 서버는 하드웨어를 포함하여 여러 소스에서 동기화됩니다. systemd-timesyncd는 일반적인 사용 사례에 사용하기 쉬운 솔루션을 제공하려고합니다.


특정 질문을 해결하려고합니다.

정확도 측면에서이 둘의 실제 차이점은 무엇입니까?

여러 소스에서 동기화 데이터를 가져 와서 정확도를 높일 수 있다고 생각합니다. 특히 systemd-timesyncd의 지원되는 사용 사례가 아닙니다. 그러나 신뢰할 수있는 내부 네트워크에 연결된 중앙 NTP 서버에서 동기화 데이터를 얻는 데 사용하는 경우 여러 소스를 사용하는 것이 실제로 그다지 적합하지 않으며 단일 소스에서 좋은 정확도를 얻습니다.

로컬 네트워크와 동일한 데이터 센터에있는 신뢰할 수있는 서버에서 서버를 동기화하는 경우 NTP와 SNTP의 정확도 차이는 거의 없습니다. NTP는 RTT를 고려하여 시간 측정을 수행 할 수 있지만 RTT가 매우 작은 경우에는 그다지 도움이되지 않습니다. 즉, 빠른 로컬 네트워크와 가까운 시스템의 경우입니다. 사용중인 소스를 신뢰할 수있는 경우 여러 소스가 필요하지 않습니다.

효율성의 차이는 무엇입니까?

어떤 소스가 다른 소스보다 더 나은지 결정하지 않고 여러 소스의 정보를 결합 할 수 있으므로 단일 소스에서 동기화를 얻는 것이 여러 소스에서 얻는 것보다 훨씬 간단합니다. 알고리즘은 훨씬 단순하며 간단한 경우 CPU로드가 덜 필요합니다.

NTP 클라이언트로 사용하기위한 "단순하지 않은"시간 동기화 요구 사항은 무엇입니까?

위의 인용문에서 다루었지만, 어떤 경우에는 systemd-timesyncd가 다루지 않는 Chrony의 유스 케이스입니다.

  • NTP 서버 실행 (다른 호스트가이 호스트를 동기화를위한 소스로 사용할 수 있도록)
  • 여러 소스에서 NTP 동기화 정보 얻기 (인터넷의 공용 서버에서 해당 정보를받는 호스트에게 중요) 과
  • 위성으로부터 정확한 시간 정보를 얻을 수있는 GPS 장치와 같은 특수 하드웨어를 포함하는 로컬 클록으로부터 동기화 정보를 얻는 것.

이러한 사용 사례에는 Chrony 또는 ntpd 또는 이와 유사한 것이 필요합니다.


1
정교하게 답변 해 주셔서 감사합니다. 특히 내 질문에 답해 주셔서 감사합니다. 이를 자세히 설명하기 위해 : – – 1. 정확도 델타의 차수는 얼마입니까? 이것을 아는 것은 의사 결정에 확실히 몇 가지 물질을 추가 할 것입니다. 우리는 10 ^ -9 또는 10 ^ -1 초에 대해 이야기하고 있습니까? – – 2. 효율성에 대한 당신의 대답은 저에게 더 호기심을 갖게했습니다.
wedi

3
@wedi : timesyncd의 정확도는 주로 서버와 네트워크에 따라 다릅니다. 서버가 하나만 있으면 서버가 가짜 데이터를 반환하는지 알 수 없으므로 완전히 신뢰하면됩니다. (이것의 최대 오류는 제한이 없습니다). 달성 할 수있는 최대 정확도는 사용자와 서버 간의 네트워크 지터에 따라 결정됩니다 (몇 밀리 초 이상일 수 있음).
TooTea

1
감사합니다, @TooTea! 확인. 내가 참조. 따라서 하나 이상의 소스를 사용하면 정확도가 높아지고 하나의 소스로 수행되는 특별한 마술은 무시할 수 있습니다. 내 이해 : – – 1. GCE 인스턴스에서 단일 시간 서버 metadata.google.internal 사용 => 측정 할 수있는 정확도 차이는 없습니다 (시간 측정 등 제외) – – 2. VM에서 평판이 좋은 3 개의 시간 서버 사용 어떤 정착 된 호스팅 회사에서 => 당신은 차이가 있지만 "많은"것은 아닙니다 (이것이 무엇이든간에) – – 3. 일부 ISP를 통해 연결된 raspi에서 pool.ntp.org를 사용하는 것 => 당신은 larry가 얻을 수있는만큼 행복합니다.
wedi

나는 세 @wedi에 모두 올바른 말을하고 싶습니다. 특히 (1) 시스템과 동일한 "로컬 네트워크"에서 본질적으로 동일한 데이터 센터 (매우 낮은 rtt 및 매우 낮은 지터)에서 시간 서버를 사용하는 경우 정확도와 관련하여 NTP 및 시간 측정 vs SNTP의 이점, 매우 낮을 것입니다. 따라서 이러한 사용 사례에서 NTP (SNTP가 아님)를 실행할 이유가 거의 없습니다!
filbranden

@wedi 로컬 네트워크에서 신뢰할 수있는 서버를 사용하여 명시 적으로 언급하도록 답변을 업데이트했습니다.
filbranden

14

다른 답변의 상태가 올 바르면 chronyNTP 및 systemd-timesyncdSNTP를 구현 합니다.

시간 서비스 클라이언트의 관점에서 :

SNTP는 구현하기가 훨씬 간단한 프로토콜입니다.
NTP는 시간에 따라 단계별 증분 / 수정을 허용합니다. NTP의 주요 장점 중 하나는보다 정확한 시간을 얻기 위해 응답의 RTT도 고려한다는 것입니다.

에서 https://www.meinbergglobal.com/english/faq/faq_37.htm

완전한 기능을 갖춘 NTP 서버 또는 클라이언트는 매우 높은 수준의 정확도에 도달하고 다른 수학적 및 통계적 방법과 부드러운 클럭 속도 조정을 사용하여 가능한 한 급격한 시간 단계를 피하지만 SNTP는 간단한 응용 프로그램에만 권장됩니다. 정확성과 신뢰성은 그다지 요구되지 않습니다. 드리프트 값을 무시하고 시스템 클럭 조정 방법을 단순화하는 방법 (종종 간단한 시간 단계)을 사용하여 SNTP는 전체 NTP 구현과 비교할 때 품질이 낮은 시간 동기화 만 달성합니다.

SNTP는 훨씬 간단한 접근 방식을 채택합니다. NTP 알고리즘의 많은 복잡성이 제거되었습니다. 많은 SNTP 클라이언트가 시간을 왜곡시키지 않고 단계적으로 진행합니다. 간단한 타임 스탬프가 필요한 많은 응용 프로그램에 적합합니다. 또한 SNTP에는 여러 NTP 서버를 모니터링하고 필터링하는 기능이 없습니다. 하나의 서버에 장애가 발생하면 목록의 다음 서버가 사용되는 간단한 라운드 로빈 방식이 종종 사용됩니다.

에서 https://www.masterclock.com/company/masterclock-inc-blog/ntp-vs-sntp

NTP는 SNTP보다 훨씬 정확하고 정확하므로 대부분의 엔터프라이즈 응용 프로그램에서 사실상 승자가됩니다. 반면, SNTP의 단순성은 IP 카메라, DVR 및 일부 네트워크 스위치와 같은 것에 더 적합합니다. 이러한 유형의 하드웨어에는보다 복잡한 프로토콜을 처리 할 처리 리소스가 부족하지만 연결된 장치가 점점 강력 해짐에 따라 변경 될 수 있습니다.

SNTP의 주요 단점 중 하나는 기본적으로 네트워크 시간 프로토콜 (Network Time Protocol)과 같은 여러 소스에서 시간을 검색하여 더 정확하게 검색 할 수 없다는 것입니다.

하이퍼 바이저와 NTP 데몬이 VM 시간을 변경하려고 할 때 NTP보다 더 많은 문제를 발생시키는 SNTP 구현이 가상화에 있다는 것을 알 수있는 또 하나의 주요 요점입니다. 특히 잘못된 구성으로 인해 시간에 동의하지 않으면 둘 다 활성화되어 큰 문제가 발생할 수 있습니다. 유능한 시스템 관리자는 시간 동기화를 위해 한 가지 방법 만 활성 상태로 유지하지만 구성 오류로 인해 둘 다 활성 상태 일 수 있습니다.

PS systemd-timesyncd를 사용하지 않을 때는 권장되는 대안이되어서는 안됩니다 systemd.


1
완전히 명확하지 않습니다. 이론적 systemd-timesyncd으로 다른 서비스 관리자로 프로그램을 실행할 수 있습니다 . 나는 service-manager2018 년부터 nosh 툴킷에서 실행할 수있는 서비스 번들을 제공했습니다. 놓친 것은 시스템 사용자 (Debian 버그 # 812522 당)가 VirtualBox 게스트 서비스 및 다른 사람들이 systemd-timesyncd서비스 사용을 방지하기 위해 서비스 와 명시 적으로 충돌하도록 권장한다는 것입니다 가상 머신에서.
JdeBP

@JdeBP 흥미로운 비고 systemd. ... 없이 데비안을 사용 하고 있습니다 .... 그럼에도 불구하고 vmtools timesync는 비활성화 될 수 있으며 비활성화 될 수 있으며 NTP 서비스를 수행하는 서버 (예 : NTP 서버 VM)에서 비활성화되어야하며 일부 시스템 관리자는 vmtools에 의해 동기화 유지 다른 사람들은 vmtools timesync를 비활성화하는 VmWare의 논문을 따릅니다 (이것은 당신이 무엇을하고 있는지 아는 경우에만 사용해야합니다). 이 버그는 해결하기 위해 선형 적이 지 않으며 vmtools timesync를 사용하지 않는 VmWare 권장 사항을 따르는 사람들이 쉽게 놓칠 수있는 추가 구성 요소가 될 것입니다.
Rui F Ribeiro

(당신의 말에 비추어 내 대답을 편집하고, vmtools 대 (S) NTP 관리에 관한 그 텍스트에 대해 한 가지 실수가 있었고, 더 명확하게 만들었습니다)
Rui F Ribeiro

1
@wedi VmWare의 경우 하이퍼 바이저와의 시간 동기화는 Vcenter, VM 이미지 구성 또는 Linux 측에서 모두 비활성화 할 수 있습니다. 관련 unix.stackexchange.com/questions/492487 / ... vmware-toolbox-cmd timesync disableVmWare 사용자가 해당 VM에 대해 시간 동기화를 비활성화했는지 여부에 관계없이 항상 NTP 서버에서 수행합니다. (또한 일반적으로 NTP 클라이언트로 chrony를 사용하는 것을 선호합니다)
Rui F Ribeiro

1
가능한 시간 동기화 경주를 지적하게되어 기쁩니다! 이것을 명심하십시오!
wedi

0

chrony포크 형식은 ntpd아니지만 처음부터 구현됩니다. 전체 NTPv4 프로토콜 ( RFC5905 ) 의 클라이언트서버 모드를 모두 구현합니다 . 기업 수준의 사용자에, 우리는 전통에서 추세 전환을보고있는 에 레드햇 (이후 RHEL 7)과 (SLES 15) 수세처럼.ntpdchrony

systemd-timesyncdSNTP 프로토콜 ( RFC4330 ) 클라이언트 모드 만 구현 하십시오. 따라서 복잡한 사용 사례는에서 다루지 않습니다 systemd-timesyncd. 예를 들어, SNTP는 기본적으로 NTP와 같이 여러 소스에서 시간을 검색하여 더 정확하게 만들 수 없습니다. 결과적으로 systemd-timesyncd만큼 높은 정밀도 시간을 제공 할 수 없습니다 chrony.


1
음. 나는 chrony를 추구하는 사람이 포크라는 것을 알지 못했고 chrony가 서버와 클라이언트를 구현하는 반면 systemd-timesyncd는 클라이언트 전용이라는 내 질문에 언급했다. 관련 RFC를 언급 해 주셔서 감사합니다.
wedi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.