ntpd vs. systemd-timesyncd - Wie erreicht man eine zuverlässige NTP-Synchronisation?


31

Wenn ich den Status des NTP-Daemons mit ntpdc -c sysinfoabfrage, erhalte ich die folgende Ausgabe:

system peer:          0.0.0.0
system peer mode:     unspec
leap indicator:       11
stratum:              16
precision:            -20
root distance:        0.00000 s
root dispersion:      12.77106 s
reference ID:         [73.78.73.84]
reference time:       00000000.00000000  Thu, Feb  7 2036  7:28:16.000
system flags:         auth monitor ntp kernel stats
jitter:               0.000000 s
stability:            0.000 ppm
broadcastdelay:       0.000000 s
authdelay:            0.000000 s

Dies zeigt an, dass die NTP-Synchronisierung fehlgeschlagen ist. Die Systemzeit ist jedoch innerhalb von 1 Sekunde genau. Wenn ich mein System für den gleichen Zeitraum wie jetzt ohne Netzwerkverbindung laufen ließ, würde die Systemzeit ~ 10s abweichen.

Dieses Verhalten deutet darauf hin, dass das System eine andere Methode zum Synchronisieren der Uhrzeit hat. Ich habe festgestellt, dass es auch systemd-timesyncd.service(mit Konfigurationsdatei /etc/systemd/timesyncd.conf) timedatectl statusgibt und gebe mir die richtige Zeit:

      Local time: Thu 2016-08-25 10:55:23 CEST
  Universal time: Thu 2016-08-25 08:55:23 UTC
        RTC time: Thu 2016-08-25 08:55:22
       Time zone: Europe/Berlin (CEST, +0200)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2016-03-27 01:59:59 CET
                  Sun 2016-03-27 03:00:00 CEST
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2016-10-30 02:59:59 CEST
                  Sun 2016-10-30 02:00:00 CET

Meine Frage ist also, was ist der Unterschied zwischen den beiden Mechanismen? Ist einer von ihnen veraltet? Können sie parallel verwendet werden? Welchem ​​sollte ich vertrauen, wenn ich den NTP-Synchronisierungsstatus abfragen möchte?

(Beachten Sie, dass ich ein anderes System (in einem anderen Netzwerk) habe, für das beide Methoden den Erfolg anzeigen und die richtige Zeit liefern.)


2
Ich habe festgestellt, dass Fedora tatsächlich chrony verwendet : Konfigurieren von NTP mithilfe der chrony Suite
David Tonhofer,

Antworten:


19

systemd-timesyncd ist im Grunde eine kleine NTP-Implementierung nur für Clients, die mehr oder weniger mit neueren systemd-Releases gebündelt ist. Es ist leichter als ein vollständiger NTPD, unterstützt jedoch nur die Zeitsynchronisierung, dh, es kann nicht als NTP-Server für andere Computer verwendet werden. Es soll ntpd für Clients ersetzen.

Sie sollten nicht beide gleichzeitig verwenden, da sie theoretisch unterschiedliche Zeitserver auswählen könnten, die eine leichte Verzögerung zwischen sich haben, was dazu führt, dass Ihre Systemuhr regelmäßig "springt".

Um den Status zu erhalten, müssen Sie leider verwenden, ntpdcwenn Sie ntpd verwenden und timedatectlwenn Sie timesyncd verwenden, ich kenne kein Dienstprogramm, das beide lesen kann.


Wie ist es dann möglich, dass die Synchronisation von ntpd auf einem System fehlschlägt, während sie auf dem anderen erfolgreich ist (beide führen systemd-timesyncd parallel aus)? Ich bin mir ziemlich sicher, dass dies nicht mit einem Firewall-Problem zusammenhängt, da ich die entsprechenden Einstellungen überprüft habe. Im Moment bleiben mir zwei Ergebnisse und ich bin versucht, dem erfolgreichen zu vertrauen, aber ich habe Zweifel, dass beide Clients das gleiche NTP-Protokoll implementieren, aber eines fehlschlägt. Eigentlich würde ich erwarten, dass beide funktionieren.
a_guest

1
ntpd und timesyncd verwenden unterschiedliche Einstellungen. Haben Sie für beide den gleichen Zeitserver eingestellt?
Maxf

können Sie timesyncd verwenden, um die Zeit mit einem GPS wie mit ntp zu synchronisieren?
Bakalolo

Systemd-timesyncd ist ein SNTP-Client, der weniger genau ist als NTP. Die Leser sollten nicht in die Irre geführt werden, wenn sie denken, dass systemd-timesyncd ein leichter NTP-Client ist.
Philip Couling

14

systemd-timesyncd führt keine Uhrendisziplin durch: Die Uhr wird nicht trainiert oder kompensiert, und die interne Zeitdrift wird nicht reduziert. Es hat eine rudimentäre Logik, um das Abfrageintervall anzupassen, aber ohne Disziplinierung wird der Host für immer eine ungerade Zeit haben, da systemd-timesyncd in dem Intervall pusht oder zieht, das seiner Meinung nach die kurzfristige Drift erfordert. Es kann auch nicht die Qualität der entfernten Zeitquelle beurteilen. Es ist unwahrscheinlich, dass Sie eine Genauigkeit von mehr als 100 ms erzielen. Dies ist für einfache Endbenutzergeräte wie Laptops ausreichend, kann jedoch definitiv Probleme für verteilte Systeme verursachen, die eine höhere Zeitgenauigkeit wünschen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.