Introduction à la virtualisation
Sé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
Objectif de cette soirée
3 / 77
Vous donnez un peu de culture admin et montrez l'utilité des outils de virtualisation pour le développemment
4 / 77
Je ne suis pas un spécialiste de la virtualisation, juste un grand utilisateur
5 / 77
je n'ai rien à vous vendre
6 / 77
Culture
7 / 77
2 anectodes
8 / 77
9 / 77
Déclic
10 / 77
Pattern et anti-pattern
11 / 77
On pense avec des mots
12 / 77
Multiplier les cultures donne une vision plus cohérente
13 / 77
Lean, Agile, Devops sont avant tout une question de culture
14 / 77
Valeur ➜ Principe ➜ Pratique
15 / 77
Intérets
16 / 77
La virtualisation offre plusieurs opportunités
Coté ops :
Meilleure utilisation des ressources (serveur, place, électricité, etc) Installation, déploiement et migration facilités
Isolation (sécurité, modification locale, etc)
Coté dev :
Disposer de plusieurs envionnements de développement Tester 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éduire le temps de cycle (cycle time)
18 / 77
Histoire
19 / 77
Les premiers travaux proviennent du centre scientifique de Cambridge d'IBM pour le développement expérimental de
CP/CMS (1967–1972). Il permet de simuler un
environnement mono-utilisateur (CMS) par dessus la gestion des VM (VM-CP). Les versions actuelles sont z/OS et z/VM.
20 / 77
Vocabulaire
21 / 77
Émulation / virtualisation
22 / 77
Hôte (host) / invité (guest)
23 / 77
Bare-metal
24 / 77
VM (Virtual Machine ou Machine virtuelle)
25 / 77
VE (Virtual Environment ou Environnement)
26 / 77
Techniques
27 / 77
Hyperviseur de type 1
28 / 77
Hyperviseur léger et optimisé pour gérer les accés aux matériels qui tourne en bare-metal
29 / 77
30 / 77
Avantages :
OS complet (avec son noyau) OS non modifié
isolation complète
Inconvénients :
lourdeur de mise en oeuvre lourdeur de gestion
overhead moyen (peut être fortement réduit)
Hyperviseur de type 1
31 / 77
Hyperviseur de type 2
32 / 77
Hyperviseur qui fonctionne sur un OS et qui émule le matériel
33 / 77
34 / 77
Avantages :
OS complet (avec son noyau) OS non modifié
isolation complète
Inconvénients :
lourdeur de mise en oeuvre lourdeur de gestion
overhead monstreux
Hyperviseur type 2
35 / 77
Virtualisation (VM) vs Para-virtualisation (PV)
Que ce soit en hyperviseur de type 1 ou 2, on peut ajouter des drivers pour indiquer au noyau qu'il est un invité. On parle
alors de para-virtualisation. Cela diminue l'overhead et améliore les performances.
36 / 77
Accélération matérielle (HVM, HPV)
37 / 77
Virtualisation assisté par le processeur
Intel (2005+) : VT-x
VT-d (I/O MMU virtualization) VT-c
AMD (2006+) : AMD-V
AMD-Vi (I/O MMU virtualization)
38 / 77
conteneur
39 / 77
Permet d'isoler l'exécution des applications dans une VE
40 / 77
41 / 77
Avantages : simplicité
rapidité de mise en oeuvre grande densité
peu d'overhead
cache commun (page sharing) meilleur gestion des ressources (cpu. disque...)
Inconvénients : un seul noyau
nécessite une couche sécurité (SELinux / Apparmor)
Conteneur
42 / 77
Isolation
Sous Linux, c'est le service noyau Namespace qui gère l'isolation : PID namespace : isolation des ID de process
Net namespace : isolation du réseau
IPC namespace : isolation des ressources IPC
UTS namespace : isolation des identifiants de nom et de domaine Mount namespace : isolation des points de montage du système
43 / 77
Limitation des ressources
Sous Linux, c'est le service noyau Control Groups (cgroups) aui gère la limitation :
# root@srv1:/sys/fs/cgroup# ls -1 blkio
cpu cpuacct cpuset devices freezer hugetlb memory perf_event
44 / 77
Processus sans privilège
Sous Linux, c'est le service noyau capabilities qui gère les droits.
45 / 77
Technologies
46 / 77
Avantages :
Licence Libre mature (2003) project actif
Utilisé par VirtualBox, Xen et KVM
Émule les architectures IA-32 (x86) / x86-64, MIPS R4000, Sun SPARC sun4m / sun4u, ARM development boards, SH4 SHIX board, PowerPC, ETRAX CRIS, MicroBlaze...
KQEMU pour les vieux matériels
Inconvénients : trés lent !
QEMU
Type : émulateur http://wiki.qemu.org
47 / 77
Avantages :
Licence Libre mature (2003)
projet actif géré par la Xen Project Governance
projet upstream depuis Linux 3.0 hyperviseur x86, x86_64,
Itanium, ARM
PV / HVM / Pv-on-HVM distribution AlpineLinux XenServer libéré
écosystême riches (2k partenaires certifiés)
nombreuses fonctionnalités(Live Migration, Save & Restore,
sécurité...)
Inconvénients :
pas dans toutes les distributions Linux / *BSD
bien adapté a Red Hat
Xen
Type : hyperviseur de type 1 http://www.xenproject.org
48 / 77
Avantages :
Licence Libre mature (2007)
hyperviseur x86, x86_64, ARM (en dev)
projet actif financé par Red Hat projet upstream depuis Linux 2.6.20
ré-intégré dans QEMU
maintenu par les distributions Linux / *BSD
HVM / Pv-on-HVM
utilisé par Red Hat comme offre de virtualisation
Inconvénients :
pas de ml utilisateur
manque de documentation écosytème financé par Red Hat demande un admin Linux plus confirmé
pas de PV
KVM
Type : hyperviseur de type 1 http://www.linux-kvm.org/
49 / 77
Avantages : gratuit
mature (2007)
projet actif financé par VMware offre la plus complète (vCenter, NSX...)
Inconvénients :
licence propriétaire écosysteme propriétaire outillage sous Windows offre complète très cher
VMware vSphere Hypervisor (ESXi)
Type : hyperviseur de type 1 http://vmware.com
50 / 77
Avantages :
Licence Libre mature (2007)
projet actif financé par Oracle IHM / CLI
Linux, Windows, Mac OS X, Solaris
packages pour toutes les distributions
simple d'utilisation
Documentation (manuel
utilisateur 455 pages, FAQ, ml...)
Inconvénients :
instabilité occasionnelle performance
(http://bit.ly/1h9odf3)
Oracle VM VirtualBox
Type : hyperviseur de type 2 http://virtualbox.org
51 / 77
Avantages :
Licence Libre
facilité de mise en oeuvre
Inconvénients :
ne gère que l'isolation FS
chroot / FreeBSD Jail
Type : conteneur
Par défaut sur toutes les distributions Linux / BSD
52 / 77
Avantages :
Licence Libre maturité (2001)
fonctionne à partir du noyau 2.4 sécurité ?
Inconvénients :
demande un noyau Linux patché se synchronise avec les noyaux RHEL
QOS basic (ulimit, rlimit...) plus trop utilisé
Linux-VServer
Type : conteneur
http://linux-vserver.org
53 / 77
Avantages :
Licence Libre mature (2005)
Projet très actif (sponsorisé par Parallels)
beaucoup de fonctionnalité documenté (quick start de 119 pages)
QOS / quota
isolation user, process, FS, réseau, device
fonctionnalités (snapshot, dump / restore, etc)
sécurisé
Inconvénients :
demande un noyau Linux patché se synchronise avec les noyaux RHEL
pas de support des distributions Linux
OpenVZ
Type : conteneur http://openvz.org
54 / 77
Avantages :
Licence Libre intégré upstream
utilise des technos standards bindings python3, ruby, lua and Go
Inconvénients :
manque d'outillage
nécessite Apparmor ou SELinux
LXC
Type : conteneur
http://linuxcontainers.org
55 / 77
Autres : Bochs
Solaris Zone DOSEMU
VMware Player
VMware Workstation VMware Fusion
Oracle VM
Microsoft Hyper-V Server Microsoft VirtualPC
Microsoft Virtual Server Parallels Server Bare Metal Parallels Desktop
Parallels Parallels Server IBM z/VM
56 / 77
Formats
57 / 77
Plusieurs format existent :
IMG / RAW VDI
VHD
Qcow2 (standard Logiciel Libre)
VMDK (Standard, Fixed, Split2G, Stream Optimized, ESX) Note : Il est plus effiace d'utiliser des partitions LVM / ZFS / BTRFS
58 / 77
OVF
59 / 77
OVF
Format normalisé de description d'une VM. Chaque logiciel posséde son namespace (vbx, vmdk...)
Malheureusement, il est incomplet.
60 / 77
OVF
Exemple :
?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
Le format OVA embarque la VM + le fichier OVF
62 / 77
Sélections d'outils Libres
63 / 77
Petites sélections personnelles :
Libvirt (OpenVZ, LXC, KVM, Xen, VMWare) http://libvirt.org ProxMox VE (OpenVZ, KVM) https://www.proxmox.com Docker (LXC) http://docker.io
Vagrant (VirtualBox) http://www.vagrantup.com oVirt (KVM, Xen, VirtualBox) http://www.ovirt.org virt-manager (KVM, Xen, LXC) http://virt-manager.org Libguestfs (KVM) http://libguestfs.org
virt-tools (KVM) http://virt-tools.org
Kimchi (KVM) https://github.com/kimchi-project/kimchi Ganeti (KVM, Xen) https://code.google.com/p/ganeti ConVirt Open Source (KVM, Xen)
http://www.convirture.com/products_opensource.php xen-tools (Xen) http://www.xen-tools.org
Zentific (Xen) http://www.zentific.com
Xen Orchestra (Xen) http://xen-orchestra.com Xen Server (Xen) http://www.xenserver.org
64 / 77
Cloud Computing
65 / 77
Architecture OpenStack Folsom
66 / 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
Software Configuration Management (SCM)
68 / 77
Les outils SCM sont un gros pas en avant en simplifiant grandement le travail d'administration
69 / 77
Qualités
configuration as Code
documente parfaitement les changements
utilisation d'outils communs avec les dev (outil, langage, etc) langage commun (dev / op)
rapidité de déploiement flexible
idempotence
70 / 77
Principaux outils Libres
CFEngine (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
Démo
72 / 77
KVM
KVM 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
VirtualBox
pré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
LXC
présentation rapide de LXC (template, commandes) lancement conteneur Ubuntu
présentation rapie de Docker http://douche.name/presentation-docker)
75 / 77
Salt
démo shell distribué
exemple simple de template SLS exemple de modules Salt maison
76 / 77
That's all folks!
77 / 77