Les pépites d’OpenSolaris : le projet Crossbow

Cette semaine de vacances me permet de faire une petite pause dans la préparation du réseau de l’Utt Arena. Ce billet ne traitera donc pas de cet événement mais d’un autre sujet que je n’ai pas évoqué depuis quelques temps : OpenSolaris. J’ai eu l’occasion de passer pas mal de temps à faire de l’administration réseau sous cet OS et j’y ai découvert des fonctionnalités pour le moins impressionnantes.

Avant de commencer, il est nécessaire de balayer toutes les éventuelles rumeurs quant à une éventuelle disparition d’OpenSolaris suite au rachat par Oracle. De nombreux médias dits « spécialisés » ont publié des informations très largement fausses par rapport aux conséquences du rachat ou ont très largement oublié certains faits. Si vous souhaitez un article relativement neutre sur le sujet, je vous conseille le blog c0t0d0s0.org.

Le projet Crossbow est un sous-projet lié à la distribution OpenSolaris qui a été intégré à la version 2009.06. L’objectif de ce projet était d’adapter la pile TCP/IP à la virtualisation et d’y ajouter de nombreuses fonctionnalités. Je m’intéresserais plus particulièrement aux outils de gestion de bande passante.

La gestion de bande passante ou QoS est une fonctionnalité bien ancrée dans les équipements réseaux. L’objectif de cette technique est de réguler les flux réseau afin de permettre un partage équitable ou bien une limite définie. La mise en place de cette fonctionnalité est particulièrement compliquée et obscure sous Linux. La documentation, particulièrement nécessaire étant donnée la complexité des outils, est difficile à trouver.

OpenSolaris propose un première utilitaire permettant de différencier les différents flux réseaux selon des critères de niveau 3 et 4 : flowadm. Vous allez pouvoir créer un « flow » selon différents critères que vous choisirez. Vous allez ensuite pouvoir attribuer différentes caractéristiques à ce flux. Par exemple, vous pouvez lui donner un ou bien une priorité, voire même une limite de bande passante. L’incroyable avantage de cet outil est la simplicité avec laquelle il est possible de l’utiliser. En une commande, vous arrivez à créer un flux, lui donner une priorité et lui appliquer une limite de bande passante. En voici un exemple :

flowadm add-flow -l bge0 -a transport=UDP -p maxbw=100M, priority=low limit-udp-1

La page de man de flowadm est particulièrement claire et propose de nombreux exemples dont celui ci-dessus. Une seule commande pour faire tout ca, je trouve ca plutôt exceptionnel. La limite minimale de bande passante que vous pouvez attribuer est fonction du MTU. Dans le cas d’un MTU Ethernet classique, il s’agit de 1,2Mbps.

Une autre fonctionnalité très intéressante est la possibilité d’effectuer de « l’accounting » sur les différents flows que vous avez créé. Vous pourriez par exemple avoir envie de connaitre la quantité de données échangées pour chaque flux. OpenSolaris vous propose ceci ainsi que la possibilité de voir la quantité de données échanges par intervalle de temps. Pour cela, vous pourrez utiliser l’utilitaire acctadm. Cet utilitaire vous permet d’activer l’accounting au niveau de votre système et la commande flowadm vous permettra d’en visualiser le résultat.

Ce billet effectue un tour d’horizon rapide de ce que peut proposer le projet Crossbow en termes de gestion de bande passante réseau. OpenSolaris a clairement une grande avance sur Linux sur ce point bien que ce dernier en soit capable, mais clairement pas avec autant de simplicité.

L’envers de la virtualisation, épisode 1

tech-presentation-2J’ai eu l’occasion d’évoquer les nombreux mérites de la virtualisation dans ce blog. La virtualisation est un des « buzzword » très à la mode actuellement. On en parle en long, en large, en travers et en profondeur (rien que ca …). Je n’évoquerais pas le « cloud computing » dans cet article car j’aurais l’occasion d’évoquer le sujet ultérieurement.

A en croire les louanges faites de la virtualisation, il serait quasiment possible de croire qu’il s’agit du paradis de l’informatique, la solution pour toutes les dominer. Dans un premier épisode, je dresserais le tableau qui est dressé par les commerciaux de produits de virtualisation. Dans un second épisode, je m’attacherais à coller plus à la réalité. Cet article se veut ironique au cas où vous auriez un doute.

En route vers le paradis

La virtualisation présente de nombreux avantages et permet de donner un nouveau souffle aux architectures informatiques. Ceci se fait essentiellement à travers la mutualisation des équipements physiques. Cette mutualisation des équipements permet donc des réductions de coûts. Vous allez juste devoir rajouter une petite « boite noire » qui se maintient automatiquement et qui permet de donner une flexibilité incroyable à votre infrastructure.

