La virtualisation, la technologie du Cloud Computing
La virtualisation est la clé de voûte du Cloud Computing. Elle est présente dans tous les modèles de services. Le concept de la virtualisation est apparu dans les années 1960 [19]. Il a été développé par IBM afin d’utiliser efficacement les environnements matériels en les partitionnant en plusieurs environnements virtuels. La virtualisation, en informatique, est une technologie qui consiste à créer une version virtuelle d’un système d’exploitation, un périphérique de stockage, des ressources réseau, etc. Elle simplifie la gestion des ressources et des infrastructures en nuage, améliore l’utilisation des ressources en les partageant entre plusieurs utilisateurs et réduit les coûts en termes d’énergie et d’hébergement. Il existe plusieurs méthodes de virtualisation. Ces méthodes ont des objectifs différents et peuvent être classées en trois types.
Virtualisation des serveurs
La virtualisation des serveurs [20], [19] est une technologie qui permet d’exécuter en parallèle plusieurs systèmes différents sur un même serveur physique. C’est la consolidation de plusieurs serveurs virtuels appelés virtuelles machines (VM) en un seul serveur physique. La virtualisation des serveurs peut être basée sur un hyperviseur ou sur un conteneur. Si la virtualisation est réalisée via un hyperviseur (par exemple, Xen [21], VMware ESXi [22], [23], Microsoft Hyper-V [24], [25] et KVM [26].), chaque machine virtuelle (VM) aussi appelée instance, possède un système d’exploitation (OS) distinct (appelé OS invité) et ses propres ressources virtuelles telles que le processeur virtuel, la carte réseau virtuelle, la mémoire virtuelle et les disques virtuels [1]. Ces VMs sont indépendantes et isolées les unes des autres. De ce fait, si pour une raison particulière une VM devenait instable ou tombait en panne, cela n’impactera pas le bon fonctionnement des autres VMs. Elles sont gérés par l’hyperviseur appelé un moniteur de machines virtuelles (VMM) qui représente une couche d’abstraction en découplant la couche matérielle de la couche logicielle. La virtualisation basée sur un hyperviseur pourrait être classifié en trois catégories : virtualisation complète, paravirtualisation et virtualisation assistée par matériel. Ces catégories sont différées par la manière dont les OS hôtes et invités sont pris en charge et interagissent avec l’hyperviseur. Contrairement à la virtualisation basée sur l’hyperviseur, les solutions basées sur les conteneurs telles que Docker et LXC sont légères car elles sont au niveau applicatif. Chaque serveur physique exécute un noyau avec différents conteneurs isolés installés dessus.
Virtualisation des serveurs : Avantages inconvénients
L’avantage d’héberger plusieurs VMs dans un seul serveur est d’optimiser l’exploitation des ressources de ce dernier en mutualisant les services exécutés. De plus, la virtualisation dispose aussi de plusieurs avantages :
— sécurité : Les machines virtuelles hébergées sur le même serveur sont isolées grâce au découplage entre applications et système d’exploitation et entre système d’exploitation et matériel.
— disponibilité : Les VMs peuvent également être migrées d’un serveur à un autre sans qu’il soit nécessaire de la stopper. Si un serveur tombe en panne, il est possible de déplacer les VMs automatiquement et rapidement.
— flexibilité : le déploiement de nouvelles instances et ressources de système est simple et rapide ce qui permet de faire face à une demande élastique.
— coût : la réduction des charges d’exploitation (OPEX) au travers la diminution du nombre de machines physiques mises en place. Ainsi réduire le nombre de machines physiques permet de réduire les coûts d’achat de matériel, les coûts de maintenance, l’encombrement (gain de place dans les centres de données) et indirectement les coûts d’énergie.
Néanmoins, la virtualisation des serveurs dispose des inconvénients et des défis à relever.
— complexité de l’administration : il est important de trouver des politiques de gestion efficaces pour s’adapter de manière agile à l’explosion de nombre de machines virtuelles.
— pannes matérielles : les machines virtuelles hébergées sur un serveur sont impactés par une défaillance de ce dernier.
— dégradations des performances : Une application s’exécutant à l’intérieur d’une machine virtuelle n’a pas les mêmes performances que celle qui est exécutée sur une machine non virtualisée (natif ) [28] Aussi, ces dégradations sont causées par le problème du vieillissement logiciel.
Les différents types d’hyperviseurs
Un hyperviseur est une couche logicielle permettant d’héberger des VMs sur une même machine physique. Il gère le cycle de vie de la VM (création, configuration, exploitation et destruction). De plus, il gère l’allocation des ressources physiques aux VMs. On distingue deux types d’hyperviseur .
— Les Hyperviseurs de type 1 : c’est un logiciel installé directement sur le matériel informatique. Il est dit un aussi hyperviseur « natifs » ou « bare metal ». Ce type d’hyperviseur contrôle le matériel et le ou les systèmes d’exploitation invités. C’est la méthode de la virtualisation la plus performante qui est utilisée pour virtualiser l’infrastructure des centres de données Les hyperviseurs de type 1 les plus répandus sont VMware ESX/ESXi [30], Microsoft Hyper-V [31], XEN [32] et KVM [33].
— Les Hyperviseurs de type 2 : Contrairement aux hyperviseurs de type 1, les hyperviseurs de type 2 est un logiciel qui s’installe et s’exécute sur un système d’exploitation existant. C’est un hyperviseur simple à utiliser et à installer. Ainsi, l’installation d’une VM est rapide et facile. En revanche, cet hyperviseur est moins performant que celui de type 1 car il y a moins de ressources disponibles pour les VMs. Les hyperviseurs de type 2 les plus connus sont VMware Workstation/Player [34], Microsoft Virtual PC [35] et Oracle VirtualBox .
Virtualisation du stockage
Le concept de virtualisation du stockage est similaire à celui de la virtualisation de serveurs. Il consiste à regrouper la capacité de stockage de plusieurs appareils de stockage en réseau sous forme d’un seul appareil de stockage (virtuel) administré depuis une console centrale. Cela offre une grande flexibilité pour augmenter la capacité de stockage en fonction des besoins et une facilité de migration des données. Ainsi l’utilisateur a un vue globale sur l’intégralité du stockage permettant une gestion simple des données.
Virtualisation de réseau
La virtualisation de réseau permet d’exécuter des réseaux logiques sur un réseau physique partagé. De la même manière que la virtualisation de serveurs qui virtualise les ressources (vCPU et vRAM), la virtualisation de réseau virtualise les cartes d’interface de réseau (NIC), des commutateurs et routeurs ainsi des fonctionnalités réseau, telles que des équilibreurs de charge et des pare-feu. Dans les environnements du Cloud, la virtualisation du réseau est souvent associée à la virtualisation des ressources pour fournir aux utilisateurs des plates-formes virtualisées. De nombreuses technologies ont été développées pour fournir la virtualisation de réseau. Parmi les technologies les plus courantes, nous citons Vlan, VPN, VXlan,…
Sûreté de fonctionnement et Tolérances aux pannes
La complexité croissante des systèmes, des protocoles, des architectures des réseaux de communication et des services, et les exigences sous-jacentes en termes de performance, de sûreté de fonctionnement et de résilience ont davantage catalysé l’intérêt porté aujourd’hui à leur modélisation et à leur vérification. L’analyse de performance et la sûreté de fonctionnement représentent aujourd’hui des disciplines scientifiques en plein essor. C’est un concept intégrateur qui englobe un ensemble d’attributs qui permettent d’exprimer les propriétés attendues du système, évaluer les risques potentiels, et tenter à minimiser leurs conséquences lorsqu’elles se présentent. Ces attributs sont :
— La fiabilité, c’est la capacité du système d’assurer la continuité de service correct pendant une durée donnée dans des conditions données.
— la disponibilité, représente la probabilité que le système soit opérationnel à un instant donné
— la sécurité, C’est l’absence d’accidents catastrophiques sur l’utilisateur ou son environnement
— L’intégrité concerne la non existence d’une mauvaise modification du système.
— La maintenabilité c’est la souplesse du système vis-à- vis les modifications et des réparations qu’il peut subir.
Tolérances aux pannes
Malgré que les multiples technologies utilisées dans le cloud computing afin d’assurer un service continu aux utilisateurs, ce paradigme est toujours vulnérable à un grand nombre de pannes système. Ainsi, les fournisseurs de service sont de plus en plus préoccupés par la fiabilité et la disponibilité des services. La tolérance aux pannes et la résilience sont des moyens efficaces pour répondre à ces problèmes. Dans les centres de données, la technologie de virtualisation est utilisée pour provisionner des ressources informatiques (par exemple, en fournissant des machines virtuelles avec une quantité donnée de CPU, de mémoire et de capacité de stockage).// Par conséquent, un hôte physique est souvent utilisé comme un ensemble de plusieurs hôtes virtuels par le fournisseur de services. Cependant, l’utilisation de composants de base expose le matériel à des conditions pour lesquelles il n’a pas été conçu à l’origine. De plus, en raison de la nature extrêmement complexe de l’infrastructure sous-jacente, même les centres de données soigneusement conçus sont sujets à un grand nombre de pannes. Ces défaillances réduisent évidemment la fiabilité et la disponibilité globales du service de cloud computing. En conséquence, la tolérance aux pannes est d’une importance primordiale pour les utilisateurs ainsi que pour les prestataires de services pour assurer un fonctionnement correct et continu du système même en présence d’un nombre inconnu et imprévisible de pannes. En général, une panne ou une faille ( un échec) représente la condition dans laquelle le système ne remplit pas sa fonctionnalité prévue ou le comportement attendu. Un échec se produit en raison d’une ou plusieurs erreurs. Dans l’environnement de Cloud Computing, une défaillance dans une couche donnée a normalement un impact sur les services offerts par les couches supérieures. Par exemple, une défaillance dans un middleware au niveau de l’utilisateur (PaaS) peut produire des erreurs dans les services logiciels construits dessus (applications SaaS). De même, les pannes du matériel physique ou de la couche IaaS auront un impact sur la plupart des services PaaS et SaaS. Cela implique que l’impact des pannes dans la couche IaaS ou le matériel physique est significativement élevé. Pour remédier à ces problèmes,il est important de développer des solutions qui permettent de remplir les fonctions du système et d’éviter la faille totale du système même en présence de pannes. Des techniques de tolérance aux pannes ont été mises en œuvre. La tolérance aux pannes est définie comme la capacité du système à tolérer les défauts de façon à ne pas engendrer des interruptions de service. Cela implique qu’il est de la plus haute importance de comprendre clairement et de définir ce qui constitue le comportement correct du système afin de définir les caractéristiques de défaillance et ainsi un système tolérant aux pannes sera développé. Des multiples techniques ont été conçues comme la prévention des pannes, le masquage des pannes et le recouvrement après panne, afin de prévenir les défauts et d’éviter l’interruption du système. La préventions des pannes utilisent des méthodes d’implémentation qui empêchent les erreurs introduites lors de la phase du développement. On peut citer la technique de migration comme une technique de prévention des pannes. Le masquage des pannes est une technique proactive qui a comme objectif de réduire la probabilité que le système tombe en panne en dupliquant les services et serveurs sur différents dispositifs. Ainsi la panne est masquée par la duplication en cas de faille du système. La méthode du recouvrement après panne consiste à stocker l’état du système périodiquement sur un support de stockage stable et fiable. Une fois le système tombe en panne, celui ci sera redémarré à partir du point de sauvegarde.
|
Table des matières
1 Introduction Générale
1.1 Contexte et motivations
1.2 Contributions de cette thèse
1.3 Organisation du manuscrit
1.4 Productions scientifiques
2 Contexte
2.1 Le Cloud Computing
2.1.1 Définition
2.1.2 Les niveaux de services
2.1.3 Modèles de déploiement
2.1.4 Les systèmes IaaS
2.2 La virtualisation, la technologie du Cloud Computing
2.2.1 Virtualisation des serveurs
2.2.2 Virtualisation du stockage
2.2.3 Virtualisation de réseau
2.3 Sûreté de fonctionnement et Tolérances aux pannes
2.3.1 Tolérances aux pannes
2.3.2 La tolérances aux pannes dans le Cloud
2.4 Vieillissement et rajeunissement logiciel dans les SVSs
2.4.1 Vieillissement logiciel
2.4.2 Rajeunissement logiciel
2.4.3 Vieillissement et rajeunissement dans le cloud
2.4.4 Corrélation entre rajeunissement VMM et rajeunissement VM
2.5 Gestion énergétique dans le cloud computing
2.5.1 Problème de gaspillage d’énergie et des ressources
2.5.2 Techniques de gestion dynamique de l’énergie
2.6 Les réseaux programmables
2.6.1 Les réseaux définis par logiciels (SDN)
2.6.2 La virtualisation des fonctions réseau (NFV)
2.7 Conclusion
3 État de l’art sur la modélisation stochastique pour l’analyse de la performance des systèmes
3.1 La modélisation
3.1.1 Processus de la modélisation
3.1.2 Formalismes de modélisation
3.2 Résolution du modèle
3.2.1 Les méthodes analytiques
3.2.2 Les méthodes numériques
3.3 Conclusion
4 Contribution 1 : Performabilité et gestion de l’énergie pour les systèmes de serveurs virtualisés (SVSs)
4.1 Travaux annexes
4.2 Analyse de vieillissement
4.2.1 Analyse de vieillissement basant sur la modélisation
4.2.2 Analyse de vieillissement basant sur des mesures
4.2.3 Techniques d’analyse hybride
4.3 Corrélation entre vieillissement logiciel et charge de travail
4.4 Analyse de Rajeunissement logiciel
4.5 Contributions
4.6 Description du modèle versatile SVS
4.6.1 Hypothèses
4.6.2 Modèle de disponibilité SVS avec rajeunissement
4.7 Paramètres et métriques du modéle SVS
4.7.1 Paramètres de trafic
4.7.2 Facteur de vieillissement du SVS (AF)
4.7.3 Métriques de performabilité
4.7.4 Métriques de puissance
4.7.5 Métriques de puissance-performance
4.8 Résultats numériques
4.8.1 Impact de la charge de travail sur le facteur de vieillissement (AF)
4.8.2 Impact de la charge de travail sur les métriques des modèles SVS SRN polyvalents
4.8.3 Impact de la charge de travail sur les mesures de puissance
4.8.4 Impact de IDC sur les métriques des modèles SVS SRN polyvalents
4.9 Conclusion
5 Modélisation des performances du commutateur virtuel avec arrivées groupées
6 Conclusion
En utilisant des technologies telles que docker et kubernetes , les entreprises peuvent non seulement créer des environnements virtuels flexibles et évolutifs, mais aussi gérer ces environnements avec une grande efficacité. La virtualisation des poste de travail, souvent appelée virtual desktop infrastructure univirtual permet aux employés de se connecter à un poste de travail univirtual virtuel depuis n’importe où, facilitant ainsi le télétravail et améliorant la productivité tout en centralisant la gestion et la sécurité des poste de travail. Parallèlement, la virtualisation des serveurs permet de maximiser l’utilisation des ressources physiques en créant plusieurs machine virtuelle sur un serveur unique.