Accueil🇫🇷Chercher

Migration de machines virtuelles

En virtualisation, la migration de machines virtuelles consiste à déplacer l'état d'une machine virtuelle, d'un hôte physique à un autre.

Migration VM

Il existe plusieurs raisons pour lesquelles il est nécessaire de migrer des systèmes d'exploitation, la plus importante étant l'équilibrage de la charge de travail sur les serveurs physiques. Il est également nécessaire de migrer des machines virtuelles lorsqu'un hôte physique est défectueux ou nécessite une maintenance.

Il faut également tenir compte du temps d'arrêt de la machine virtuelle lors de cette migration. La plus grosse charge de travail consistant à migrer la mémoire vive, il est nécessaire d'opter pour des stratégies de migration différentes en fonction des exigences.

Notions

La virtualisation est devenue une étape obligatoire dans le développement des clusters[N 1] et du cloud computing[N 2]. Les clouds mettent à disposition des machines virtuelles fonctionnant sur un ou plusieurs hôtes donnant l'illusion à l'utilisateur qu'il dispose d'une certaine quantité de mémoire et de CPU. Les ressources matérielles deviennent des services pour les utilisateurs qui ne payent que pour les ressources qu'ils utilisent, ces ressources se doivent d'être disponibles à la demande. Cette flexibilité implique une nécessité de pouvoir migrer les machines virtuelles d'un hôte à un autre en fonction des ressources nécessaires et disponibles[1].

Pouvoir migrer un système d'exploitation d'un hôte physique à un autre s'avère être quelque chose d'incontournable dans les data centers et dans les clusters. Cela permet de délimiter clairement le matériel du logiciel, de faciliter la gestion des pannes, de répartir de manière uniforme et automatique une charge de travail donnée et surtout de pouvoir organiser la maintenance des machines. Lorsqu'un hôte est surchargé et qu'il n'est plus capable de répondre à la demande, il est nécessaire de migrer l'état de la machine virtuelle vers un hôte plus puissant, ou moins surchargé, qui sera capable de prendre le relais. L'état de la machine virtuelle inclut la mémoire volatile et non-volatile, l'état des CPUs virtuels (VCPU), l'état des périphériques connectés ainsi que l'état des connexions actives[2] - [3].

Cependant la majorité des applications et des services reposant sur ces machines virtuelles ne peuvent pas subir d'arrêt prolongé. Il devient alors nécessaire de mettre en place des stratégies de migration différentes, en fonction des contrats de niveau de service établis avec les clients[4].

Stratégies

Migration Ă  froid

Cette stratégie est la plus basique, il est nécessaire de mettre la machine virtuelle hors tension afin de copier l'état de sa mémoire sur l'hôte cible. Elle est utilisée avec la stratégie de répartition de charge dynamique lorsque l'hôte reçoit plus de requêtes qu'il ne sait en gérer. La décision de migration se fait sur base d'un calcul des requêtes entrantes, de l'utilisation du processeur, des ressources disponibles sur l'hôte physique ainsi que de la consommation énergétique[2] - [5].

L'avantage principal de cette méthode est qu'elle n'impliquera aucune faute lors de la migration de la mémoire. La machine étant arrêtée, les services ne seront plus disponibles et la mémoire ne sera pas altérée sur l'hôte source. La machine une fois migrée pourra reprendre son activité dans le même état que lorsqu'elle s'est arrêtée[6].

Elle comporte par contre un désavantage certain. À partir du moment où la machine est arrêtée, les services fonctionnant sous celle-ci ne seront plus disponibles durant toute la durée de la migration. Ce qui pose évidemment des problèmes majeurs pour des applications nécessitant une haute disponibilité. De plus, la mémoire étant transférée entièrement sur l'hôte cible, la migration à froid provoque un ralentissement sur tout le réseau du cloud[6].

Migration Ă  chaud

