Problème:ntpd
, une fois installé sur une machine virtuelle exécutant Ubuntu (cela a déjà été fait sur des hôtes avec divers hyperviseurs tels que KVM et VMware ESX) être sujet à une dérive d'horloge sévère. Je n'ai trouvé aucune bonne méthode et tout le monde ne semble pas en faire l'expérience.
Question: Comment puis-je empêcher cela? Existe-t-il des paramètres dans /etc/ntp.conf
pour forcer ntpd
à synchroniser de manière plus agressive l'heure à l'intérieur de VM ou devrais-je utiliser ntpdate -b timeserver
à la place d'un cron
travail courant de temps en temps?
Quelle méthode est recommandée pour éviter les sauts lorsque vous utilisez ntpdate -b
ou la dérive d'horloge en général dans une machine virtuelle Ubuntu?
Remarque secondaire: j'ai constaté des effets similaires sur les esclaves vios (hyperviseur IBM) exécutant AIX, ainsi que sur Solaris. Le problème est donc bien réel et semble lié aux hyperviseurs en général.
J'ai observé des symptômes similaires sur une machine Linux exécutée sur VMware ESX. Il semble que la dérive (plusieurs minutes par jour) ait été provoquée par la synchronisation horaire fournie par NTP à l'intérieur des outils VM et VMware. Nous avons résolu notre problème en désactivant la synchronisation de l'heure dans les propriétés des outils VMware (dans les propriétés VM d'ESX). Après cela, NTP était en mesure de synchroniser l'horloge avec un serveur de temps distant. Si vous préférez modifier le fichier .vmx
manuellement, définissez tools.syncTime = "0"
.
Arrêter NTP à l'intérieur de VM et laisser les outils synchroniser l'heure fonctionnerait probablement aussi, au moins pour corriger la dérive du serveur. ESX lui-même peut exécuter un démon NTP. Meilleures pratiques de comptabilisation du temps de VMware recommande d'utiliser NTP au lieu de VMWare Tools pour la synchronisation de l'heure.
VMware publie un long papier sur la gestion du temps dans les machines virtuelles VMware . Le passage le plus pertinent est la sous-section “Noyaux Clocksource”. VMware KB a également conseils de dépannage pour la comptabilisation de l'heure dans les invités Linux .
Dans VirtualBox au moins, vous pouvez ... J'ai déjà eu des problèmes de synchronisation temporelle, mais en réglant les paramètres de synchronisation temporelle de Guest Additions semblait résoudre le problème.
Voici le texte pertinent du manuel:
Réglage des paramètres de synchronisation de l'heure des ajouts d'invités
Les ajouts d'invité VirtualBox garantissent que l'heure système de l'invité est synchronisée avec l'heure de l'hôte. Plusieurs paramètres peuvent être réglés. Les paramètres peuvent être définis pour un VM spécifique à l'aide de la commande suivante:
VBoxManage guestproperty set "VM name" "/VirtualBox/GuestAdd/VBoxService/PARAMETER" VALUE
où PARAMETER est l'un des suivants:
--timesync-interval
Spécifie l'intervalle de synchronisation de l'heure avec l'hôte. La valeur par défaut est 10000 ms (10 secondes).
--timesync-min-adjust
La valeur de dérive absolue minimale mesurée en millisecondes pour laquelle des ajustements sont nécessaires. La valeur par défaut est 1000 ms sur OS/2 et 100 ms ailleurs.
--timesync-latency-factor
Le facteur avec lequel multiplier le temps de latence de la requête de temps pour calculer le temps minimum de réglage dynamique. La valeur par défaut est 8 fois, ce qui signifie en détail: mesurez le temps nécessaire pour déterminer l'heure de l'hôte (l'invité doit contacter le service hôte VM, ce qui peut prendre un certain temps), multipliez cette valeur par 8 et effectuez un ajustement uniquement si la différence de temps entre l'hôte et l'invité est supérieure à cette valeur. Ne faites aucun ajustement du temps autrement.
--timesync-max-latency
La latence maximale de la requête du minuteur à accepter. La valeur par défaut est 250 ms.
--timesync-set-threshold
Le seuil de dérive absolue, exprimé en millisecondes, par lequel commencer le réglage de l'heure au lieu d'essayer de l'ajuster en douceur. La valeur par défaut est 20 minutes.
--timesync-set-start
Réglez l'heure du démarrage du service de synchronisation.
--timesync-set-on-restore 0|1
Définit l'heure après la restauration de VM à partir d'un état enregistré lors du passage de 1 en tant que paramètre (par défaut). Désactivez en passant à 0. Dans ce dernier cas, le temps sera ajusté en douceur, ce qui peut prendre beaucoup de temps.Tous ces paramètres peuvent également être spécifiés en tant que paramètres de ligne de commande dans
VBoxService
.Désactiver la synchronisation de l'heure des ajouts d'invités
Une fois installés et démarrés, les additions invité de VirtualBox essaieront de synchroniser l'heure de l'invité avec l'heure de l'hôte. Cela peut être évité en interdisant au service invité de lire l'horloge de l'hôte:
VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled"