Introduction à la virtualisationSébastien Douche @sdouche
https://github.com/sdouche/presentation-virtualisation;
1 / 77
Qui suis je ? 39 ans. Pas trés intelligent mais j'aime comprendre.
Geek depuis 1984
Fan de Logiciels Libres depuis 1995
CTO chez un éditeur logiciel depuis 2007
Développeur (Python, Go, Dart, Rust)
Sysadmin (Linux / BSD)
Speaker (Git, Python, Go, organisation, management...)
Adore les jeux de sociétés modernes
Motard (Honda CBR RR)
Aime l'humour noir et les blagues pourries
2 / 77
Vous donnez un peu de culture admin et montrez l'utilité desoutils de virtualisation pour le développemment
4 / 77
La virtualisation offre plusieurs opportunitésCoté ops :
Meilleure utilisation des ressources (serveur, place, électricité, etc)Installation, déploiement et migration facilitésIsolation (sécurité, modification locale, etc)
Coté dev :
Disposer de plusieurs envionnements de développementTester son code dans un environnent normaliséSimuler la production
Éviter le «ça marche chez moi» !
17 / 77
Et surtout, éliminer un goulet d'étranglement et ainsi réduirele temps de cycle (cycle time)
18 / 77
Les premiers travaux proviennent du centre scientifique deCambridge d'IBM pour le développement expérimental de
CP/CMS (1967–1972). Il permet de simuler unenvironnement mono-utilisateur (CMS) par dessus la gestion
des VM (VM-CP). Les versions actuelles sont z/OS et z/VM.
20 / 77
Avantages :
OS complet (avec son noyau)OS non modifiéisolation complète
Inconvénients :
lourdeur de mise en oeuvrelourdeur de gestionoverhead moyen (peut êtrefortement réduit)
Hyperviseur de type 1
31 / 77
Avantages :
OS complet (avec son noyau)OS non modifiéisolation complète
Inconvénients :
lourdeur de mise en oeuvrelourdeur de gestionoverhead monstreux
Hyperviseur type 2
35 / 77
Virtualisation (VM) vs Para-virtualisation (PV)
Que ce soit en hyperviseur de type 1 ou 2, on peut ajouterdes drivers pour indiquer au noyau qu'il est un invité. On parle
alors de para-virtualisation. Cela diminue l'overhead etaméliore les performances.
36 / 77
Virtualisation assisté par le processeurIntel (2005+) :
VT-xVT-d (I/O MMU virtualization)VT-c
AMD (2006+) :
AMD-VAMD-Vi (I/O MMU virtualization)
38 / 77
Avantages :
simplicitérapidité de mise en oeuvregrande densitépeu d'overheadcache commun (page sharing)meilleur gestion des ressources(cpu. disque...)
Inconvénients :
un seul noyaunécessite une couche sécurité(SELinux / Apparmor)
Conteneur
42 / 77
IsolationSous Linux, c'est le service noyau Namespace qui gère l'isolation :
PID namespace : isolation des ID de processNet namespace : isolation du réseauIPC namespace : isolation des ressources IPCUTS namespace : isolation des identifiants de nom et de domaineMount namespace : isolation des points de montage du système
43 / 77
Limitation des ressourcesSous Linux, c'est le service noyau Control Groups (cgroups) aui gère lalimitation :
# root@srv1:/sys/fs/cgroup# ls -1blkiocpucpuacctcpusetdevicesfreezerhugetlbmemoryperf_event
44 / 77
Processus sans privilègeSous Linux, c'est le service noyau capabilities qui gère les droits.
45 / 77
Avantages :
Licence Libremature (2003)project actifUtilisé par VirtualBox, Xen etKVMÉmule les architectures IA-32(x86) / x86-64, MIPS R4000, SunSPARC sun4m / sun4u, ARMdevelopment boards, SH4 SHIXboard, PowerPC, ETRAX CRIS,MicroBlaze...KQEMU pour les vieux matériels
Inconvénients :
trés lent !
QEMUType : émulateur
http://wiki.qemu.org
47 / 77
Avantages :
Licence Libremature (2003)projet actif géré par la XenProject Governanceprojet upstream depuis Linux 3.0hyperviseur x86, x86_64,Itanium, ARMPV / HVM / Pv-on-HVMdistribution AlpineLinuxXenServer libéréécosystême riches (2kpartenaires certifiés)nombreuses fonctionnalités(LiveMigration, Save & Restore,sécurité...)
Inconvénients :
pas dans toutes les distributionsLinux / *BSDbien adapté a Red Hat
XenType : hyperviseur de type 1
http://www.xenproject.org
48 / 77
Avantages :
Licence Libremature (2007)hyperviseur x86, x86_64, ARM(en dev)projet actif financé par Red Hatprojet upstream depuis Linux2.6.20ré-intégré dans QEMUmaintenu par les distributionsLinux / *BSDHVM / Pv-on-HVMutilisé par Red Hat comme offrede virtualisation
Inconvénients :
pas de ml utilisateurmanque de documentationécosytème financé par Red Hatdemande un admin Linux plusconfirmépas de PV
KVMType : hyperviseur de type 1
http://www.linux-kvm.org/
49 / 77
Avantages :
gratuitmature (2007)projet actif financé par VMwareoffre la plus complète (vCenter,NSX...)
Inconvénients :
licence propriétaireécosysteme propriétaireoutillage sous Windowsoffre complète très cher
VMware vSphere Hypervisor (ESXi)Type : hyperviseur de type 1
http://vmware.com
50 / 77
Avantages :
Licence Libremature (2007)projet actif financé par OracleIHM / CLILinux, Windows, Mac OS X,Solarispackages pour toutes lesdistributionssimple d'utilisationDocumentation (manuelutilisateur 455 pages, FAQ, ml...)
Inconvénients :
instabilité occasionnelleperformance(http://bit.ly/1h9odf3)
Oracle VM VirtualBoxType : hyperviseur de type 2
http://virtualbox.org
51 / 77
Avantages :
Licence Librefacilité de mise en oeuvre
Inconvénients :
ne gère que l'isolation FS
chroot / FreeBSD JailType : conteneur
Par défaut sur toutes les distributions Linux / BSD
52 / 77
Avantages :
Licence Librematurité (2001)fonctionne à partir du noyau 2.4sécurité ?
Inconvénients :
demande un noyau Linux patchése synchronise avec les noyauxRHELQOS basic (ulimit, rlimit...)plus trop utilisé
Linux-VServerType : conteneur
http://linux-vserver.org
53 / 77
Avantages :
Licence Libremature (2005)Projet très actif (sponsorisé parParallels)beaucoup de fonctionnalitédocumenté (quick start de 119pages)QOS / quotaisolation user, process, FS,réseau, devicefonctionnalités (snapshot, dump /restore, etc)sécurisé
Inconvénients :
demande un noyau Linux patchése synchronise avec les noyauxRHELpas de support des distributionsLinux
OpenVZType : conteneur
http://openvz.org
54 / 77
Avantages :
Licence Libreintégré upstreamutilise des technos standardsbindings python3, ruby, lua andGo
Inconvénients :
manque d'outillagenécessite Apparmor ou SELinux
LXCType : conteneur
http://linuxcontainers.org
55 / 77
Autres :
BochsSolaris ZoneDOSEMUVMware PlayerVMware WorkstationVMware FusionOracle VMMicrosoft Hyper-V ServerMicrosoft VirtualPCMicrosoft Virtual ServerParallels Server Bare MetalParallels DesktopParallels Parallels ServerIBM z/VM
56 / 77
Plusieurs format existent :IMG / RAWVDIVHDQcow2 (standard Logiciel Libre)VMDK (Standard, Fixed, Split2G, Stream Optimized, ESX)
Note : Il est plus effiace d'utiliser des partitions LVM / ZFS / BTRFS
58 / 77
OVFFormat normalisé de description d'une VM. Chaque logiciel posséde sonnamespace (vbx, vmdk...)
Malheureusement, il est incomplet.
60 / 77
OVFExemple :
?xml version="1.0"?><Envelope ovf:version="1.0" xml:lang="en-US" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vbox="http://www.virtualbox.org/ovf/machine">
<References> <File ovf:id="file1" ovf:href="spv-sysdisk.vmdk" ovf:size="430392832" /> </References>
<DiskSection> <Info>List of the virtual disks used in the package</Info> <Disk ovf:diskId="sysdisk" ovf:fileRef="file1" vbox:uuid="8583a587-88c1-45c3-9365-033899064841" ovf:capacity="16106127360" ovf:populatedSize="430392832".../>
61 / 77
Petites sélections personnelles :
Libvirt (OpenVZ, LXC, KVM, Xen, VMWare) http://libvirt.orgProxMox VE (OpenVZ, KVM) https://www.proxmox.comDocker (LXC) http://docker.ioVagrant (VirtualBox) http://www.vagrantup.comoVirt (KVM, Xen, VirtualBox) http://www.ovirt.orgvirt-manager (KVM, Xen, LXC) http://virt-manager.orgLibguestfs (KVM) http://libguestfs.orgvirt-tools (KVM) http://virt-tools.orgKimchi (KVM) https://github.com/kimchi-project/kimchiGaneti (KVM, Xen) https://code.google.com/p/ganetiConVirt Open Source (KVM, Xen)http://www.convirture.com/products_opensource.phpxen-tools (Xen) http://www.xen-tools.orgZentific (Xen) http://www.zentific.comXen Orchestra (Xen) http://xen-orchestra.comXen Server (Xen) http://www.xenserver.org
64 / 77
Principales technologies Libres Cloud :OpenStack
http://www.openstack.org
Apache CloudStack
http://cloudstack.apache.org
OpenNebula
http://opennebula.org
Eucalyptus
https://www.eucalyptus.com
67 / 77
Les outils SCM sont un gros pas en avant en simplifiantgrandement le travail d'administration
69 / 77
Qualitésconfiguration as Codedocumente parfaitement les changementsutilisation d'outils communs avec les dev (outil, langage, etc)langage commun (dev / op)rapidité de déploiementflexibleidempotence
70 / 77
Principaux outils LibresCFEngine (C)
http://cfengine.com
Puppet (Ruby)
http://puppetlabs.com
Chef (Ruby, Erlang)
http://www.getchef.com
SaltStack (Python)
http://www.saltstack.com
Ansible (Python)
http://www.ansible.com
71 / 77
KVMKVM seul
qemu-system-x86_64 -nodefaults \ -drive file=debian7.qcow2,if=none,media=disk,id=hd0 \ -device driver=virtio-blk-pci,drive=hd0 \ -boot order=c \ -enable-kvm \ -vga cirrus
présentation rapide de virt-manager / virsh
manipulation de VM avec libguestfs
73 / 77
VirtualBoxprésentation rapide de VirtualBox IHM / CLI
démo avec une VM
format OVF / import OVF + VMDK
présentation rapide de Vagrant http://docs.vagrantup.com/v2/
74 / 77
LXCprésentation rapide de LXC (template, commandes)
lancement conteneur Ubuntu
présentation rapie de Docker http://douche.name/presentation-docker)
75 / 77