La migration à chaud est une stratégie utilisée pour pallier les problèmes de la migration à froid. Elle permet à un hyperviseur de transférer, au travers d'une connexion TCP, une machine virtuelle d'un hôte à un autre sans être obligé de l’arrêter[7] - [8].

Migration de VM à chaud par pré-copie
  • Etape 0 : Pre-migration : La machine virtuelle est active sur l'hĂ´te source, durant cette Ă©tape l'hyperviseur est Ă  la recherche d'un hĂ´te de destination capable de gĂ©rer la machine Ă  migrer.
  • Etape 1 : Reservation : L'hyperviseur se charge de rĂ©server un conteneur sur l'hĂ´te distant en lui envoyant une requĂŞte de rĂ©servation en y indiquant les ressources nĂ©cessaires Ă  la machine virtuelle. Si la requĂŞte est acceptĂ©e par l'hĂ´te cible, la phase de prĂ©-copie peut dĂ©marrer.
  • Etape 2 : PrĂ©-copie itĂ©rative : Durant cette phase, l'hyperviseur copie les pages de mĂ©moire sur l'hĂ´te distant via TCP. Lors de ce transfert, si une page de mĂ©moire est modifiĂ©e sur l'hĂ´te source, elle est marquĂ©e comme "sale". Cette Ă©tape est rĂ©pĂ©tĂ©e, on ne copie plus que les pages qui ont Ă©tĂ© modifiĂ©es durant la prĂ©-copie prĂ©cĂ©dente. Le cycle s'arrĂŞte lorsqu'un nombre d'itĂ©rations maximum a Ă©tĂ© atteint (29 fois par dĂ©faut pour Xen) ou bien lorsque ce sont toujours les mĂŞmes pages qui sont salies. En moyenne, l'hyperviseur Xen itère 9 fois avant de passer Ă  l'Ă©tape suivante.
  • Etape 3 : ArrĂŞt et copie : Lors de cette Ă©tape, la machine virtuelle est arrĂŞtĂ©e sur l'hĂ´te source et les pages sales restantes sont copiĂ©es sur l'hĂ´te cible. C'est lors de cette Ă©tape que la machine virtuelle ne sera plus accessible. Elle ne sera active sur aucun hĂ´te. Cette pĂ©riode est appelĂ©e downtime[N 3], c'est ce temps lĂ  qu'il est important de minimiser[9].
  • Etape 4 : Validation : Lors de la validation, l'hĂ´te de destination indique Ă  l'hĂ´te source qu'il a bien rĂ©ceptionnĂ© toute l'image de la machine virtuelle. L'hĂ´te source envoie un accusĂ© de rĂ©ception Ă  l'hĂ´te de destination et libère les ressources bloquĂ©es par la VM. L'hĂ´te de destination est dorĂ©navant l'hĂ´te primaire.
  • Etape 5 : Activation : La machine virtuelle est activĂ©e sur l'hĂ´te cible et la table de routage du switch est mise Ă  jour[7] - [8] - [10] - [11] - [12].

Cette implémentation de la migration en temps réel, présentée par Brandford[13], est implémentée par la plupart des hyperviseurs (Xen, VMWare, KVM). Elle a l'avantage d'être simple et de ne pas nécessiter d'inter-connexion rapide entre les hôtes[8] - [12] - [14].

Il existe d'autres stratégies de migration de la mémoire lors de migration à chaud.

Migration par internet

La migration de machines virtuelles par internet est particulièrement utile dans le cadre des grilles informatiques, elle permet de reconfigurer une grille par migration sans pour autant en arrêter le service. Chaque ordinateur connecté à internet devient donc un hôte potentiel pour héberger une machine virtuelle[15].

En virtualisation, la mémoire de la machine virtuelle étant généralement stockée sur un système partagé (Network File System[N 4]), il est nécessaire que la machine cible ait également accès à l'espace de stockage de la machine source[15] - [16].

Migration de la mémoire

Phase d'Ă©chauffement