Vous allez pouvoir remplacer votre baie de serveurs physiques ayant chacun leur utilité par un petit nombre de serveurs plus puissants dotés d’une plateforme de virtualisation. Cette affirmation est exceptionnellement alléchante mais ne présente que le point de départ et le point d’arrivée. Le chemin entre les deux n’est pas sans embuche et ne s’emprunte pas aveuglément.

Vous allez pouvoir économiser de l’argent au niveau du stockage car plus les disques sont volumineux plus le prix au gigaoctet est faible. Vous allez peut être même pouvoir gagner en redondance car vous aurez plusieurs serveurs. Vous allez économiser au niveau du réseau car vous aurez besoin de moins de ports réseau.

Les nouvelles machines que vous allez acheter vont être des monstres de puissance et donc théoriquement vous aurez plus de puissance et de rapidité. De plus, vous avez lu de nombreux articles sur la virtualisation qui vous ont démontré que les performances d’un OS virtualisé sont pratiquement identiques à celles d’un OS natif. Que de bonheur !

Au final, voici un bon nombre de clichés que nous rencontrons tous les jours autour de la virtualisation. Je vous donne rendez-vous pour le second épisode qui s’attachera à donner du réalisme à toutes ces promesses.

Aller plus loin que Linux : Solaris

Je vais commencer une nouvelle série de billets sur un système d’exploitation alternatif à Linux. Je ne parlerais pas ici de Windows car mes compétences dans ce système d’exploitation sont fortement limités. Je vais parler de Solaris édité par Sun Microsystems. Je m’attacherais dans un premier temps à faire un tour d’horizon des éléments qui rendent intéressant ce système d’exploitation.

solaris-logo

La plupart de mon expérience en administration système s’est faite autour de la distribution Linux Debian. Debian est une distribution qui je trouve particulièrement simple à utiliser. Les développeurs de cette distribution ont pris un soin particulier de simplifier les différentes taches d’administration système. Ceci passe par une gestion claire et simplifiée des répertoires systèmes mais surtout par un gestionnaire de paquets apt-get. J’ai également eu l’occasion d’utiliser CentOS et Red Hat qui sont pratiquement identiques. L’environnement de cette distribution est également largement simplifié avec une gestion simplifiée des répertoires systèmes et divers utilitaires visant à simplifier l’administration système. Je ne pourrais pas dire que le gestionnaire de paquets inclus dans ces distributions simplifie réellement la vie car je n’ai jamais réussi à le faire marcher correctement.

Un inconvénient fréquemment évoqué par rapport à ces distributions est le fait qu’il est plus difficile de comprendre le mécanisme de fonctionnement du système d’exploitation. Ceci est lié à la simplification des taches d’administration et n’est pas forcément un inconvénient a priori. Cette simplification devient problématique lorsqu’il s’agit de faire du débuggage dans un système de production qui présente un comportement bizarre. Les messages d’erreurs standards sont relativement faciles à diagnostiquer mais lorsque le problème est moins « franc », les choses se corsent. J’adhére partiellement à cet inconvénient. Je souhaitais surtout obtenir une connaissance plus approfondie d’un système d’exploitation. Je me suis donc penché sur Sun Solaris.

Lorsque l’on commence à s’intéresser à Solaris, les choses sont relativement claires dès le début, on va avoir à faire à un Unix dit « traditionnel ». Ceci signifie que les repères acquis sous Linux vont disparaitre totalement et que les outils de simplification seront soit incomplets soit inexistants. D’un autre coté, Solaris est un système d’exploitation qui a de nombreux arguments en sa faveur. Vous avez surement entendu parler de ZFS, le système de fichier révolutionnaire. Vous avez peut être entendu parler de DTrace qui vous donne une vision approfondie du fonctionnement de votre système d’exploitation. Vous avez peut être entendu parler des zones Solaris et de l’intégration native de Xen sous le nom xVM. Et encore, nous n’avons parler de SMF. Bref, autant dire que les arguments sont bien présents.

Solaris permet de s’affranchir des outils et couches de simplification d’un système d’exploitation Linux et de se plonger réellement dans la compréhension du fonctionnement d’un système d’exploitation Unix. Afin de réussir à l’utiliser correctement, il va être nécessaire de comprendre les mécanismes internes. Ceci est un chantier tout à fait passionnant que je vous encourage à entreprendre. Vous ne serez pas seul dans cette entreprise, Sun a prévu pour vous des documentations particulièrement claire et explicite que vous trouverez sur leur site. Sun a également prévu un cursus de certification accessible gratuitement sur leur site. Le passage de l’examen est payant par contre pour la modique somme de 40€.

Mais, pourquoi pas Gentoo ou BSD ? Ces distributions permettent certes de comprendre plus en profondeur le fonctionnement d’un système d’exploitation mais n’ont pas les arguments qu’a Solaris ni la documentation ni le parcours de certification. Je ne dis pas que s’intéresser à Gentoo ou BSD n’aurait eu aucun intérêt, loin de là. J’ai juste préféré changer d’orientation vers une distribution, certes un peu moins libre, radicalement différente.

