Sunteți pe pagina 1din 77

Introduction la virtualisation

Sbastien Douche @sdouche

https://github.com/sdouche/presentation-virtualisation;

1 / 77
39 ans. Pas trs intelligent mais j'aime comprendre.
Qui suis je ?

Geek depuis 1984

Fan de Logiciels Libres depuis 1995

CTO chez un diteur logiciel depuis 2007

Dveloppeur (Python, Go, Dart, Rust)

Sysadmin (Linux / BSD)

Speaker (Git, Python, Go, organisation, management...)

Adore les jeux de socits modernes

Motard (Honda CBR RR)

Aime l'humour noir et les blagues pourries

2 / 77
Objectif de cette soire

3 / 77
Vous donnez un peu de culture admin et montrez l'utilit des

outils de virtualisation pour le dveloppemment

4 / 77
Je ne suis pas un spcialiste 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
Dclic

10 / 77
Pattern et anti-pattern

11 / 77
On pense avec des mots

12 / 77
Multiplier les cultures donne une vision plus cohrente

13 / 77
Lean, Agile, Devops sont avant tout une question de culture

14 / 77
Valeur Principe Pratique

15 / 77
Intrets

16 / 77
La virtualisation offre plusieurs opportunits

Cot ops :

Meilleure utilisation des ressources (serveur, place, lectricit, etc)


Installation, dploiement et migration facilits
Isolation (scurit, modification locale, etc)

Cot dev :

Disposer de plusieurs envionnements de dveloppement


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 rduire

le temps de cycle (cycle time)

18 / 77
Histoire

19 / 77
Les premiers travaux proviennent du centre scientifique de

Cambridge d'IBM pour le dveloppement exprimental de