Durant cette phase, l'hyperviseur copie toutes les pages mémoire de l'hôte source à l'hôte cible alors que la machine virtuelle est toujours opérationnelle. Si une ou plusieurs pages mémoire sont modifiées, elles seront recopiées d'un hôte à un autre durant la phase itérative suivante jusqu'au moment où le taux de pages salies deviendra inférieur au taux de pages copiées[17].

Phase d'arrĂŞt et de copie

C'est lors de cette phase que la machine virtuelle est arrêtée sur l'hôte source, l'état de la machine et les dernières pages sales sont copiées sur l'hôte cible et la machine virtuelle est re-démarrée sur celui-ci. C'est le downtime de la VM, il ne dure en général que quelques millisecondes, dépendant du nombre de pages restant à copier[18]. L'enjeu principal de la migration est donc de minimiser ce downtime afin de donner au maximum l'illusion que la machine ne s'est jamais arrêtée[19].

La pré-copie a fait ses preuves pour les applications nécessitant beaucoup de lectures mémoire. Cependant, dans le cas d'applications qui écrivent sur la mémoire de manière intensive, cette approche de migration ne sera pas performante, dans les pires cas elle ne fonctionnera même pas[20].

Migration de mémoire par post-copie

Cette étape nécessite, dans un premier temps, l'arrêt du système sur l'hôte source. L'état du processeur est copié sur l'hôte cible et la machine est ensuite redémarrée sur l'hôte cible. Ensuite, les pages mémoire sont copiées à l'aide d'une combinaison de 4 techniques. La première, demand-paging[N 5], permet à l'hôte cible de demander une page mémoire manquante à l'hôte source, cette méthode implique inévitablement un ralentissement du système de par la lenteur du réseau. Active-push permet à l'hôte source d'envoyer à la cible les pages mémoire fautives qui n'ont pas encore été demandées par l'hôte cible. Le pre-paging[N 6] est un système permettant à l'hôte source de prédire la prochaine page fautive sur l'hôte cible en fonction des défauts de page récents. Dynamic self balooning[21] permet quant à lui de réduire le nombre de transferts des pages non allouées[22] - [23].

En post-copie le downtime est moins long qu'en pré-copie étant donné que seul l'état du CPU et du matériel, soit quelques Ko, doivent être migrés durant cette inactivité. Le temps total de migration est court et déterministe étant donné que les pages ne sont pas salies sur l'hôte source durant la migration[8].

La post-copie est plus optimisée pour les applications nécessitant beaucoup d'écritures en mémoire[20].

Migration de mémoire par post-copie hybride

En post-copie hybride, une seule phase de pré-copie est effectuée avant la phase de post-copie, de cette manière l'hôte cible dispose déjà de toute la mémoire, seules les pages sales devront être transférées en post-copie[8]. Pendant la copie des pages mémoire d'un hôte à un autre, la machine virtuelle continue de fonctionner sur l'hôte source. Une fois la copie effectuée, la machine virtuelle est stoppée, l'état du processeur et les pages modifiées sont copiées à leur tour sur la machine cible. La machine virtuelle est ensuite redémarrée sur l'hôte cible et la phase de post-copie commence. Ce système fonctionne bien pour les applications nécessitant un grand nombre de lectures mémoire, tout comme la migration par post-copie. Il fournit également un temps de migration déterministe pour les applications nécessitant un grand nombre d'écritures mémoire[23] - [24].

Stockage partagé

La mémoire de masse est, dans la majorité des cas, associée à une mémoire partagée de type NAS et ne nécessite donc pas d'être déplacée[3].

Problèmes et coûts liés à la migration

Il est possible d'évaluer la migration à chaud à l'aide de quatre mesures différentes[8] - [23]:

  1. Downtime
  2. Temps total de la migration
  3. Nombre total d'octets transférés
  4. DĂ©gradation du service

DĂ©fauts de pages

Lors de la migration de mémoire par pré-copie, plus les services écrivent sur la mémoire plus il y aura de défauts de pages. Ce nombre de défauts de page important impliquera par conséquent un downtime du système plus important[24].

