12.9. Dépannage des migrations de machines virtuelles
Si vous rencontrez l'un des problèmes suivants lors de la migration de machines virtuelles (VM), consultez les instructions fournies pour résoudre ou éviter le problème.
12.9.1. La migration en direct d'une VM prend beaucoup de temps sans se terminer
Cause
Dans certains cas, la migration d'une VM en cours d'exécution peut amener la VM à générer dirty memory pages plus rapidement qu'elle ne peut être migrée. Dans ce cas, la migration ne peut pas s'achever correctement.
Les scénarios suivants sont souvent à l'origine de ce problème :
- Migration en direct d'une VM sous forte charge
Migration en direct d'une VM qui utilise une grande quantité de mémoire, par exemple 1 To ou plus
ImportantRed Hat a testé avec succès la migration en direct de VMs ayant jusqu'à 6 TB de mémoire. Cependant, pour les scénarios de migration en direct qui impliquent des machines virtuelles avec plus de 1 TB de mémoire, les clients doivent contacter le support technique de Red Hat.
Diagnosis
Si la migration en direct de votre VM prend plus de temps que prévu, utilisez la commande virsh domjobinfo
pour obtenir les données de la page mémoire de la VM :
# virsh domjobinfo vm-name Job type: Unbounded Operation: Outgoing migration Time elapsed: 168286974 ms Data processed: 26.106 TiB Data remaining: 34.383 MiB Data total: 10.586 TiB Memory processed: 26.106 TiB Memory remaining: 34.383 MiB Memory total: 10.586 TiB Memory bandwidth: 29.056 MiB/s Dirty rate: 17225 pages/s Page size: 4096 bytes
Dans cette sortie, la multiplication de Dirty rate
et Page size
est supérieure à Memory bandwidth
, ce qui signifie que la VM génère des pages de mémoire sales plus rapidement que le réseau ne peut les migrer. Par conséquent, l'état de la VM sur l'hôte de destination ne peut pas converger avec l'état de la VM sur l'hôte source, ce qui empêche la migration de se terminer.
Fix
Pour améliorer les chances qu'une migration en direct bloquée se termine avec succès, vous pouvez prendre l'une des mesures suivantes :
Réduire la charge de travail de la VM, en particulier les mises à jour de la mémoire.
- Pour ce faire, arrêtez ou annulez les processus non essentiels dans le système d'exploitation invité de la machine virtuelle source.
Augmenter le temps d'arrêt prévu pour la migration en direct :
Affiche le temps d'arrêt maximum actuel à la fin d'une migration en direct pour la VM en cours de migration :
# virsh migrate-getmaxdowntime vm-name
Fixer un temps d'arrêt maximal plus élevé :
# virsh migrate-setmaxdowntime vm-name downtime-in-miliseconds
Plus le temps d'indisponibilité maximal est élevé, plus la migration a de chances de s'achever.
Passez la migration en direct en mode post-copy.
# virsh migrate-start-postcopy vm-name
Cela permet de s'assurer que les pages de mémoire de la VM peuvent converger vers l'hôte de destination et que la migration peut s'achever.
Cependant, lorsque le mode post-copie est actif, la VM peut ralentir de manière significative, en raison des demandes de pages distantes de l'hôte de destination vers l'hôte source. En outre, si la connexion réseau entre l'hôte source et l'hôte de destination cesse de fonctionner pendant la migration post-copie, certains processus de la VM peuvent s'arrêter en raison de pages de mémoire manquantes.
Par conséquent, n'utilisez pas la migration post-copie si la disponibilité de la VM est critique ou si le réseau de migration est instable.
- Si votre charge de travail le permet, suspendez la VM et laissez la migration se terminer comme une migration non-live. Cela augmente le temps d'arrêt de la VM, mais dans la plupart des cas, cela garantit que la migration se termine avec succès.
Prevention
La probabilité de réussir la migration d'une VM dépend des éléments suivants :
La charge de travail de la VM pendant la migration
- Avant de commencer la migration, arrêtez ou annulez les processus non essentiels dans le système d'exploitation invité de la VM.
La bande passante du réseau que l'hôte peut utiliser pour la migration
- Pour obtenir des résultats optimaux lors d'une migration en direct, la bande passante du réseau utilisé pour la migration doit être nettement supérieure au taux de génération de pages sales de la machine virtuelle. Pour savoir comment obtenir le taux de génération de pages sales de la VM, reportez-vous à la section Conditions préalables à la migration d'une machine virtuelle à l'aide de l'interface de ligne de commande.
- L'hôte source et l'hôte de destination doivent disposer d'un contrôleur d'interface réseau (NIC) dédié à la migration. Pour la migration en direct d'une VM avec plus de 1 To de mémoire, Red Hat recommande une carte d'interface réseau avec une vitesse de 25 Gb/s ou plus.
-
Vous pouvez également spécifier la bande passante réseau affectée à la migration en direct en utilisant l'option
--bandwidth
lorsque vous lancez la migration. Pour la migration de très grandes machines virtuelles, attribuez autant de bande passante que possible pour votre déploiement.
Le mode de migration en direct
- Le mode de migration par défaut pre-copy copie les pages de mémoire à plusieurs reprises si elles sont sales.
Post-copy la migration ne copie les pages de mémoire qu'une seule fois.
Pour permettre à votre migration en direct de passer en mode post-copie si la migration se bloque, utilisez l'option
--postcopy
avecvirsh migrate
lors du démarrage de la migration.
Le temps d'arrêt spécifié pour le déploiement
-
Vous pouvez l'ajuster pendant la migration en utilisant
virsh migrate-setmaxdowntime
comme décrit précédemment.
-
Vous pouvez l'ajuster pendant la migration en utilisant