Warum aktualisiert mein Debian Hyper-V-Gast die Zeit nicht, nachdem der Host aus dem Ruhezustand aufgewacht ist?

Warum aktualisiert mein Debian Hyper-V-Gast die Zeit nicht, nachdem der Host aus dem Ruhezustand aufgewacht ist?

Ich habe einen physischen Windows 10-Host (Laptop) mit installiertem und aktiviertem Hyper-V und habe ein Problem: Bei einer eher einfachen Debian 9-Gastinstallation wird die Uhr nicht aktualisiert, nachdem der Host für eine Weile in den Ruhezustand versetzt und dann wieder aufgeweckt wurde (ich nehme an, der Gast ist zusammen mit dem Host angehalten).

Soweit ich weiß, sollte dieses Problem trivial durch Hyper-V-Integrationsdienste gelöst werden, dieSindsowohl in den Einstellungen der virtuellen Maschine (alle Integrationsdienste aktiviert) als auch im Gast (alle hv_*Module sind geladen) aktiviert ist und wobei einer der Dienste die Zeit synchronisiert und sicherstellt, dass sie auf dem neuesten Stand bleibt.

Warum funktioniert es in meinem Fall also nicht? Ich habe NTP nicht installiert und möchte es auch nicht, teilweise aus Prinzip (um das Problem speziell mit Hyper-V zu beheben) und teilweise, weil der Gast ohne Internetverbindung und Remote-Host-Dienste arbeiten muss. Die Zeitzone meines Hosts ist explizit auf UTC eingestellt (ich bin mit dem Laptop viel unterwegs und habe weder das Bedürfnis noch den Wunsch, den Gast statisch einer bestimmten Zeitzone zuzuordnen) und verwende TZstattdessen nach Bedarf Variablen.

Ich habe eine Reihe von Seiten bei Microsoft und einige Altaro-Artikel gelesen, die sehr informativ schienen, mich aber nicht darüber aufklären konnten. Ich habe auch eine Reihe von Antworten auf Stack Exchange-Websites gelesen, von denen die Hälfte die Verwendung von NTP empfiehlt und die andere Hälfte sich hauptsächlich auf etwas anderes bezieht oder einfach nicht den gewünschten Rat liefert.

Ich verstehe, dass es möglicherweise ein Signal gibt, das beim Gast nicht ausgelöst wird, wenn der Host aus dem Ruhezustand erwacht (so wie es wäre, wenn Sie den Gast beispielsweise über ACPI in den Ruhezustand versetzt hätten), aber sollte das nicht ein gelöstes Problem sein?

Welche Fehler kann ich wo beheben, um sicherzustellen, dass ich den Deckel des Laptops zuverlässig schließen (in den Ruhezustand versetzen) und mit einem aktuellen Zeitstempel zu meinem Gast zurückkehren kann?

Antwort1

Überprüfen Sie dies:https://github.com/clearlinux/distribution/issues/39

Eine funktionierende Lösung besteht darin, alle anderen Zeitdienste zu deaktivieren und Chrony zu verwenden, anstatt nur die LIS-Hyperv-Zeitquelle ptp0 zu konfigurieren.

Stellen Sie sicher, dass die LIS-Zeitquelle verfügbar ist über:

ls /sys/class/ptp
ptp0

cat /sys/class/ptp/ptp0/clock_name 
hyperv

Installieren Sie jetzt Chrony für Ihre Distribution, überprüfen Sie den Konfigurationsspeicherort und erstellen Sie dann die Konfiguration, die dem Speicherort Ihres PTP-Geräts entspricht.

/etc/chrony.conf:

refclock PHC /dev/ptp0 trust
makestep 1 -1

Dadurch kann Chrony die Systemzeit über die HyperV-PTP0-Quelle in einem einzigen großen Schritt korrigieren.

Die Abfragezeit kann wie folgt auf 4 Sekunden (Zweierpotenz) gesenkt werden:

refclock PHC /dev/ptp0 trust poll 2

PS: Dies scheint ein Fehler/Versehen in Hyperv/LIS zu sein.

verwandte Informationen