Pour ce type de service il est donc préférable d'utiliser la migration par post-copie, pour laquelle les défauts de page n'entrent pas en compte lors de l'arrêt de la machine virtuelle. La migration de mémoire par post-copie hybride reste un choix judicieux pour ce type de service[8].

Conflits d’adressage

La migration par internet permet de transférer l'environnement d'exécution des machines virtuelles d'un cloud à un autre. Ce type de migration peut engendrer des problématiques d'adressage liées au changement de réseaux[25] - [26].

Chaque VM localisée dans un cloud définit un état réseau qui inclut une adresse IP ainsi qu'une liste des connexions ouvertes. Lors d'une migration sur le même réseau, une mémoire partagée peut résoudre le problème d'adressage en y stockant l'état réseau en vue d'une restauration sur l'hôte cible. Cependant lors d'une migration au travers d'internet, il est fort probable que la machine cible n'ait pas accès à cette mémoire partagée[27].

Lors d'une migration à chaud par Internet, il est nécessaire que le service soit maintenu. Cela implique que l'adresse IP publique de la VM reste la même. Il est également nécessaire que la migration n'interfère pas avec les protocoles de communication au niveau applicatif (TCP/UDP), ou avec la mémoire partagée[26] - [28].

Une des solutions à ces problèmes est d'utiliser un protocole d'IP mobile[29], permettant un déplacement d'un réseau d'IP vers un autre tout en gardant la même adresse IP ainsi que les connexions actives.

Une autre solution, proposée par Bradford[13], implique la résolution DNS. Lors de la migration, les VMs gardent leurs noms canoniques et la nouvelle adresse IP est enregistrée avec le nom du serveur. De cette manière la recherche d'une VM de par son nom canonique va permettre de résoudre la nouvelle adresse IP attribuée à la machine. La problématique de cette solution réside dans la gestion de ce changement d'IP au niveau applicatif[26].

Cloudnet[30], utilise une combinaison de réseaux privés en couche réseau 3 (réseau privé virtuel) et de service privé LAN en couche réseau 2 (Virtual Private LAN Service) pour fournir un routage, multipoint-à-multipoint, au travers différents réseaux à l'aide de ponts LANs[26].