L’intérêt de la virtualisation

tech-presentation-2Je vous ai déjà présenté le projet Xen dans un billet précédent en vous en ventant ses mérites mais je ne vous ai même pas présenté l’intérêt de la virtualisation. Je vais donc faire le tour des avantages que peut apporter la virtualisation à une plateforme informatique existante ou bien à un projet de plateforme informatique. Ces avantages se divisent en quatre catégories principales : coût, sécurité, criticité et performances.

Constat

Dans une architecture classique (sans virtualisation donc), chaque service dispose de sa propre machine physique. Cette règle informelle ou plutôt « Best Practice » permet d’éviter que la compromission d’un service impacte d’autres services sur la machine. En conséquence, une architecture de ce type implémente une machine par service proposé sans compter les « Hot Spare ». Les « Hot Spare » sont des machines qui attendent une panne de la machine principale pour de prendre le relai et assurer la continuité du service.

Au final, les machines sont peu utilisées surtout avec les configurations matérielles d’aujourd’hui comprenant processeurs Dual-Core ou Quad-Core.

Avantages en terme de coût

La virtualisation va permettre de mutualiser les équipements physiques afin de supporter plusieurs systèmes d’exploitation sur une même machine physique. Au lieu d’avoir une machine physique pour chaque service, nous allons donc avoir un système d’exploitation pour chaque service. Les deux situations ne sont pas totalement équivalentes mais on s’en approche.

Une société va donc pouvoir héberger dans un espace moindre, avec une climatisation moindre et avec une consommation électrique moindre un même nombre de services. La variable d’ajustement sera le taux d’utilisation des machines physiques. L’architecture sera donc utilisée de manière plus efficace. De manière plus concrète, au lieu d’avoir un parc de serveurs bas de gamme hébergeant chacun un service, une société va pouvoir acheter un nombre restreint de serveurs haut de gamme plus puissants. Ceci va lui permettre de louer moins d’espace en datacentre et d’utiliser proportionnellement moins d’électricité.

Il faut cependant noter qu’une architecture virtualisée rajoute une surcharge de maintenance dans la mesure où il a été rajouté une couche applicative entre les ressources physique et le système d’exploitation. Cette couche applicative aura besoin d’être maintenue ce qui générera des coûts supplémentaires par rapport à une architecture classique.

Avantages en terme de sécurité

Etant donné que la virtualisation exécute plusieurs systèmes d’exploitation sur une même machine, il est primordiale qu’elle assure un cloisonnement parfait. Une faille dans ce dernier constituerait une faille de sécurité considérable. La virtualisation s’efforce d’arriver à un cloisonnement proche du cloisonnement physique. Le cloisonnement dans le cadre de la virtualisation reste cependant largement meilleur que dans le cas de plusieurs services sur un même système d’exploitation.

La virtualisation donne également la possibilité de créer des environnements de tests standardisés afin d’effectuer des tests de pénétration ou bien d’infection. La possibilité de mettre en pause une machine virtuelle est intéressante afin de pouvoir étudier le comportement de code malicieux par exemple. Je ne connais pas d’implémentation de cette possibilité mais la perspective me semble prometteuse.

Avantages en terme de criticité

Nous avons qualifié la possibilité d’exécuter plusieurs systèmes d’exploitation sur une même machine physique en tant qu’avantage. Il s’agit certes d’un avantage en terme de coût mais surement pas d’un avantage en terme de criticité. Une panne matérielle induit l’indisponibilité d’un grand nombre de services. La virtualisation permet de palier à cette problématique en fournissant de nombreux outils.

Dans le cadre d’un système d’exploitation classique, il est simple de sauvegarder des applications, des données ou des fichiers de configuration. Cependant, la virtualisation va permettre de faire une sauvegarde de la totalité des données d’une machine. Dans le cas d’une restauration de sauvegarde, il sera possible de restaurer un système d’exploitation fonctionnel rapidement sans devoir tout réinstaller. Ceci est un gros avantage de la virtualisation.

La virtualisation permet également de migrer des systèmes d’exploitation d’une machine physique à une autre en moins d’une seconde. Ceci permet d’éviter une indisponibilité en cas de modification de la configuration matérielle d’un équipement.

Avantages en terme de performance

Dans le cadre d’une architecture classique, si une machine nécessite plus de mémoire vive par exemple, il est nécessaire de prévoir un temps d’indisponibilité et le déplacement d’un technicien sur site. La virtualisation va permettre d’augmenter les ressources physiques de manière instantanée et sans manipulation de matériel ni déplacement de personnel. Il suffit d’exécuter une commande afin de rajouter de la mémoire vive ou de l’espace disque. Traditionnellement, ces augmentations se faisaient dans la mesure des ressources physiques. Depuis quelques temps, il est possible d’attribuer plus de mémoire vive qu’il est disponible dans la machine. La mémoire vive non utilisée par une machine virtuelle sera ainsi attribuée à une autre.