URL: https://linuxfr.org/news/ca-bouge-du-cote-de-la-virtualisation-chez-freebsd Title: Ça bouge du côté de la virtualisation chez FreeBSD Authors: Joris Dedieu BAud, palm123, Nils Ratusznik, Anonyme, Benoît Sibaud, Nicolas Casanova, Nÿco, patrick_g, claudex et NeoX Date: 2014年06月22日T00:45:31+02:00 License: CC By-SA Tags: freebsd, virtualisation, jail et ubuntu Score: 49 La gestion de machines virtuelles et de conteneurs met en œuvre de nombreux sous-systèmes (hyperviseur, émulateur, réseau, système de fichier, gestion des ressources, politique de sécurité et haute disponibilité) qu'il faut faire fonctionner ensemble et maintenir. Par exemple sous FreeBSD, on pourra utiliser jail, bhyve, qemu, vnet, dummynet, hast, zfs, geom, racct, MAC, audit, ipfw, pf, virtio, carp, devd, devfs, pkg... Pour simplifier cela, il existe un certain nombre de logiciels offrant à l'administrateur une logique uniforme au-dessus de ces divers éléments. C'est le cas d'une certaine façon de Docker sous Linux mais aussi de Proxmox, CloudStack ou plus simplement de la libvirt. Faisons un petit tour des différents projets qui avancent dans ce sens sous FreeBSD. ---- [Projet CBSD](http://www.bsdstore.ru/en/about.html) [ezjail](http://erdgeist.org/arts/software/ezjail/) [iocage](https://github.com/pannon/iocage) [Dirver bhyve pour la libvirt](http://libvirt.org/drvbhyve.html) ---- La virtualisation sous FreeBSD =========== Des conteneurs ----------- Les _jails_ sont apparus dans FreeBSD le 28 avril 1999 suite à un [commit]( http://svnweb.freebsd.org/base?view=revision&revision=46155) de [[Poul-Henning Kamp]]. Ils étaient initialement utilisés par l'hébergeur *servetheweb.com* pour gérer différentes configurations d'Apache sur une même machine. Il s'agit d'un moyen de cloisonner l'exécution de différentes applications au sein d'un même système. On parlera donc de *partition*, ou de _conteneur_ (*container*). Il serait par contre abusif de parler de *machines virtuelles* du fait du partage du noyau. Il est également délicat d'évoquer un mécanisme de sécurité. Car si les _jails_ sont des objets pratiques pour appliquer une politique de sécurité, ils ne la portent pas en eux-mêmes. On parle de *chroot sécurisé* car ils renforcent la sécurité du chroot et non parce qu'ils améliorent la sécurité du système. C'est toute la nuance entre cloisonner et sécuriser. Au fil de l'histoire de FreeBSD les jails se sont étoffés avec en particulier une réécriture complète et de nombreux outils satellites tels que vnet qui permet de créer des interfaces réseaux virtuels, racct pour la limitation des ressources. La configuration des jails est centralisée dans le fichier ```/etc/jail.conf``` ``` # Valeurs par défaut: # utiliser /etc/rc, monter /dev ... exec.start = "/bin/sh /etc/rc"; exec.stop = "/bin/sh /etc/rc.shutdown"; exec.clean; mount.devfs; # Il est possible de définir des paramètres dynamiques path = "/var/jail/$name"; # Une jail typique foo { host.hostname = "foo.com"; ip4.addr = 10.1.1.1, 10.1.1.2, 10.1.1.3; } # On surcharge les valeurs par défaut bar { exec.start = ''; exec.stop = ''; path = /; mount.nodevfs; persist; // dans cette jail, il n'y a aucun processus } ``` La mise en oeuvre des jails est détaillée dans [cette page]( http://www.freebsd.org/doc/en/books/handbook/jails.html) du Handbook. Du GNU ou du Linux ou du vieux FreeBSD ----------- Grâce à [Debian GNU/kFreeBSD](http://fr.wikipedia.org/wiki/Debian_GNU/kFreeBSD) et [Gentoo FreeBSD](https://www.gentoo.org/proj/en/gentoo-alt/bsd/fbsd/), il est tout à fait possible de déployer un espace utilisateur basé sur la glibc et les outils GNU dans une jail. Par exemple, pour déployer une jail sous Debian/kFreeBSD, il suffit d'installer le package ```debootstrap``` : ```bash pkg install debootstrap debootstrap wheezy /jails/debian-wheezy ``` Une autre caractéristique intéressante concernant FreeBSD est l'aspect polymorphique du noyau. En effet celui-ci peut se faire passer pour un noyau Linux ou encore pour un FreeBSD d'une version antérieure. Cela permet toutes les combinaisons de jails possibles, sous Linux, sous FreeBSD 5. C'est fort utile pour virtualiser d'anciens serveurs impossibles à migrer sans l'overhead d'une émulation complète du hardware (FreeBSD 5.5 qui ne connaît pas le PCI-Express par exemple). De véritables VM ----------- [Bhyve](http://linuxfr.org/users/unemouledeplus/journaux/bhyve-un-hyperviseur-natif-pour-bsd) est un projet d'[hyperviseur de type 1](http://fr.wikipedia.org/wiki/Hyperviseur#Type_1_:_natif) (comme Xen ou KVM) se basant sur les instructions de virtualisation des processeurs Intel et sur Virtio introduit dans FreeBSD 10. ![Fonctionnement de bhyve](http://bhyve.org/static/bhyve-diagram.jpg) Aujourd'hui, il est possible de lancer des machines virtuelles sous FreeBSD (9+), OpenBSD et Linux (Centos, Ubuntu et Debian) et de faire sous certaines conditions du [PCI-passthru](https://wiki.freebsd.org/bhyve/pci_passthru). Quelques projets intéressants =========== Ezjail (l’ancêtre) ----------- Pour gérer des jails, l'outil de référence reste [ezjail](https://erdgeist.org/arts/software/ezjail). Il s'agit d'une collection de scripts facilitant le déploiements de conteneurs. ```bash pkg install ezjail ezjail-admin install ezjail-admin create example.com 'em0|10.0.0.2' ezjail-admin start example.com ezjail-admin console example.com ``` Il gère entre autres zfs, le chiffrement, ainsi que la création de _flavor_ pour déployer rapidement des machines pré-configurées. iocage ----------- [iocage](https://github.com/pannon/iocage) est un tout jeune projet. Il s'agit également d'un script shell. Contrairement à ezjail qui se veut plus exhaustif, il se base exclusivement sur vnet (pile réseau virtuelle), racct (limitation des ressources) et ZFS. ```bash iocage fetch iocage create -c name=test iocage list iocage limts $uuid vmemoryuse:deny=1g ``` CBSD ----------- On parle beaucoup de Docker sous Linux depuis quelques temps. Une alternative pour FreeBSD pourrait monter en puissance : [CBSD](http://www.bsdstore.ru/en/about.html) (sous licence BSD donc). Il s'agit là encore principalement de scripts shells, même si la prise en compte de l'aspect cluster (réplication, migration) a donné lieu à du développement en C. Cette application qui permet de créer et gérer des conteneurs mais propose aussi de nombreuses fonctionnalités comme l'intégration de _bhyve_ ou de [qemu](http://wiki.qemu.org/Main_Page). CBSD prend en charge différents modes de virtualisation et beaucoup de fonctionnalités : - déploiement rapide de _jails_ from scratch ; - import / export d'images ; - clones et migrations (y compris sur des noeuds distants) ; - snapshots ; - accounting au niveau réseau et ressources ; - priorités, limite de ressources, quotas ; - réplication distante ; - jails avec Xorg ; - Bhyve ; - réseau virtuel pour les jails (VIMAGE) ; - prise en charge des architectures non natives via qemu (arm ou mips64) ; - dépôt d'images déjà prêtes. CBSD propose par ailleurs une interface en mode web pour gérer les VM : ![L'interface en mode web](http://www.bsdstore.ru/img/dashboard1_th.png) Pilote bhyve pour la libvirt ----------- Enfin pour terminer ce panorama, il est à noter qu'il existe désormais un [pilote byhve pour la libvirt](http://libvirt.org/drvbhyve.html). Ce qui vous permettra d'introduire de façon indolore un peu de diversité dans votre parc d'hyperviseurs. ```bash virsh connect bhyve:/// ``` Ceci est bien sûr hautement expérimental. Pour l'heure par exemple, vous ne pourrez configurer qu'un seul réseau et qu'un seul disque pour vos VM. Mais les choses avancent à grands pas...

AltStyle によって変換されたページ (->オリジナル) /