Chapitre IX : Virtualisation Eric Leclercq & Marinette Savonnet Département IEM http://ufrsciencestech.u-bourgogne.fr http://ludique.u-bourgogne.fr/~leclercq 5 mai 2011
1 Principes Problématique Typologie des approches de virtualisation Caractéristiques principales Les apports de la virtualisation 2 La solution Virtual Server de Solaris Principes Solaris Container Commandes d administration 3 La solution Virtual Serveur de Linux Modifications internes Commandes principales Configuration d un VServer
Exemple d architecture Réseau Interne Internet DNS Cache Filtre Routeur Serveur Mail Serveur SMB Serveur DNS Sec Serveur DNS Serveur DHCP Serveur DHCP Esclave Filtre Routeur Serveur WEB Serveur SMB Serveur NAS Serveur DHCP Serveur DNS Sec Serveur BD Serveur BD Test Serveur NAS Réseau Agence
Problématique Séparation des services d infrastructure des services applicatifs : gestion d un grand nombre de machines serveur ; complexité des approches pour assurer le redondance des services ; coûts d administration ; rendement de l utilisation des serveurs ; mise à l échelle difficile et empirique ;
Typologie des principes de virtualisation Utilisé sur un système hôte ou service offert directement par le noyau du SE. émulateur ou machine virtuelle (QEmu, VMWare, Bochs, Microsoft Virtual Server) : offrent une couche d abstraction matérielle qui émule une machine sur le système hôte. Plusieurs SE peuvent être exécutés simultanément, l ordonnacement est gobal. superviseur (UML, Xen) : abstraction matérielle fine offerte par le noyau, isolation des ressources de systèmes invités, ordonnacement global virtualisation du SE (Linux Vserver, Solaris Container, OpenVZ) : plusieurs instances du même système d exploitation, ordonnacement local et global, performances accrues
Caractéristiques principales Les serveurs virtuels s exécutent sur le même noyau ; Il n y a pas de démon spécifique ; Il n est pas nécessaire de créer des partition de de pré-allouer une zone de disque ou un fichier ; Les ressources matérielles et logicielles sont partagée de façon fine ; Un serveur corrompu n affecte pas les autres.
Les apports de la virtualisation La virtualisation permet : d héberger plusieurs catégories de services sur la même machine : service d infrastructure : DNS, DHCP, LDAP, etc. services applicatifs : SGBD, serveur HTTP, serveur J2EE etc. une indépendance des ressources / SE ; une copie/déplcaement des serveurs virtuels simple ; des expérimentations pour les mises à jour par exemple ; de bénéficier de serveur développement ; une indépendance relative par rapport à la distribution (Linux).
Principes L approche VS de Solaris 10 : Solaris propose la notion de zone qui correspond à celle de serveur virtuel ; Tous les serveurs virtuels sont contrôlés par la zone globale ; Délégation de l administration via le mécanisme de rôles ; Allocation fine des ressources aux zones (CPU, mémoire, stockage, réseau etc.) Documents de référence : http://www.sun.com/bigadmin/content/zones/zones_ lisa.pdf http://docs.sun.com/app/docs/doc/817-1592 http://www.sun.com/software/solaris/howtoguides/ ContainersLowRes.pdf http://www.sun.com/bigadmin/content/zones/
Solaris Container
Commandes d administration Configuration réseau (test) : ifconfig -a lo0: flags=2001000849<up,loopback,running,multicast,ipv4,virtual> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 eri0: flags=1000843<up,broadcast,running,multicast,ipv4> mtu 1500 index 2 inet 172.21.16.31 netmask ffff0000 broadcast 172.21.255.255 ether 0:3:ba:16:aa:57 Status des zones : # zoneadm list -cv ID NAME STATUS PATH 0 global running / Creation du/des répertoires d acceuil : # df -h Système de fichiers taille utilisé dispo capacité Monté sur /dev/dsk/c1t0d0s0 23G 3,5G 19G 16% / /devices 0K 0K 0K 0% /devices ctfs 0K 0K 0K 0% /system/contract proc 0K 0K 0K 0% /proc mnttab 0K 0K 0K 0% /etc/mnttab swap 2,7G 984K 2,7G 1% /etc/svc/volatile objfs 0K 0K 0K 0% /system/object fd 0K 0K 0K 0% /dev/fd swap 2,7G 8K 2,7G 1% /tmp swap 2,7G 32K 2,7G 1% /var/run /dev/dsk/c1t1d0s7 33G 1,9G 31G 6% /opt /dev/dsk/c1t0d0s7 8,3G 8,5M 8,3G 1% /export/home
Commandes d administration Répertoire et postionnement des droits : mkdir /opt/zones chmod u=rwx,go= /opt/zones mkdir /opt/zones/1 chmod u=rwx,go= /opt/zones/1 Création et configuration d une zone locale : # zonecfg -z zone1 zone1: Aucune zone de cette sorte configurée Utilisez create pour commencer à configurer une nouvelle zone. zonecfg:zone1> create zonecfg:zone1> set zonepath=/opt/zones/1 zonecfg:zone1> set autoboot=true zonecfg:zone1> add net zonecfg:zone1:net> set address=10.11.12.1/24 zonecfg:zone1:net> set physical=eri0 zonecfg:zone1:net> end zonecfg:zone1>
Commandes d administration Vérification et validation d une zone : zonecfg:zone1> info zonepath: /opt/zones/1 autoboot: true pool: inherit-pkg-dir: dir: /lib inherit-pkg-dir: dir: /platform inherit-pkg-dir: dir: /sbin inherit-pkg-dir: dir: /usr net: address: 10.11.12.1/24 physical: eri0 zonecfg:zone1> verify zonecfg:zone1> commit zonecfg:zone1> exit Initialisation de la zone1 # zoneadm -z zone1 install Preparing to install zone <zone1>. Creating list of files to copy from the global zone. Copying <90416> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1196> packages on the zone. Initialized <1196> packages on zone. Zone <zone1> is initialized.
Commandes d administration Démarrage d une zone : # zoneadm -z zone1 boot Configuration du SE d une nouvelle zone : # zlogin -C -e [ zone1 Suivre la procédure d installation standard ; Se loger root, tester le réseau ; Utiliser [. pour revenir à la zone globale. Verification à partir de la zone globale : # zlogin zone1 # ifconfig -a # df -h Questions en suspend : Gestion des interfaces réseau? Allocation de limites CPU, mémoire, disque? Gestion de l espace disque?
La solution Linux Virtual Private Servers (VPS) : http://linux-vserver.org/ La commande chroot permet d exécuter une commande dans un répertoire différent comme si il s agissait du répertoire racine. Toutes les recherches dans le système de fichier se feront à partir de cette nouvelle racine Le principe de chroot permet une isolation des processus par rapport au système de fichier Utilisé de façon adéquate chroot permet de créer un filesystem jail pour un processus unique, un utilisateur, un démon ou un service 1 # mkdir / tmp / root 3 # mkdir / tmp / root / bin / tmp / root / lib # cp -a / lib /* / tmp / root / lib / 5 # cp -a / bin / bash / tmp / root / bin / # cp -a / bin /ls / tmp / root / bin / 7 # chroot / tmp / root / bin / bash bash -2.05# ls / bin lib
Les modifications Le noyau doit être modifié : http://www.solucorp.qc.ca/miscprj/s_context.hc?dp=0&full=1&prjstate=1&nodoc=0 séparation des contextes : cacher les processus en dehors d un contexte ; 1 # chcontext --ctx 100 sleep 111 & 3 # chcontext --ctx 200 sleep 222 & # chcontext --ctx 100 ps auxw 5 New security context is 100 USER PID % CPU % MEM VSZ RSS TTY STAT START TIME COMMAND 7 root 23 0.3 1.5 2748 436 tts /0 S 18:47 0:00 sleep 111 root 26 28.0 2.2 2476 664 tts /0 R 18:48 0:00 ps auxw isolation réseau ; isolation des ressources des systèmes de fichiers : fichiers étiquettés.
Commandes principales /usr/sbin/chcontext : commutation de contexte /usr/sbin/chbind : selectionner une IP et l associer à un processus /usr/sbin/newvserver : créer un nouveau serveur virtuel /usr/sbin/reducecap : diminuer les capacités de processus fils /usr/sbin/vdu /usr/sbin/vkill /usr/sbin/vps /usr/sbin/vpstree /usr/sbin/vserver : administration des serveur virtuels
Commandes principales /usr/sbin/vserver-stat : activité dans le contexte actif /usr/sbin/vtop /sbin/vreboot /sbin/vhalt /etc/rc.d/init.d/vservers démarrage des serveurs virtuel au boot /etc/rc.d/init.d/rebootmgr : démon à l écoute les demande des serveur virtuels
Configuration d un VServer Création du répertoire d accueil : 1 mkdir / vservers /XX cd / vservers /XX 3 vserver XX build ou /usr /sbin / newvserver Configuration de base : /etc/vservers/xx.conf IPROOT, IPROOTDEV, IPROOTMASK ONBOOT S CONTEXT : optionnel, en général un context id est selectionné par le noyau S DOMAINNAME, S HOSTNAME S NICE : verouille la priorité des processus du serveur virtuel S FLAGS : lock, sched, nproc, private, fakeinit ULIMIT connexion à un serveur virtuel : /usr/sbin/vserver XX enter