Benoît des Ligneris, Ph.D. P.D.G., bdl@rlnx.com Solutions Linux Open Source, 18 mars 2010 LXC : Une technologie de contextualisation ultra light intégrée au kernel Linux Révolution Linux 2010
Au menu Révolution Linux Virtualisations et ses raisons Historique contextuel Linux LXC aujourd'hui Cas d'utilisation Questions
Révolution Linux Open Source à grande échelle Éducation Administrations publiques Entreprises Spécialités Gestion de postes clients Infrastructure Services web Canada, États-Unis, Europe, Brésil, Chine
Pourquoi Virtualiser? Réducation des coûts Compatibilité avec des applications/os «legacy» Environnement sécurisé pour applications non sécurisées Environnement de développement Contrôle centralisé/gestion centralisée Procédure de backup/restauration faciles Migration Live des VM Informatique verte (Green IT) Haute disponibilité Appliances virtuelles Cloud Parce que c'est amusant
Contexte / Sources Mémoire DESS en Informatique (F. Laudarès), Université de Sherbrooke Ottawa Linux Symposium Proceedings 2008 http://www.slideshare.net/bligneri/comparison-of-open-source-virtu Stgraber.org : Tutoriel & co IBM Developer work : Tutoriel
Historique (1960) IBM + Open Source!
Historique / Popek & Goldberg (1973-74) «Formal Requirements for virtualizable 3rd generation architectures» (1973-74) 3 propriétés essentielles à un (logiciel de contrôle pour être considéré un) VMM : Fidélité Équivalence Performance Efficience Sécurité Contrôle des ressources & accès aux ressources
Popek & Goldberg (1974) «... the virtual machine environnement being produced is a 'smaller' version of the actual hardware: logically the same, but with a lesser quantitiy of certain ressources.»
AMD-V / Intel VT Offre pléthorique : VMWare, QEMU, KQEMU, KVM, Linux-VServer, OpenVZ, Xen, LXC,
Définition? "L'ensemble des techniques qui permettent de diviser les ressources d'un serveur afin de leur faire exécuter séparément et plus efficacement différentes tâches spécifiques, comme s'il agissait de plusieurs serveurs physiques séparés." (OQLF)
Classement proposé Émulation matérielle (QEMU) Virtualisation complète Traduction binaire (VBOX) Virtualisation classique (KVM) Paravirtualisation (Xen) Virtualisation au niveau du SE (Linux-Vserver, OpenVZ, LXC)
Virtualisation complète
Virtualisation au niveau de l'os
Couches logicielles & partage
Pourquoi contextualiser? + : Efficience (pas «d'overhead») - : Flexibilité (même kernel, Linux sur Linux) + : Stockage (copy on write) + : Partage des ressources (QoS entre VM, RAM, etc.)
Comparatifs de la contextualisation OS http://en.wikipedia.org/wiki/operating_systemlevel_virtualization
Sous Linux Chroot (a long time ago!) Linux-Vserver (2001-10-02) OpenVZ (2005 proprietary 2001) LXC (2008)
Blocage Kernel ;-( Linux-Vserver : jamais intégré OpenVZ : gros efforts!
Nature des patchs Isolation des processus (RAM) Isolation du réseau Gestion fine des ACLs (droits associés à chaque VM) «Comptabilité» (bean counters)
Pourquoi LXC Dans le kernel Linux sans patch depuis 2.6.28 (janvier 2009) Supporté par libvirt (presque complet) Spec pour Ubuntu Lucid ( https://blueprints.launchpad.net/ubuntu/+spec/server-lucid ) Devrait se retrouver dans toutes les distributions majeures assez rapidement.
LXC : Fonctionnement de base Créer une VM = installer un Linux dans un chroot. Exemple : sudo debootstrap --variant=buildd --arch i386 karmic /lxc/karmic http://archive.ubuntu.com/ubuntu/ Créer une VM : lxc-create -n name -f configfile Fonctions de base : start, stop, list, signal process, pause, resume, stop, destroy
Plus d'info Tutoriel Debian : Compilation des sources, etc. Tutoriel Ubuntu : PPA, pas de compilation, image de base existante Http://www.ibm.com/developerworks/linux/library/l-lxccontainers/ http://stgraber.org/2009/11/06/lxc-containers-or-extremelyfast-virtualization
Cas d'utilisation (exemple) WebForge : génération automatisée de sites SPIP (Apache, PHP, MySQL). 243 sites sur un serveur de type dual Xeon 2.4GHz, 4GB de RAM. Infrastructure virtualisée complète pour une clinique médicale (15 personnes). 45 Vms sur deux serveurs de type PIV dual-core, 4GB de RAM. Système de build et test automatisée d'une suite de clustering Haute disponibilité sur deux serveurs de services critiques (5 VS : PXE, NBD, TFTP, PostgreSQL) supportants 5000 sessions quotidiennes
Benoît des Ligneris BEN@RLNX.COM