Zeitsynchronisation

Erstellt 21.04.2009  Kategorien  Hardware

Bei der Einrichtung meiner NAS Allnet ALL6250 ist mir aufgefallen, daß sich die Zeit auf dem Gerät verstellt. Insbesondere nach dem Booten setzt die NAS die Zeit offenbar auf den 01.01.2005 zurück. Die NAS selbst verwendet einen RTC-Baustein (PCF8563 oder kompatibel) für die "Zeitversorgung". Üblicherweise werden diese Bausteine durch eine Backup-Batterie versorgt, so daß die Zeit weitergezählt wird, auch wenn die NAS ausgeschaltet oder von der Netzspannung getrennt wird. Beim Auseinanderrupfen der NAS, bei der ich auch die Hauptplatine ausgebaut habe, ist mir jedoch eine solche Batterie (die man nach einigen Jahren wechseln muß) nicht aufgefallen. Das könnte der Grund dafür sein, daß die NAS nach dem Booten auf den 01.01.2005 zurückfällt.

Darüber hinaus kann man auch feststellen, daß die Zeit auf der NAS ein wenig driftet, d.h. die Länge einer Sekunde auf der NAS unterscheidet sich von der wahren Länge einer Sekunde. In meinem Fall läuft die Uhr der NAS nach. Um das zu verdeutlichen, habe ich die Uhr der NAS zu einem bestimmten Zeitpunkt mittels NTP synchronisiert. Dann habe ich die Differenz der Zeit auf der NAS zu einem Zeitserver im Internet bestimmt, und das über mehrere Tage. Das Ergebnis seht Ihr hier:

Drift der Zeit auf NAS
Drift der Zeit auf der NAS.

In meinem Fall geht die NAS pro Tag (86400 Sekunden) etwa 1.4 Sekunden falsch. Das entspricht einer relativen Ganggenauigkeit von 10E-5. Bemerkenswerterweise driftet die Uhr exakt linear. Das ist wohl ein Hinweis auf einen systematischen Fehler. Möglicherweise stimmt ja die Ist-Frequenz des Quarzes an der RTC nicht exakt mit der Nenn-Frequenz überein, so daß in der Folge die RTC "falsch tickt". Aber das ist nur eine Vermutung.

Das erste Problem mit dem Zurückfallen der Systemzeit beim Booten behebe ich dadurch, daß ich in einem Startskript die Uhrzeit per NTP synchronisiere.Standardmäßig verwendet das Betriebssystem OpenNAS das Programm rdate (RFC 868), um über TCP die Zeit zu stellen. Der Nachteil von RFC 868 ist die schlechte Genauigkeit und der Umstand, daß es quasi von NTP verdrängt wird.

Wie man NTP in OpenNAS nachinstalliert und das Startskript /etc/init.d/S32time anpaßt, steht in diesem Thread auf opennas.info. In diesem Skript muß man noch den NTP-Server definieren. Man kann natürlich direkt auf einen PTB-Server (z.B. ntp1.ptb.de) oder aber die Server unter pool.ntp.org benutzen (z.B. 0.de.pool.ntp.org).

Das zweite Problem mit der Drift kann man nur durch regelmäßiges Nachstellen lösen. Hierzu legt man am besten einen Cron-Job an. In meiner Cron-Tab /etc/crontab/root habe ich folgende Zeile eingefügt:

Tags  nas,  netzwerk,  opennas,  ntp,  rtc,  uhr