Virtualisation et Cloud Computing PDF
Document Details
Uploaded by InventiveTechnetium
ISIMG
Ahmed ABOUD
Tags
Summary
This document provides a course plan on virtualization and cloud computing. The content covers topics such as virtualization introductions, hypervisors, virtualization techniques, cloud computing concepts, and more. It's intended for a graduate-level course.
Full Transcript
- Virtualisation et Cloud Computing - Xen™ vmware ESXI KVM docker ORACLE VirtualBox Ahmed ABOUD ISIMG [email protected] ISIMG 2023/2024. Semestre 2 Plan du cours ◆ Chapitre 1: La virtualisation ◆ Introduction a la virtualisation ◆ Comprendre la virtualisation ◆ Les hyperviseurs ◆ les techniques d...
- Virtualisation et Cloud Computing - Xen™ vmware ESXI KVM docker ORACLE VirtualBox Ahmed ABOUD ISIMG [email protected] ISIMG 2023/2024. Semestre 2 Plan du cours ◆ Chapitre 1: La virtualisation ◆ Introduction a la virtualisation ◆ Comprendre la virtualisation ◆ Les hyperviseurs ◆ les techniques de virtualisation ◆ Les principales solutions ◆ Les domaines de la virtualization ◆ Chapitre 2: Cloud Computing ◆ Introduction ◆ Définition et caractéristiques ◆ Les modèles de déploiement ◆ Les modèles de service ◆ Les principaux fournisseurs ISIMG Dr. ABOUD A. 2 Objectifs Être capable de : - Comprendre les principes de la VIRTUALISATION. - Comprendre ce qu'est la virtualisation, ses enjeux, ses contraintes. - Comprendre le contexte du Cloud Computing (notions et concepts) - Découvrir: - les types de cloud - Les architectures - Les types de déploiement - Les principaux fournisseurs Répondre à la question : - Pourquoi et Comment ça marche ISIMG Dr. ABOUD A. 3 Chapitre 1: La Virtualisation principes, techniques et domaines ISIMG Dr. ABOUD A. 4 Section 1: Introduction a la virtualisation ISIMG Dr. ABOUD A. 5 Introduction Définition du concept de Virtualisation Définition La virtualisation, en informatique, désigne l'action de créer une version virtuelle (plutôt que réelle) de quelque chose, y compris, mais sans s'y limiter, une plateforme matérielle, un système d'exploitation (OS), un dispositif de stockage ou des ressources de réseau informatique. • Systèmes virtuels - Abstraire les composants physiques à l'aide d'objets logiques - Lier dynamiquement des objets logiques à des configurations physiques • Exemples - Réseau - Réseau local virtuel (VLAN), Réseau privé virtuel (VPN) - Stockage - Réseau de stockage (SAN) - Ordinateur - Machine virtuelle (VM), simulateur • La virtualisation permet de: - 1 élément physique apparaît comme plusieurs éléments logiques - simplifier l'infrastructure IT et optimiser le taux d'utilisation des ressources IT - Plusieurs éléments physiques apparaissent comme 1 élément logique ISIMG Dr. ABOUD A. 6 Introduction Définition du concept de Virtualisation 1 élément physique, N éléments logiques ISIMG Dr. ABOUD A. 7 Introduction Définition du concept de Virtualisation N éléments physiques, 1 élément logique RAID ISIMG Dr. ABOUD A. 8 Introduction Historique Cloud computing Π INTERNET OF THINGS Pupitre d'un modèle IBM 360/67 1960 1970 1980 1990 2000 2010 Aujourd'hui L'ère des Mainframes - L'informatique centralisée - Première virtualisation - Thin client L'arrivée du PC - L'informatique décentralisée Les choses se compliquent - La prolifération des PC - Le cloud s'installe... - L'informatique centralisée Retour à la virtualisation et aux Thin clients 5G et L'internet des objets - IoT et loE - SDN - NFV ISIMG Dr. ABOUD A. 9 Introduction Les 4 Raisons de Virtualiser ISIMG Dr. ABOUD A. 10 Partager Consolider Emuler Isoler Introduction Intérêts La virtualisation séduit autant les professionnels IT que les enseignants pour de multiples raisons : - Développement - Tracer les programmes : faire du « débogage » - Tester la portabilité : plusieurs systèmes d'exploitation sur un ordinateur - Déploiement et migration de machines virtuelles - Possibilité de créer des points de restauration de machines virtuelles par le biais de <<Snapshots » : image d'une machine virtuelle à un instant donnée. - Enseignement - Isoler des machines entre elles : empêcher des étudiants de communiquer entre eux lors de devoirs, ou d'endommager des machines - Sécurité par l'isolation - S'emprisonner dans un répertoire d'un système hôte, où l'accès à ce dernier est impossible vers les autres répertoires - Restreindre l'accès à une partie de la mémoire - Jail (<< prison ») : enfermement dans une machine virtuelle avec un accès restreint à la mémoire ISIMG Dr. ABOUD A. 11 Introduction Bénéfices de la virtualisation Réduction des coûts CAPEX/OPEX (Rationalisation) - Les entreprises distinguent en principe deux types de coûts : - CAPEX (Capital Expenditures) - OPEX (Operational Expenditures) - Dans un tel contexte, la virtualisation permet aux responsables informatiques de consentir à la modernisation du système d'information de l'entreprise, tout en réduisant les coûts et en satisfaisant aux exigences mentionnées plus haut. ISIMG La virtualisation fait résolument partie des leviers permettant de réduire les coûts CAPEX/OPEX. Dr. ABOUD A. 12 Introduction Bénéfices de la virtualisation - Diminution du nombre de serveurs(concentration et consolidation) La virtualisation permet en tout premier lieu d'éviter d'avoir à acheter du matériel à chaque fois qu'un nouveau système doit être déployé. Serveur virtuel Spécification Serveur destiné à la virtualisation Serveur (physique) (physique) Coût 14'500.- Euro 1'800 Euro 0 Unité de rack 4U 1U 0 Puissance (watts) 1570 670 0 Interfaces réseau 2 2 0 Comparaison de coûts de machines physiques et virtuelles ISIMG Introduction Bénéfices de la virtualisation Dr. ABOUD A. 13 Tower Server Rack Server Blade Server ISIMG Dr. ABOUD A. 14 Introduction Bénéfices de la virtualisation - Diminution du nombre de serveurs(concentration et consolidation) La virtualisation permet en tout premier lieu d'éviter d'avoir à acheter du matériel à chaque fois qu'un nouveau système doit être déployé. Considérons maintenant les mêmes données mais avec une infrastructure comprenant dix serveurs : Serveur virtuel Spécification Serveur destiné à la Serveur virtualisation (physique) (physique) Coût 14'500.- Euro 18'000 Euro 0 Unité de rack 4U 8U 0 Puissance (watts) 1570 6700 0 Interfaces réseau 2 + 10 20 10 ISIMG Comparaison de coûts de machines physiques et virtuelles Introduction Bénéfices de la virtualisation - Diminution du matériel réseau ISIMG Dr. ABOUD A. 15 • • La virtualisation permet également de limiter l'achat de composants réseau puisque les machines virtuelles sont capables de communiquer au sein d'un même hôte physique, elles n'ont nul besoin de dispositifs tels que routeur ou commutateur. De plus, les machines virtuelles peuvent être configurées pour être présentes sur la même carte réseau ou regroupées au sein d'une même interface, ce qui permet là aussi de diminuer le nombre de composants réseau. Dr. ABOUD A. 16 Introduction Bénéfices de la virtualisation - Réduction de la consommation électrique - Diminution des besoins en climatisation - Diminution de la consommation d'espace - Agrégation des charges d'inactivité - Optimisation de la restauration - Optimisation de la sauvegarde - Amélioration de la sécurité ISIMG Dr. ABOUD A. 17 Introduction Définitions et Terminologies (Virtualisation, Machine Virtuelle, Hyperviseur) Définition 1: Virtualisation (définition générale) elle a pour but de donner un environnement système au programme afin de le faire croire être dans un environnement matériel. Définition 2: Machine virtuelle (VM - Virtual Machine) le sens original de machine virtuelle est la création de plusieurs environnements d'exécution sur un seul ordinateur, dont chacun émule l'ordinateur hôte. Cela fournit à chaque utilisateur l'illusion de disposer d'un ordinateur complet alors que chaque machine virtuelle est isolée des autres. Le logiciel hôte qui fournit cette fonctionnalité est souvent dénommée superviseur ou hyperviseur. Ce concept va plus loin que celui des simples temps partagées où chaque utilisateur dispose seulement d'un espace de développement personnel, et non d'une machine simulée entière. Définition 3: Hyperviseur (ou VMM - Virtual Machine Monitor) c'est le logiciel hôte qui fournit la fonctionnalité d'exécuter une machine virtuelle sur un système. Le système d'exploitation communique directement avec le matériel. Définition 4: Le système hôte (host) est l'OS principal de l'ordinateur. Définition 5: Le système invité (guest) est l'OS installé à l'intérieur d'une machine virtuelle. Définition 6: Un ordinateur virtuel est aussi appelé serveur privé virtuel (VPS) ou environnement virtuel (Virtual Environment ou VE) ISIMG Dr. ABOUD A. 18 Section 2: Comprendre la virtualisation ISIMG Compredre la virtualisation Dr. ABOUD A. 19 Comment fonctionnent les machines virtuelles ? ISIMG Dr. ABOUD A. 20 Compredre la virtualisation Comment fonctionnent les machines virtuelles ? Commencez par une question plus "simple" : comment fonctionnent les machines (ordinaires)? ISIMG Matériel physique - Processeurs, mémoire, chipset, bus et périphériques d'E/S, etc. application application system call interface - Ressources physiques souvent sous- exploitées operating system hardware / software interface Logiciel hardware Dr. ABOUD A. 21 - Étroitement couplé au matériel - Image active unique du système d'exploitation - Le système d'exploitation contrôle le matériel Compredre la virtualisation Comment fonctionnent les machines virtuelles ? Qu'est-ce qu'un système d'exploitation ? C'est juste un programme! - vous l'écrivez dans un langage (C/C++), et le compilez en un programme - il s'exécute comme n'importe quel autre programme, mais dans un mode privilégié (superviseur) du CPU - cela lui permet d'interagir avec les périphériques matériels en utilisant des instructions "sensibles". application application system call interface En regardant vers le bas : operating system hardware/software interface hardware - un système d'exploitation émet des instructions pour contrôler les périphériques matériels - II le fait pour allouer et gérer les ressources matérielles au profit des programmes. Regarder vers le haut : - Le système d'exploitation donne aux applications une interface de programmation de haut niveau (interface d'appel système). - Le système d'exploitation met en œuvre cette interface en utilisant des dispositifs matériels de bas niveau. - Ouverture/lecture/fermeture de fichier vs lecture/écriture de bloc de disque ISIMG Dr. ABOUD A. 22 Compredre la virtualisation Comment fonctionnent les machines virtuelles ? Qu'est-ce qu'une application ? application application ISIMG operating system hardware system call interface hardware / software interface - Un programme qui s'appuie sur l'interface d'appel système. - Pendant son exécution, le CPU fonctionne en mode non privilégié (utilisateur) - Une instruction spéciale ("intc" sur x86) permet à un programme d'appeler le système d'exploitation. - le programme utilise les appels système pour manipuler le système de fichiers, la pile réseau, etc. - Le système d'exploitation fournit à un programme l'illusion de sa propre mémoire. - Le matériel Memory management unit(MMU) permet au système d'exploitation de définir l'espace d'adressage virtuel du programme. Cette approche est-elle sécurisée ? - La plupart des instructions sont exécutées directement sur le CPU (rapide) - Mais les instructions sensibles entraînent l'envoi d'une exception au système d'exploitation par le CPU. - Les espaces d'adressage empêchent les programmes d'interférer avec la mémoire du système d'exploitation et entre eux. - C'est comme si chaque programme s'exécutait dans sa propre machine privée (le "processus"). Dr. ABOUD A. 23 Compredre la virtualisation Les architectures des processeurs x86 Avant de comprendre comment fonctionne la virtualisation, il est nécessaire de connaitre les architectures des processeurs x86. L'architecture du processeur x86 offre quatre niveaux de privilèges appelés Anneaux(Rings) 0, 1, 2 et 3. Ces anneaux sont utilisés pour séparer le contexte d'exécution entre les systèmes d'exploitation, les applications et les pilotes. Les applications de niveau utilisateur s'exécutent généralement dans Ring 3. Le système d'exploitation doit avoir un accès direct à la mémoire et au matériel et doit exécuter ses instructions privilégiées dans Ring 0. ISIMG Ring 3 Ring 3 User Apps Ring 2 Ring 1 Ring 0 Kernel Most privileged I Least privileged Ring 2 Ring 1 Ring 0 OS Device drivers Device drivers Applications Host Computer System Hardware Dr. ABOUD A. Direct Execution of User and OS Requests 24 Compredre la virtualisation L'idée : Et si on exécute le noyau du système d'exploitation comme un programme en mode utilisateur ? ISIMG app app app app system call interface Windows guest OS Linux guest OS VMM virtual hardware / software interface hardware (physical) hardware / software interface Dr. ABOUD A. 25 Section 3: Hyperviseurs/Superviseur/VMM ISIMG Dr. ABOUD A. 26 Les hyperviseurs Qu'est ce qu'un hyperviseur Définition Un hyperviseur, également connu sous le nom de moniteur de machine virtuelle ou VMM, est un logiciel qui crée et exécute des machines virtuelles (VM). Un hyperviseur permet à un ordinateur hôte de prendre en charge plusieurs machines virtuelles invitées en partageant virtuellement ses ressources, telles que la mémoire et le processeur. app app app app OS OS virtualization hardware ISIMG Les hyperviseurs Les propriétés • Dr. ABOUD A. 27 Selon Popek et Goldberg, un hyperviseur doit présenter trois propriétés pour satisfaire correctement leur définition : - Fidélité (La transparence) : L'environnement créé pour la machine virtuelle est essentiellement identique à la machine physique d'origine (matérielle). - Isolation ou sécurité(Le cloisonnement): Le VMM doit avoir le contrôle complet des ressources du système. - Performances: II devrait y avoir peu ou pas de différence de performances entre la VM et son équivalent physique.sources virtuelles propres à chaque VM Remarque Comme la plupart des VMM ont les deux premières propriétés, les VMM qui répondent également au critère final sont considérés comme des VMM efficaces. ISIMG Dr. ABOUD A. 28 Les hyperviseurs Les types L'hyperviseur a 2 rôles majeurs : - Créer des ressources virtuelles propres à chaque VM - Répartir ses propres ressources Il existe 2 types d'hyperviseurs différents les hyperviseurs de type 1 et de type 2. Guest OS Guest OS Hypervisor Guest OS Guest OS Hypervisor Host OS Hardware Hardware TYPE 1 HYPERVISOR TYPE 2 HYPERVISOR ISIMG Les hyperviseurs Hyperviseur de type-1 - Un hyperviseur de type 1, également appelé hyperviseur natif ou bare metal, s'exécute directement sur le matériel de l'hôte pour gérer les systèmes d'exploitation invités. - Ce type d'hyperviseur est le plus utilisé dans les centres de données ou dans d'autres environnements basés sur des serveurs. - KVM, Microsoft Hyper-V et VMware vSphere sont des exemples d'hyperviseurs de type 1. - KVM a été intégré au noyau Linux en 2007, donc si vous utilisez une version moderne de Linux, vous avez déjà accès à KVM. ISIMG Guest OS Guest OS Hypervisor Hardware TYPE 1 HYPERVISOR Dr. ABOUD A. 29 Dr. ABOUD A. 30 Les hyperviseurs Hyperviseur de type-2 - Un hyperviseur de type 2 est également connu sous le nom d'hyperviseur hébergé, et est exécuté sur un système d'exploitation conventionnel en tant que couche logicielle ou application. - Il fonctionne en abstrayant les systèmes d'exploitation invités du système d'exploitation hôte. - Il permet, une fois installé, de créer des VMs indépendantes de I'SE hôte - Un hyperviseur de type 2 est plus adapté aux utilisateurs individuels qui souhaitent exécuter plusieurs systèmes d'exploitation sur un ordinateur personnel. - VMware Workstation et Oracle VirtualBox sont des exemples d'hyperviseurs de type-2. ISIMG Les hyperviseurs En résumé ISIMG Guest OS Guest OS Hypervisor Host OS Hardware TYPE 2 HYPERVISOR Dr. ABOUD A. 31 L'hyperviseur de type 2:。○○ - Tester un OS - Créer un environnement de test Profil: développeur, administrateur réseau - Développer une application et la tester sur différents systèmes L'hyperviseur de type 1 : - Créer des serveurs Profil:administrateur réseau/cloud - Remplacer des machines physiques par des VM (réduction des coûts) - Tests en environnement de pré-production Dr. ABOUD A. 32 L'idée fonctionne presque, mais... ISIMG Dr. ABOUD A. 33 L'idée fonctionne presque, mais... app app app app system call interface Windows guest OS Linux guest OS virtual hardware / software interface • ISIMG VMM (physical) hardware / software interface hardware - Que se passe-t-il lorsque le SE invité émet une instruction sensible? - Quels périphériques matériels (virtuels) I'SE doit-il voir ? - Comment empêcher les applications exécutées sur Windows de nuire à Windows? • ou les applications de perturber la VMM... ou Windows de détruire Linux... ou le VMM... Dr. ABOUD A. 34 La réponse: Trap&emulate, et Goldberg - Le CPU capte les instructions sensibles et les transmet au VMM. - Le VMM émule l'effet d'une instruction sensible sur le matériel virtuel qu'il fournit à ses SE invités au lieu que le système d'exploitation fournisse des abstractions de haut niveau au processus via des appels système(hypercalls) - La VMM fournit une interface HW/SW virtuelle aux SE invités en capturant et émulant les instructions sensibles Original x86 Code with Sensitive Instruction: assembly ; Original x86 assembly code Copy code mov cro, eax ; Move the value in EAX to the CRO control register assembly Copy code hypercall_set_cr0(eax); Hypercall to set the CRO control register ISIMG Dr. ABOUD A. 35 La réponse: Trap&emulate, et Goldberg - Le CPU capte les instructions sensibles et les transmet au VMM. - Le VMM émule l'effet d'une instruction sensible sur le matériel virtuel qu'il fournit à ses SE invités au lieu que le système d'exploitation fournisse des abstractions de haut niveau au processus via des appels système(hypercalls) - La VMM fournit une interface HW/SW virtuelle aux SE invités en capturant et émulant les instructions sensibles Goldberg (1974) : deux classes d'instructions - instructions privilégiées: celles qui sont détectées lorsque le CPU est en mode utilisateur - instructions sensibles: celles qui modifient la configuration matérielle ou les ressources matérielles, et celles dont le comportement dépend de la configuration du matériel. Un VMM peut être construit de manière efficace et sûre si l'ensemble des instructions sensibles est un sous-ensemble des instructions privilégiées. ISIMG Dr. ABOUD A. 36 Implications en termes de performance de Trap&emulate - Les instructions non-sensibles n'entraînent pratiquement aucune surcharge. - elles s'exécutent directement sur le CPU et ne provoquent pas de traps. - Le code lié au CPU (par exemple, certains programmes scientifiques) s'exécutent à la même vitesse sur une VM que sur une machine physique - Les instructions sensibles ont un impact potentiel important sur les performances - elles déclenchent un trap et doivent être dirigées et émulées par la VMM - Les applications à forte intensité d'E/S ou d'appels système sont durement touchées. ISIMG Dr. ABOUD A. 37 Un problème difficile... - Jusqu' 2005, l'architecture Intel ne répondait pas à l'exigence de Goldberg - 17 instructions n'étaient pas virtualisables - Elles ne trappent pas, et elles se comportent différemment en mode superviseur et en mode utilisateur - Certaines se comportent différemment (par exemple, CALL ou JMP en mode protégé). Group Access to interrupt flag Visibility into segment descriptors Segment manipulation instructions Read-only access to privileged state Interrupt and gate instructions Instructions pushf, popf, iret lar, verr, verw, lsl pop <seg>, push <seg>, mov <seg> sgdt, sldt, sidt, smsw fcall, longjump, retfar, str, int <n> ISIMG Dr. ABOUD A. 38 Un problème difficile... Comment rendre les processeurs x86 virtualisables ? ISIMG Un problème difficile... Dr. ABOUD A. Comment rendre les processeurs x86 virtualisables ? Vous avez quatre choix 1. Emuler: ne pas exécuter les instructions directement, mais interpréter chaque instruction. très lent (Rosetta sur le Mac avec les M1 chips) 2. Paravirtualiser: modifier le système d'exploitation invité pour éviter les instructions non virtualisables. - très rapide et sûr, mais pas rétrocompatible nécessite la modification des noyaux 39 3. Utiliser la traduction binaire au lieu de la méthode "trap-and-emulate". (c'est ce que fait VMware.) (voir annexe A1) 4. Corriger les processeurs. - En 2005/2006, Intel a introduit "VT", et AMD a introduit "Pacifica". - Réimplémentation des idées du support de virtualisation - Ajout d'un nouveau mode de CPU pour distinguer la VMM de la guest/app. maintenant, construire un VMM est facile ! ISIMG Dr. ABOUD A. 40 Section 3: Techniques de Virtualisation Dr. ABOUD A. 41 ISIMG Les techniques de Virtualisation Modifiés Systémes Virtualisation Non modifiés Processus Paravirtualisation Virtualisation Totale Virtualisation assistée par le matérielle Virtualisation au niveau du SE ISIMG Dr. ABOUD A. 42 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement Logiciels User Space User Space de contrôle ISIMG Containers Isolateur OS hôte Materiel Containers Isolateur Containers Management Interface Namespaces cgroups Drivers Hardware SELinux • • • • • Isole l'exécution des applications dans des contextes d'exécution. Chaque instance d'espace utilisateur représente un environnement d'exécution virtuel autonome appelé container, partition, ou jail, selon la technologie utilisée (Docker, openVZ, LXC ...). Les environnements utilisateurs sont entièrement cloisonnés Exploite les namespaces et les cgroups du système linux séparer le contexte d'exécution de chaque application. Solution très performante mais isolation partielle Exemple: chroot, OpenVZ(Virtuozzo), Docker, LXC (Cgroups) Linux Kernel Dr. ABOUD A. 43 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement namespaces: Les espaces de noms (namespaces) sont une fonctionnalité Linux qui partitionne les ressources du noyau de telle sorte - qu'un ensemble de processus voit un ensemble de ressources tandis qu'un autre ensemble de processus voit un ensemble différent de ressources. - qu'un ensemble de processus sont séparés de telle façon qu'ils ne puissent pas « voir » les ressources des autres groupes. (on parle aussi de contextes) - Par défaut, chaque système Linux a initialement un seul espace de noms. Toutes les ressources système, telles que les systèmes de fichiers, les ID de processus, les ID d'utilisateur, les interfaces réseau et autres, appartiennent à l'espace de noms unique. - Il existe plusieurs types d'espaces de noms, de sorte qu'un processus n'appartient pas à un seul espace de noms, mais à un espace de nom de chaque type. Mount (mnt) Process ID (pid) - Network (net) - Inter-process communication (ipc) User ID (user) Control group (cgroup) [Mars 2016] ISIMG Dr. ABOUD A. 44 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement namespaces: Exemple de ressources les PID, les noms d'hôte, les UID, les noms de fichiers et certains noms associés à l'accès au réseau et la communication interprocessus (IPC). - L'espace de nommage par identifiant de processus (PID namespace) fournit l'isolation pour l'allocation des PIDs, la liste des processus et de leurs détails. - L'espace de nommage réseau (Network namespace) isole le contrôleur de l'interface réseau (physique ou virtuel), les règles de pare-feu iptables, les tables de routage, etc. Les espaces de nommage réseau peuvent être connectés les uns avec chacun des autres en utilisant le périphérique virtuel Ethernet « veth ». - L'espace de nommage « UTS » (UTS namespace) permet le changement de nom d'hôte. - L'espace de nommage de montage (Mount namespace) permet de créer différents modèles de systèmes de fichiers, ou de créer certains points de montage en lecture- seule. - L'espace de nommage IPC (IPC namespace) isole le système de communication inter-processus entre les espaces de nommage. ISIMG Dr. ABOUD A. 45 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement namespaces: Obectif ⇒ Isolation par espace de nommage Le rôle des namespaces est de créer un nouveau contexte système isolé pour le processus ciblé. On obtient une isolation pour : 1. un nouvel espace de PID est initialisé et le processus prend le numéro de PID 1 2. un nouvelle pile réseau est allouée au processus, donc aucun conflit possible avec les services réseaux de l'hôte 3. un système de fichier indépendant permettant de monter/démonter les volumes sans incidence pour l'hôte ISIMG Dr. ABOUD A. 46 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement namespaces: Utilisation Les espaces de noms sont un aspect fondamental des conteneurs sous Linux. Divers logiciels de conteneur utilisent des espaces de noms Linux (namespaces) en combinaison avec des groupes de contrôle (cgroups) pour isoler leurs processus, notamment Docker et LXC. Les espaces de nom sont créés notamment avec la commande « unshare ». ISIMG docker LXC Dr. ABOUD A. 47 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement namespaces: Test sudo unshare --fork --pid --mount-proc bash ps x PID TTY STAT TIME COMMAND 1 pts/0 S 0:00 bash 9 pts/0 R+ 0:00 ps x # Côté hôte ps faux USER PID TTY STAT START TIME COMMAND ahmed 27251 tty1 S 12:25 0:00 -bash root 27281 tty1 S 12:26 0:00 \_ sudo unshare ... root 27282 tty1 S 12:26 0:00 root 27283 tty1 S+ 12:26 0:00 \_ unshare \_ bash ... ISIMG Dr. ABOUD A. 48 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups): - cgroups (control groups) est une fonctionnalité du noyau Linux pour limiter, compter et isoler l'utilisation des ressources (processeur, mémoire, utilisation disque, etc.). - Un cgroup est un groupe de contrôle de processus. - Un groupe de contrôle est une suite de processus qui sont liés par le(s) même(s) critère(s). - Ces groupes peuvent être organisés hiérarchiquement, de façon que chaque groupe hérite des limites de son groupe parent. ISIMG Dr. ABOUD A. 49 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups) v1: Contrôleurs - Le noyau Linux fournit l'accès à plusieurs contrôleurs (sous-systèmes) à travers l'interface cgroup : - cpuset : allocation de ressources CPU et mémoire vive - cpuacct: permet de comptabiliser la consommation de cycle CPU - memory: contrôle de la mémoire vive et du cache d'un groupe - devices: autorise ou refuse l'accès à un périphérique - net_cls: gère l'accès au réseau - blkio : gère l'accès aux périphériques de type block (disque durs...) ISIMG Dr. ABOUD A. 50 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups): Objectif - Limitation des ressources: des groupes peuvent être mis en place afin de ne pas dépasser une limite de mémoire - Priorisation : certains groupes peuvent obtenir une plus grande part de ressources processeur ou de bande passante d'entrée-sortie - Comptabilité : permet de mesurer la quantité de ressources consommées par certains systèmes en vue de leur facturation par exemple - Isolation: séparation par espace de nommage pour les groupes, afin qu'ils ne puissent pas voir les processus des autres, leurs connexions réseaux ou leurs fichiers. - Contrôle : figer les groupes ou créer un point de sauvegarde et redémarrer ISIMG Dr. ABOUD A. 51 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups): Test / installation Il faut installer les paquets suivants : - cgroup-tools - contrôle et surveillance des groupes de contrôle (outils) - libcgroup1 - control and monitor control groups (library) $ sudo apt install cgroup-tools ISIMG Dr. ABOUD A. 52 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups): Liste des contrôleurs $ cat /proc/cgroups #subsys_name hierarchy num_cgroups enabled cpuset 8 1 1 сри 5 74 1 cpuacct 5 74 1 blkio 4 74 1 memory 6 112 1 devices 2 74 1 freezer 9 1 1 net_cls 7 1 1 perf_event 10 1 1 net_prio 7 1 1 ... ISIMG Dr. ABOUD A. 53 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups): Création des politiques (à la volée) # Création d'une politique par défaut sans limite $ sudo cgcreate -g cpu:/cpudefault # Création d'une politique avec limite $ sudo cgcreate -g cpu:/cpulimited # Limite avec un ratio de consommation CPU de 2:1 # (valeur totale CPU = 1024 donc 1024/2 = 512) $ sudo cgset -r cpu.shares=512 cpulimited # (valeur totale CPU = 0-10000 donc 10000/2 = 5000) $ sudo cgset -r cpu.weight=5000 cpulimited #cgroups v2 ISIMG Dr. ABOUD A. 54 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups): Outil de test L'outil stress permet de créer une charge de calcul sur un système. L'option -c (--cpu) lance N travail(s) basé(s) sur sqrt(). $ sudo apt install stress La commande cgexec permet de lancer un processus en le plaçant dans un groupe(-g). Le processus va hériter des limitations de ce groupe. # Exemple : $ sudo cgexec -g cpu:cpudefault stress -c 1 --timeout 200s & ISIMG Dr. ABOUD A. 55 Les techniques de Virtualisation Virtualisation au niveau du SE ou Isolateur / cloisonnement cgroups(control groups): Test n°1 # On lance 4 fois: (avec la politique par défaut sans limite) $ sudo cgexec -g cpu:cpudefault stress -c 1 --timeout 200s & #Ou : $ for i in $(seq 4); do (sudo cgexec -g cpu:cpudefault stress -c 1 --timeout 200s &); done $ top PID USER PR NI 26164 root 20 0 26167 root 20 0 26173 root 20 0 26170 root 20 0 VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8240 92 0 R 25,2 0,0 0:04.21 stress 8240 96 0 R 25,2 0,0 0:02.68 stress 8240 92