39 Zeitsynchronisierung mit NTP #
Der NTP-(Network Time Protocol-)Mechanismus ist ein Protokoll für die Synchronisierung der Systemzeit über das Netzwerk. Erstens kann ein Computer die Zeit von einem Server abrufen, der als zuverlässige Zeitquelle gilt. Zweitens kann ein Computer selbst für andere Computer im Netzwerk als Zeitquelle fungieren. Es gibt zwei Ziele – das Aufrechterhalten der absoluten Zeit und das Synchronisieren der Systemzeit aller Computer im Netzwerk.
Das Aufrechterhalten der genauen Systemzeit ist in vielen Situationen wichtig. Die integrierte Hardware-Uhr erfüllt häufig nicht die Anforderungen bestimmter Anwendungen, beispielsweise Datenbanken oder Cluster. Die manuelle Korrektur der Systemzeit würde schwerwiegende Probleme nach sich ziehen; das Zurückstellen kann beispielsweise zu Fehlfunktionen wichtiger Anwendungen führen. Die Systemzeiten der in einem Netzwerk zusammengeschlossenen Computer müssen in der Regel synchronisiert werden. Es empfiehlt sich aber nicht, die Zeiten manuell anzugleichen. Vielmehr sollten Sie dazu NTP verwenden. Der NTP-Dienst passt die Systemzeit ständig anhand zuverlässiger Zeitserver im Netzwerk an. Zudem ermöglicht er die Verwaltung lokaler Referenzuhren, beispielsweise funkgesteuerter Uhren.
Ab SUSE Linux Enterprise Desktop 15 ist chrony Standardimplementation von NTP. chrony besteht aus zwei Teilen: chronyd ist ein Daemon, der beim Booten gestartet werden kann, und mit dem Befehlszeilenschnittstellenprogramm chronyc ist es möglich, die Leistung von chronydzu überwachen und Betriebsparameter zur Laufzeit zu ändern.
Ab SUSE Linux Enterprise Desktop 15.2 konfiguriert das YaST-Modul für die NTP-Client-Konfiguration den systemd-timer anstelle des cron daemon, um chrony auszuführen, wenn es nicht zur Ausführung als Daemon konfiguriert ist.
Befolgen Sie die Anweisungen unter Procedure 7.2, “Joining an Active Directory domain using ”, um die Zeitsynchronisierung über Active Directory zu aktivieren.
39.1 Konfigurieren eines NTP-Clients mit YaST #
Der NTP-Daemon (chronyd) im chrony-Paket ist so voreingestellt, dass die Hardware-Uhr des lokalen Computers als Zeitreferenz verwendet wird. Die Präzision einer Hardware-Uhr ist stark von der Zeitquelle abhängig. Eine Atomuhr oder ein GPS-Empfänger ist beispielsweise eine genaue Zeitquelle, ein normaler RTC-Chip ist dagegen keine zuverlässige Zeitquelle. YaST erleichtert die Konfiguration von NTP-Clients.
Im Fenster für die YaST-NTP-Client-Konfiguration ( › ) können Sie den Zeitpunkt für den Start des NTP-Daemons sowie den Typ der Konfigurationsquelle angeben und benutzerdefinierte Zeitserver einfügen.
39.1.1 Start des NTP-Daemons #
Zum Starten des NTP-Daemons stehen drei Optionen zur Auswahl:
Wählen Sie , um den
chrony-Daemon manuell zu starten.Wählen Sie aus, um die Systemzeit regelmäßig festzulegen, ohne dass
chronyständig ausgeführt wird. Sie können das festlegen.Wählen Sie aus, um
chronydautomatisch beim Booten des Systems zu starten. Diese Einstellung wird empfohlen.
39.1.2 Typ der Konfigurationsquelle #
Wählen Sie im Dropdown-Feld entweder die Option oder . Verwenden Sie , wenn Ihr Server nur mit einer bestimmten Gruppe (öffentlicher) NTP-Server arbeitet, und , wenn Ihr internes Netzwerk NTP-Server über DHCP anbietet.
39.1.3 Konfigurieren von Zeitservern #
Im unteren Bereich des Fensters werden die Zeitserver aufgelistet, die der Client abfragen kann. Bearbeiten Sie diese Liste nach Bedarf mithilfe der Optionen , und .
Klicken Sie auf , um einen neuen Zeitserver hinzuzufügen:
Geben Sie in das Feld die URL des Zeitservers oder des Zeitserver-Pools ein, mit dem die Computerzeit synchronisiert werden soll. Prüfen Sie mit , ob die eingegebene URL auf eine gültige Zeitquelle verweist.
Mit wird eine größere Anzahl von Anfragen beim Start des
chronyd-Daemons gesendet, sodass die Zeitsynchronisierung beschleunigt wird.Mit beschleunigen Sie den Bootvorgang auf Systemen, auf denen der
chronyd-Daemon automatisch gestartet wird und die beim Booten keine Internetverbindung besitzen. Diese Option eignet sich beispielsweise für Laptops, deren Netzwerkverbindungen über NetworkManager verwaltet werden.Bestätigen Sie Ihre Auswahl mit .
39.2 Manuelle Konfiguration von NTP im Netzwerk #
chrony liest die Konfiguration aus der Datei /etc/chrony.conf aus. Damit die Computeruhr synchronisiert bleibt, müssen Sie die zu verwendenden Zeitserver in chrony festlegen. Hierbei können Sie spezielle Servernamen oder IP-Adressen angeben, beispielsweise:
0.suse.pool.ntp.org 1.suse.pool.ntp.org 2.suse.pool.ntp.org 3.suse.pool.ntp.org
Sie können auch den Namen für einen Pool angeben. Der Poolname wird in mehrere IP-Adressen aufgelöst:
pool pool.ntp.org
Soll die Zeit auf mehreren Computern in demselben Netzwerk synchronisiert werden, sollten Sie nicht alle Computer mit einem externen Server synchronisieren. Ein bewährtes Verfahren besteht darin, einen Computer als Zeitserver, der mit einem externen Zeitserver synchronisiert wird, und die anderen Computer als die Clients dieses Computers festzulegen. Fügen Sie eine local-Direktive zur Datei /etc/chrony.conf des Servers hinzu, sodass dieser Server von einem autoritativen Zeitserver unterschieden wird:
local stratum 10
Starten Sie chrony mit dem folgenden Befehl:
systemctl start chronyd.service
Nach der Initialisierung von chronyd dauert es eine gewisse Zeit, bis die Zeit sich stabilisiert und die Drift-Datei zum Korrigieren der lokalen Computeruhr erstellt wird. Mithilfe der Drift-Datei kann der systematische Fehler der Hardware-Uhr berechnet werden, wenn der Computer eingeschaltet wird. Die Korrektur kommt umgehend zum Einsatz und führt zu einer größeren Stabilität der Systemzeit.
Aktivieren Sie den Dienst, sodass chrony automatisch beim Booten gestartet wird, mit dem folgenden Befehl:
systemctl enable chronyd.service
yast-timesync.service
Neben dem Dienst chronyd.service umfasst SLED auch den Dienst yast-timesync.service. yast-timesync.service wird alle 5 Minuten durch einen Zeitgeber ausgelöst und führt chronyd mit der Option -q aus, um die Systemzeit festzulegen, und wird beendet. Da immer nur eine Instanz von chronyd ausgeführt werden kann, sollten Sie nicht beide chronyd-bezogenen Dienste gleichzeitig aktivieren oder starten.
39.3 Konfigurieren von chronyd zur Laufzeit mit chronyc #
Mit chronyc können Sie das Verhalten von chronyd zur Laufzeit verändern. Hiermit werden außerdem Statusberichte zum Betrieb von chronyd erzeugt.
Sie können chronyc wahlweise im interaktiven oder im nicht interaktiven Modus ausführen. Soll chronyc interaktiv ausgeführt werden, geben Sie chronyc in die Befehlszeile ein. Eine Eingabeaufforderung wird angezeigt und das System wartet auf Ihre Befehlseingabe. Mit dem folgenden Befehl prüfen Sie beispielsweise, wie viele NTP-Quellen online oder offline sind:
#chronycchronyc> activity 200 OK 4 sources online 2 sources offline 1 sources doing burst (return to online) 1 sources doing burst (return to offline) 0 sources with unknown address
Mit quit oder exit schließen Sie die chronyc-Eingabeaufforderung.
Falls Sie keine interaktive Eingabeaufforderung benötigen, geben Sie den Befehl direkt ein:
#chronycactivity
Die mit chronyc vorgenommenen Änderungen sind nicht dauerhaft. Sie gehen nach dem nächsten Neustart von chronyd verloren. Sollen dauerhafte Änderungen erfolgen, bearbeiten Sie /etc/chrony.conf.
Eine vollständige Liste der chronyc-Befehle finden Sie auf der Man-Seite (man
1 chronyc).
39.4 Dynamische Zeitsynchronisierung während der Laufzeit #
chronyd wird zwar auf einem System, das ohne Netzwerkverbindung bootet, normal ausgeführt, kann jedoch nicht die DNS-Namen der in der Konfigurationsdatei angegebenen Zeitserver auflösen.
chronyd versucht in immer größeren Zeitabständen, die in den server-, pool- und peer-Direktiven angegebenen Zeitservernamen aufzulösen, bis die Auflösung erfolgreich ist.
Falls der Zeitserver beim Starten von chronyd nicht erreichbar sein wird, können Sie die Option offline angeben:
server server_address offline
Hiermit ruft chronyd den Server erst nach Aktivierung mit dem folgenden Befehl ab:
# chronyc online server_address
Wenn die Option auto_offline eingestellt ist, nimmt chronyd an, dass der Zeitserver offline geschaltet wurde, sobald zwei Anfragen ohne Antwort gesendet wurden. Mit dieser Option müssen Sie nicht mehr den Befehl offline über chronyc ausführen, wenn Sie die Netzwerkverbindung trennen.
39.5 Einrichten einer lokalen Referenzuhr #
Das Software-Paket chrony greift auf andere Programme (z. B. gpsd) zurück, die die Zeitgebungsdaten über den SHM- oder SOCK-Treiber abrufen. Geben Sie mit der refclock-Direktive in /etc/chrony.conf eine Hardware-Referenzuhr als Zeitquelle an. Hierbei sind zwei Parameter obligatorisch, zum einen der Treibername und zum anderen ein treiberspezifischer Parameter. Nach den beiden Parameter können bei Bedarf noch refclock-Optionen angegeben werden. chronyd umfasst folgende Treiber:
PPS – Treiber für die Kernel-API
pulse per second. Beispiel:refclock PPS /dev/pps0 lock NMEA refid GPS
SHM – Treiber für den gemeinsam genutzten NTP-Speicher. Beispiel:
refclock SHM 0 poll 3 refid GPS1 refclock SHM 1:perm=0644 refid GPS2
SOCK – Treiber für den Unix-Domänen-Socket. Beispiel:
refclock SOCK /var/run/chrony.ttyS0.sock
PHC – Treiber für die PTP-Hardware-Uhr. Beispiel:
refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37 refclock PHC /dev/ptp1:nocrossts poll 3 pps
Weitere Informationen zu den Optionen der einzelnen Treiber finden Sie auf der man-Seite man 8
chrony.conf.
39.6 Uhrensynchronisierung mit einer externen Zeitreferenz (ETR) #
Unterstützung für Uhrensynchronisierung mit einer externen Zeitreferenz (ETR) ist verfügbar. Die externe Zeitreferenz sendet alle 2**20 (2 hoch 20) Millisekunden ein Oszillatorsignal und ein Synchronisierungssignal, um die Tageszeit-Uhren aller angeschlossenen Server synchron zu halten.
Zur Verfügbarkeit können zwei ETR-Einheiten an einen Computer angeschlossen werden. Wenn die Uhr um mehr als die Toleranz zum Prüfen der Synchronisierung abweicht, erhalten alle CPUs eine Rechnerprüfung, die darauf hinweist, dass die Uhr nicht synchronisiert ist. In diesem Fall werden sämtliche DASD-E/A an XRC-fähige Geräte gestoppt, bis die Uhr wieder synchron ist.
Die ETR-Unterstützung wird mithilfe von zwei sysfs-Attributen aktiviert; führen Sie die folgenden Befehle als root aus:
echo 1 > /sys/devices/system/etr/etr0/online echo 1 > /sys/devices/system/etr/etr1/online

