All links of one day
in a single page.
<Previous day - Next day>

rss_feedDaily RSS Feed
floral_left The Daily Shaarli floral_right
——————————— August 5, 2022 - Friday 05, August 2022 ———————————
Linux - visualisation - date -
thumbnail

Les machines virtuelles (KVM en tous cas) peuvent lentement perdre du temps sur leur horloge et être de plus en plus en retard. Il semblerait que ce soit dû au fait que les interrupts virtuels ne sont pas forcément pile synchronisés (ce qui parait logique : si l'hyperviseur est en train de faire autre chose lui-même il ne pourra pas synchroniser toutes ses VM à temps).

Une horloge matérielle est émulée, mais elle n'est lue qu'au démarrage de la VM en général. On pourrait périodiquement aller la lire mais pas très propre.

On peut bien sûr juste laisser les VM se synchroniser elles-mêmes, mais si on est derrière un firewall ou qu'on essaye de limiter au maximum les accès réseau par exemple avec un firewall agressif sur les VM, c'est dommage.

Une solution est de laisser les hyperviseurs se synchroniser depuis Internet en NTP (ou pas si derrière un firewall bien sûr, mais du coup de la manière normale en interne), et de relayer cela aux VM, toujours en NTP. Les hyperviseurs sont donc juste relais. Mais il faut pour cela soit qu'ils aient soit une adresse IP virtuelle, soit systématiquement les ajouter tous dans les configurations des VM. On évite ainsi que chaque VM aille interroger individuellement les serveurs de temps. Il faut toujours ouvrir le firewall des VM, mais "seulement" vers les hôtes. Par contre la configuration change si on change d'hôtes sans IP virtuelle.

Une autre solution proposée ici est d'utiliser un mécanisme de précision entre l'hôte et les VM proposé en kvm par le module ptp_kvm. Cela fonctionne comme une source de temps, via un dev. Comme fonctionnerais une source GPS.
Dans ce cas, rien ne sort de la VM au niveau réseau, pas de trafic dupliqué vers l'extérieur ni de charge inutile, et rien à configurer de plus sur les hyperviseurs.

Script rapide de passage de NTP avec systemd-timesyncd ou chrony (comme souvent par défaut sur Debian et RedHat-like) à PTP, à faire sur la VM elle-même (rien à faire sur l'hyperviseur, en tous cas avec proxmox7) :

-#- charger le module et l'ajouter au boot
echo ptp_kvm | sudo tee /etc/modules-load.d/ptp_kvm.conf
sudo modprobe ptp_kvm

-#- passer à chrony si pas déjà fait et le configurer sans NTP mais avec PTP (dépend de la config précédente pour la partie désactivation du pool NTP)
sudo apt install chrony
echo "refclock PHC /dev/ptp0 poll 2" | sudo tee /etc/chrony/conf.d/phc.conf
sudo sed -i 's/^pool/#pool/g' /etc/chrony/chrony.conf

-#- recharge de la configuration
sudo systemctl restart chrony

-#- commandes de test
timedatectl
chronyc sources

-