CP/CMS (19671972). 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
Hte (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 lger et optimis pour grer les accs aux

matriels qui tourne en bare-metal

29 / 77
30 / 77
Hyperviseur de type 1

Avantages : Inconvnients :

OS complet (avec son noyau) lourdeur de mise en oeuvre


OS non modifi lourdeur de gestion
isolation complte overhead moyen (peut tre
fortement rduit)

31 / 77
Hyperviseur de type 2

32 / 77
Hyperviseur qui fonctionne sur un OS et qui mule le matriel

33 / 77
34 / 77
Hyperviseur type 2

Avantages : Inconvnients :

OS complet (avec son noyau) lourdeur de mise en oeuvre


OS non modifi lourdeur de gestion
isolation complte overhead monstreux

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

amliore les performances.

36 / 77
Acclration matrielle

(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'excution des applications dans une VE

40 / 77
41 / 77
Conteneur

Avantages : Inconvnients :

simplicit un seul noyau


rapidit de mise en oeuvre ncessite une couche scurit
grande densit (SELinux / Apparmor)
peu d'overhead
cache commun (page sharing)
meilleur gestion des ressources
(cpu. disque...)

42 / 77
Isolation

Sous Linux, c'est le service noyau Namespace qui gre l'isolation :

PID namespace : isolation des ID de process


Net namespace : isolation du rseau
IPC namespace : isolation des ressources IPC
UTS namespace : isolation des identifiants de nom et de domaine
Mount namespace : isolation des points de montage du systme

43 / 77
Limitation des ressources

Sous Linux, c'est le service noyau Control Groups (cgroups) aui gre la
limitation :

# root@srv1:/sys/fs/cgroup# ls -1
blkio
cpu
cpuacct
cpuset
devices
freezer
hugetlb
memory
perf_event

44 / 77
Processus sans privilge

Sous Linux, c'est le service noyau capabilities qui gre les droits.

45 / 77
Technologies

46 / 77
QEMU

Type : mulateur

http://wiki.qemu.org

Avantages : Inconvnients :

Licence Libre trs lent !


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 matriels

47 / 77
Xen

Type : hyperviseur de type 1

http://www.xenproject.org

Avantages : Inconvnients :

Licence Libre pas dans toutes les distributions


mature (2003) Linux / *BSD
projet actif gr par la Xen bien adapt a Red Hat
Project Governance
projet upstream depuis Linux 3.0
hyperviseur x86, x86_64,
Itanium, ARM
PV / HVM / Pv-on-HVM
distribution AlpineLinux
XenServer libr
cosystme riches (2k
partenaires certifis)
nombreuses fonctionnalits(Live
Migration, Save & Restore,
scurit...)

48 / 77
KVM

Type : hyperviseur de type 1

http://www.linux-kvm.org/

Avantages : Inconvnients :

Licence Libre pas de ml utilisateur


mature (2007) manque de documentation
hyperviseur x86, x86_64, ARM cosytme financ par Red Hat
(en dev) demande un admin Linux plus
projet actif financ par Red Hat confirm
projet upstream depuis Linux pas de PV
2.6.20
r-intgr dans QEMU
maintenu par les distributions
Linux / *BSD
HVM / Pv-on-HVM
utilis par Red Hat comme offre
de virtualisation

49 / 77
VMware vSphere Hypervisor (ESXi)

Type : hyperviseur de type 1

http://vmware.com

Avantages : Inconvnients :

gratuit licence propritaire


mature (2007) cosysteme propritaire
projet actif financ par VMware outillage sous Windows
offre la plus complte (vCenter, offre complte trs cher
NSX...)

50 / 77
Oracle VM VirtualBox

Type : hyperviseur de type 2

http://virtualbox.org

Avantages : Inconvnients :

Licence Libre instabilit occasionnelle


mature (2007) performance
projet actif financ par Oracle (http://bit.ly/1h9odf3)
IHM / CLI
Linux, Windows, Mac OS X,
Solaris
packages pour toutes les
distributions
simple d'utilisation
Documentation (manuel
utilisateur 455 pages, FAQ, ml...)

51 / 77
chroot / FreeBSD Jail

Type : conteneur

Par dfaut sur toutes les distributions Linux / BSD

Avantages : Inconvnients :

Licence Libre ne gre que l'isolation FS


facilit de mise en oeuvre

52 / 77
Linux-VServer

Type : conteneur

http://linux-vserver.org

Avantages : Inconvnients :

Licence Libre demande un noyau Linux patch


maturit (2001) se synchronise avec les noyaux
fonctionne partir du noyau 2.4 RHEL
scurit ? QOS basic (ulimit, rlimit...)
plus trop utilis

53 / 77
OpenVZ

Type : conteneur

http://openvz.org

Avantages : Inconvnients :

Licence Libre demande un noyau Linux patch


mature (2005) se synchronise avec les noyaux
Projet trs actif (sponsoris par RHEL
Parallels) pas de support des distributions
beaucoup de fonctionnalit Linux
document (quick start de 119
pages)
QOS / quota
isolation user, process, FS,
rseau, device
fonctionnalits (snapshot, dump /
restore, etc)
scuris

54 / 77
LXC

Type : conteneur

http://linuxcontainers.org

Avantages : Inconvnients :

Licence Libre manque d'outillage


intgr upstream ncessite Apparmor ou SELinux
utilise des technos standards
bindings python3, ruby, lua and
Go

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 possde 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
Slections d'outils Libres

63 / 77
Petites slections 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
Qualits

configuration as Code
documente parfaitement les changements
utilisation d'outils communs avec les dev (outil, langage, etc)
langage commun (dev / op)
rapidit de dploiement
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
Dmo

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

prsentation rapide de virt-manager / virsh

manipulation de VM avec libguestfs

73 / 77
VirtualBox

prsentation rapide de VirtualBox IHM / CLI

dmo avec une VM

format OVF / import OVF + VMDK

prsentation rapide de Vagrant http://docs.vagrantup.com/v2/

74 / 77
LXC

prsentation rapide de LXC (template, commandes)

lancement conteneur Ubuntu

prsentation rapie de Docker http://douche.name/presentation-docker)

75 / 77
Salt

dmo shell distribu

exemple simple de template SLS

exemple de modules Salt maison

76 / 77
That's all folks!

77 / 77

S-ar putea să vă placă și