Wenn ich den Status des NTP-Daemons mit ntpdc -c sysinfo
abfrage, 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 status
gibt 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.)
Antworten:
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,
ntpdc
wenn Sie ntpd verwenden undtimedatectl
wenn Sie timesyncd verwenden, ich kenne kein Dienstprogramm, das beide lesen kann.quelle
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.
quelle