Bibliographie

  • (en) W. Voorsluys, J. Broberg, S. Venugopal et R. Buyya, « Cost of Virtual Machine Live Migration in Clouds: A Performance Evaluation », Cloud Computing, vol. 5931, no 9,‎ , p. 254- 265 (DOI 10.1007/978-3-642-10665-1_23)
  • (en) S. Akoush, R. Sohan, A. Rice, A.W. Moore et A. Hopper, « Predicting the Performance of Virtual Machine Migration », Modeling, Analysis & Simulation of Computer and Telecommunication Systems (MASCOTS), 2010 IEEE International Symposium on,‎ , p. 37 - 46 (ISSN 1526-7539, DOI 10.1109/MASCOTS.2010.13)
  • (en) M. Mishra, A. Das, P. Kulkarni et A. ahoo, « Dynamic resource management using virtual machine migrations », Communications Magazine, IEEE, vol. 50, no 9,‎ , p. 34 - 40 (ISSN 0163-6804, DOI 10.1109/MCOM.2012.6295709)
  • (en) C. Clark, Keir Fraser, Steven Hand, Jacob Gorm Hansen, Eric Jul, Christian Limpach, Ian Pratt et Andrew Warfield, « Live Migration of virtual machines », Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation, vol. 2,‎ , p. 273-286 (lire en ligne)
  • (en) Eric. Harney, Sebastien. Goasguen, Jim Martin, Mike Murphy et Mike Westall, « The efficacy of live virtual machine migrations over the internet », Proceedings of the 2nd international workshop on Virtualization technology in distributed computing, no 8,‎ , p. 34 - 40 (ISBN 978-1-59593-897-8, DOI 10.1145/1408654.1408662)
  • (en) Dave Stuti et Mehta Prashant, « Role of Virtual Machine Live Migration in Cloud Load Balancing », IOSR Journal of Computer Engineering, vol. 15, no 5,‎ , p. 69-72 (OCLC 5525734236)
  • (en) Qiang Huang, Fengqian Gao, Rui Wang et Zhengwei Qi, « Power Consumption of Virtual Machine Live Migration in Clouds », Communications and Mobile Computing (CMC), Third International Conference on,‎ , p. 122 - 125 (ISBN 978-1-61284-312-4, DOI 10.1109/CMC.2011.62)
  • (en) Rajkumar Buyya, James Broberg et Andrzej M. Goscinski, Cloud Computing : Principles and Paradigms, John Wiley & Sons, , 664 p. (ISBN 978-1-118-00220-9, lire en ligne)
  • (en) Constantine P. Sapuntzakis, Ramesh Chandra, Ben Pfaff et Jim Chow, « Optimizing the Migration of Virtual Computers », SIGOPS Oper. Syst. Rev., vol. 36,‎ , p. 377–390 (ISSN 0163-5980, DOI 10.1145/844128.844163, lire en ligne, consultĂ© le )
  • (en) Xiang Zhang, Zhigang Huo, Jie Ma et Dan Meng, « Exploiting Data Deduplication to Accelerate Live Virtual Machine Migration », Cluster Computing (CLUSTER), 2010 IEEE International Conference on,‎ , p. 88-96 (DOI 10.1109/CLUSTER.2010.17, lire en ligne, consultĂ© le )
  • (en) K.Z. Ibrahim, S. Hofmeyr, C. Iancu et E. Roman, « Optimized pre-copy live migration for memory intensive applications », Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis,‎ , p. 1-11 (DOI 10.1145/2063384.2063437, lire en ligne, consultĂ© le )
  • (en) Robert Bradford, Evangelos Kotsovinos, Anja Feldmann et Harald Schiöberg, « Live Wide-area Migration of Virtual Machines Including Local Persistent State », Proceedings of the 3rd international conference on Virtual execution environments, ACM, vEE '07,‎ , p. 169–179 (ISBN 978-1-59593-630-1, DOI 10.1145/1254810.1254834, lire en ligne, consultĂ© le )
  • (en) Rajkumar Buyya, James Broberg et Andrzej M. Goscinski, Cloud Computing : Principles and Paradigms, John Wiley & Sons, , 664 p. (ISBN 978-1-118-00220-9, lire en ligne)
  • (en) M. Kozuch et M. Satyanarayanan, « Internet suspend/resume », Mobile Computing Systems and Applications, 2002. Proceedings Fourth IEEE Workshop on,‎ , p. 40-46 (DOI 10.1109/MCSA.2002.1017484, lire en ligne, consultĂ© le )
  • (en) Aidan Shribman et Benoit Hudzia, Pre-Copy and Post-Copy VM Live Migration for Memory Intensive Applications, Springer Berlin Heidelberg, coll. « Lecture Notes in Computer Science », (ISBN 978-3-642-36948-3 et 978-3-642-36949-0, DOI 10.1007/978-3-642-36949-0_63#page-1, lire en ligne), p. 539-547
  • (en) Stuart Hacking et BenoĂ®t Hudzia, « Improving the Live Migration Process of Large Enterprise Applications », Proceedings of the 3rd international workshop on Virtualization technologies in distributed computing, ACM, vTDC '09,‎ , p. 51–58 (ISBN 978-1-60558-580-2, DOI 10.1145/1555336.1555346, lire en ligne, consultĂ© le )
  • (en) F.F. Moghaddam et M. Cheriet, « Decreasing live virtual machine migration down-time using a memory page selection based on memory change PDF », Networking, Sensing and Control (ICNSC), 2010 International Conference on,‎ , p. 355-359 (DOI 10.1109/ICNSC.2010.5461517, lire en ligne, consultĂ© le )
  • (en) A. B. M. Moniruzzaman, « Analysis of Memory Ballooning Technique for Dynamic Memory Management of Virtual Machines (VMs) », arXiv:1411.7344 [cs],‎ (lire en ligne, consultĂ© le )
  • (en) Michael R. Hines, Umesh Deshpande et Kartik Gopalan, « Post-copy Live Migration of Virtual Machines », SIGOPS Oper. Syst. Rev., vol. 43,‎ , p. 14–26 (ISSN 0163-5980, DOI 10.1145/1618525.1618528, lire en ligne, consultĂ© le )
  • (en) Michael R. Hines et Kartik Gopalan, « Post-copy Based Live Virtual Machine Migration Using Adaptive Pre-paging and Dynamic Self-ballooning », Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, ACM, vEE '09,‎ , p. 51–60 (ISBN 978-1-60558-375-4, DOI 10.1145/1508293.1508301, lire en ligne, consultĂ© le )
  • (en) András G. ValkĂł, « Cellular IP: A New Approach to Internet Host Mobility », SIGCOMM Comput. Commun. Rev., vol. 29,‎ , p. 50–65 (ISSN 0146-4833, DOI 10.1145/505754.505758, lire en ligne, consultĂ© le )
  • (en) Timothy Wood, K. K. Ramakrishnan, Prashant Shenoy et Jacobus van der Merwe, « CloudNet: Dynamic Pooling of Cloud Resources by Live WAN Migration of Virtual Machines », Proceedings of the 7th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, ACM, vEE '11,‎ , p. 121–132 (ISBN 978-1-4503-0687-4, DOI 10.1145/1952682.1952699, lire en ligne, consultĂ© le )
  • (en) S. Sahni et V. Varma, « A Hybrid Approach to Live Migration of Virtual Machines », Cloud Computing in Emerging Markets (CCEM), 2012 IEEE International Conference on,‎ , p. 1-5 (DOI 10.1109/CCEM.2012.6354587, lire en ligne, consultĂ© le )
  • (en) Changyeon Jo, Erik Gustafsson, Jeongseok Son et Bernhard Egger, « Efficient Live Migration of Virtual Machines Using Shared Storage », Proceedings of the 9th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, ACM, vEE '13,‎ , p. 41–50 (ISBN 978-1-4503-1266-0, DOI 10.1145/2451512.2451524, lire en ligne, consultĂ© le )
  • (en) S.A.R. Shah, A.H. Jaikar et Seo-Young Noh, « A performance analysis of precopy, postcopy and hybrid live VM migration algorithms in scientific cloud computing environment », High Performance Computing & Simulation (HPCS), 2015 International Conference on,‎ , p. 229-236 (DOI 10.1109/HPCSim.2015.7237044, lire en ligne, consultĂ© le )
  • (en) A. Beloglazov et R. Buyya, « Energy Efficient Allocation of Virtual Machines in Cloud Data Centers », Cluster, Cloud and Grid Computing (CCGrid), 2010 10th IEEE/ACM International Conference on,‎ , p. 577-578 (DOI 10.1109/CCGRID.2010.45, lire en ligne, consultĂ© le )
  • (en) William Voorsluys, James Broberg, Srikumar Venugopal et Rajkumar Buyya, Cost of Virtual Machine Live Migration in Clouds : A Performance Evaluation, Springer Berlin Heidelberg, coll. « Lecture Notes in Computer Science », (ISBN 978-3-642-10664-4 et 978-3-642-10665-1, DOI 10.1007/978-3-642-10665-1_23#page-1, lire en ligne), p. 254-265
  • Djawida Dib, Migration dynamique d'applications rĂ©parties virtualisĂ©es dans les fĂ©dĂ©rations d'infrastructures distribuĂ©es, (lire en ligne)

Notes et références

Notes

  1. Grappe de serveurs
  2. Informatique en nuage
  3. Taux d'indisponibilité
  4. Système de fichiers en réseau
  5. Demande de pagination
  6. Pré-pagination

Références

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.