Ubuntu in der virtuellen Maschine: ntpd oder ntpdate oder ??? um eine Drift der Uhr zu vermeiden

8

Problem: ntpd Bei der Installation auf einer virtuellen Maschine mit Ubuntu (ich hatte dies auf Hosts mit einer Vielzahl von Hypervisoren wie KVM und VMware ESX) scheint es zu einer starken Taktverschiebung zu kommen. Ich habe keine gute Methode gefunden und nicht jeder scheint dies zu erleben.

Frage: Wie kann ich das verhindern? Gibt es Einstellungen , die eine aggressivere Synchronisierung der Zeit in der VM /etc/ntp.conferzwingen ntpd, oder sollte ich sie ntpdate -b timeserverstattdessen in einem cronJob verwenden, der von Zeit zu Zeit ausgeführt wird?

Welche Methode wird empfohlen, um Sprünge bei der Verwendung ntpdate -boder Taktverschiebung im Allgemeinen in einer virtuellen Ubuntu-Maschine zu vermeiden ?


Randnotiz: Ich habe ähnliche Auswirkungen auf Vios-Slaves (IBM Hypervisor) unter AIX sowie auf Solaris gesehen. Das Problem ist also sehr real und scheint im Allgemeinen mit Hypervisoren zu tun zu haben.

0xC0000022L
quelle

Antworten:

7

Ich habe ähnliche Symptome auf einem Linux-Computer beobachtet, der unter VMware ESX ausgeführt wird. Es scheint, dass die Abweichung (mehrere Minuten pro Tag) durch die Zeitsynchronisation verursacht wurde, die sowohl von NTP innerhalb der VM- als auch von VMware-Tools bereitgestellt wurde. Wir haben unser Problem gelöst, indem wir die Zeitsynchronisation in den Eigenschaften der VMware-Tools (in den VM-Eigenschaften in ESX) deaktiviert haben . Danach konnte NTP die Uhr mit einem Remote-Zeitserver synchronisieren. Wenn Sie die .vmxDatei lieber manuell bearbeiten möchten , legen Sie festtools.syncTime = "0" .

Das Stoppen von NTP in der VM und das Synchronisieren der Zeit durch die Tools würde wahrscheinlich auch funktionieren, zumindest um die Serverdrift zu korrigieren. ESX selbst kann einen NTP-Daemon ausführen. In den Best Practices für die Zeitmessung von VMware wird empfohlen, für die Zeitsynchronisierung NTP anstelle von VMWare Tools zu verwenden.

VMware veröffentlicht ein ausführliches Dokument zur Zeitmessung in virtuellen VMware-Maschinen . Die relevanteste Passage ist der Unterabschnitt „Clocksource Kernels“. Die VMware-KB enthält auch Tipps zur Fehlerbehebung für die Zeitmessung bei Linux-Gästen .

Gilles 'SO - hör auf böse zu sein'
quelle
7

Zumindest in VirtualBox können Sie ... Ich hatte zuvor Probleme mit der Zeitsynchronisierung , aber das Optimieren der Zeitsynchronisationsparameter von Guest Additions schien dies zu beheben.

Hier ist relevanter Text aus dem Handbuch:

Optimieren der Zeitsynchronisationsparameter von Guest Additions

Die VirtualBox Guest Additions stellen sicher, dass die Systemzeit des Gasts mit der Hostzeit synchronisiert ist. Es gibt verschiedene Parameter, die eingestellt werden können. Die Parameter können für eine bestimmte VM mit dem folgenden Befehl festgelegt werden:

VBoxManage guestproperty set "VM name" "/VirtualBox/GuestAdd/VBoxService/PARAMETER" VALUE

wobei PARAMETER einer der folgenden ist:

--timesync-interval Gibt das Intervall an, in dem die Zeit mit dem Host synchronisiert werden soll. Der Standardwert ist 10000 ms (10 Sekunden).

--timesync-min-adjust Der minimale absolute Driftwert, der in Millisekunden gemessen wird, um Anpassungen für vorzunehmen. Der Standardwert ist 1000 ms unter OS / 2 und 100 ms an anderer Stelle.

--timesync-latency-factor Der Faktor, mit dem die Zeitabfrage-Latenz multipliziert wird, um die dynamische minimale Anpassungszeit zu berechnen. Der Standardwert ist 8-mal, dh im Detail: Messen Sie die Zeit, die zur Bestimmung der Hostzeit benötigt wird (der Gast muss sich an den VM-Hostdienst wenden, was einige Zeit dauern kann), multiplizieren Sie diesen Wert mit 8 und nehmen Sie nur dann eine Anpassung vor, wenn die Der Zeitunterschied zwischen Gastgeber und Gast ist größer als dieser Wert. Nehmen Sie sonst keine Zeiteinstellung vor.

--timesync-max-latency Die maximal zu akzeptierende Host-Timer-Abfragelatenz. Der Standardwert beträgt 250 ms.

--timesync-set-threshold Die absolute Driftschwelle, angegeben als Millisekunden, an der die Zeit eingestellt werden soll, anstatt zu versuchen, sie reibungslos anzupassen. Der Standardwert beträgt 20 Minuten.

--timesync-set-start Stellen Sie die Zeit ein, wenn Sie den Zeitsynchronisierungsdienst starten.

--timesync-set-on-restore 0|1 Legen Sie die Zeit fest, nach der die VM aus einem gespeicherten Zustand wiederhergestellt wurde, wenn Sie 1 als Parameter übergeben (Standard). Deaktivieren Sie durch Übergeben von 0. Im letzteren Fall wird die Zeit reibungslos angepasst, was lange dauern kann.

Alle diese Parameter können auch als Befehlszeilenparameter angegeben werden VBoxService.

Deaktivieren der Zeitsynchronisierung für Gastzugaben

Nach der Installation und dem Start versuchen die VirtualBox Guest Additions, die Gastzeit mit der Hostzeit zu synchronisieren. Dies kann verhindert werden, indem dem Gästeservice das Lesen der Host-Uhr untersagt wird:

VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled"
Scott Goodgame
quelle
Vielen Dank, dass Sie sich die Zeit genommen haben, um zu antworten. Dies ist nicht der Hypervisor, den ich suche, aber ich bin sicher, dass dies für Leute nützlich sein wird, die das Problem mit VirtualBox haben.
0xC0000022L
0

In virtualbox können Sie versuchen, den Paravirtualisierungsparameter Ihrer VM zu ändern .

Gehen Sie in der Einstellung Ihrer Maschine zu: Systeme> Beschleunigung Geben Sie hier die Bildbeschreibung ein

Dies behebt das Problem für mich.

Angel115
quelle