Aus Linux-Magazin 08/2017

Aus dem Alltag eines Sysadmin: Hochgenaue Systemzeit

Abbildung 1: Diagramm mit den ermittelten Systemzeit-Abweichungen auf Charlys Raspi.

Nachdem die Anschaffung einer Atomuhr im Hause Kühnast keine Mehrheit gefunden hat, zapft Charly eben das Uhrwerk eines GPS-Satelliten an. So verschafft er zu Hause der Pünktlichkeit Geltung, die sonst nur große Rechenzentren benötigen. Genau.

NTP, das Network Time Protocol, ist einer der am einfachsten zu konfigurierenden Serverdienste. Minimal verlangt die Konfigurationsdatei »ntp.conf« nur nach einer Zeile mit einer Quelle, aus der die Uhrzeit kommen soll:

pool de.pool.ntp.org iburst

Meist gibt man aber mehr als eine Quelle an. Der NTP-Daemon fragt sie zyklisch ab und versucht Laufzeitunterschiede herauszurechnen, die durch die Latenzen im Netz entstehen. Mein heimischer NTP-Dienst läuft auf dem Raspberry Pi, der hauptberuflich die Bewässerung im Garten steuert, und hat eine Zeitunschärfe von 30 bis 40 Millisekunden.

Das ist für meinen eh leicht chaotischen Haushalt fast schon unanständig präzise, aber in Rechenzentren ist Millisekunden-genaues Logging tatsächlich ein Thema. Wie weit kann ich wohl meinen frisch entfachten Pünktlichkeitswahn treiben?

Zunächst müsste ich das Stratum verringern. Eine hochgenaue Zeitquelle, die ihr Zeitsignal öffentlich zugänglich macht, ist eine Stratum-0-Quelle (Stratum: Schicht). Ein Server, der die Zeit dort erfragt und weiterverteilt, ist ein Stratum-1-Server, und so weiter.

Der naheliegende Kauf einer Atomuhr scheiterte seltsamerweise im Familienrat. Also versorge ich meinen Raspi mit einem GPS-Empfänger – jeder GPS-Satellit ist eine Stratum-0-Zeitquelle. Der GPS-Daemon, der zum Umfang der meisten Distributionen gehört, stellt dem NTP-Server das Zeitsignal über ein virtuelles Interface bereit. In der »ntp.conf« ergänze ich zwei Zeilen, um dem Ntpd die Adresse bekannt zu machen:

server 127.127.28.0 minpoll4 noselect
fudge 127.127.28.0 time1 0.0 refid GPS

Schon besser. Aber es geht noch genauer, denn der Datentransport durchs serielle Interface kann weiterhin leichte Schwankungen erzeugen. Selbst die lassen sich herausrechnen: GPS-Satelliten funken nämlich nicht nur die Uhrzeit, sondern auch ein so genanntes PPS-Signal (Pulse per Second). Das sind kurze Pulse hochpräzise im Abstand einer Sekunde.

Das kleine Tool »rpi_gpio_ntp«[1] des Programmierers Folkert van Heusden macht dem Zeitserver das PPS-Signal zugänglich. Auch das passiert wieder über eine virtuelle IP, die ich in »ntp.conf« eintrage:

server 127.127.28.1 minpoll 4 prefer
fudge 127.127.28.1 refid UPPS

Der Erfolg ist in der Tat durchschlagend. Meine Munin-Grafik in Abbildung 1, die die Schwankungen des Zeitsignals zeigt, legt sich nach dem Aktivieren der GPS-PPS-Kombi als glatte Linie zurecht – nicht übel für einen Stratum-1-Zeitserver.

Abbildung 1: Diagramm mit den ermittelten Systemzeit-Abweichungen auf Charlys Raspi.

Abbildung 1: Diagramm mit den ermittelten Systemzeit-Abweichungen auf Charlys Raspi.

Zeit zu gehen

Auf Clients stirbt der Ntpd infolge von Systemd gerade aus, Timesyncd ersetzt ihn. Der ist schlanker, verteilt aber als Client nichts weiter. Ihn konfiguriere ich in der »/etc/systemd/timesyncd.conf« so, dass er meinen Gieß-Raspi primär nutzt und Internet-Zeitserver nur zur Not:

NTP=gpspi
FallBackNTP=de.pool.ntp.org 0.pool.ntp.org 1.pool.ntp.org

Habe ich eines Tages genug Hardware angehäuft, die hochgenaues Logging nötig macht – ich bin vorbereitet. (jk)

Der Autor

Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein. Zu seinen Aufgaben gehören Sicherheit und Verfügbarkeit der Firewalls und der DMZ.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben