Maniatux's Blog

Welcome to the internet

Les solutions de virtualisation sur Linux

Written by Xavier - - 5 comments

Depuis 5 ans environ je m'intéresse de près aux solutions de virtualisation sur Linux. J'ai eu l'occasion d'en utiliser plusieurs et j'ai décidé de rédiger un court article à ce sujet. Pourquoi court ? Simplement parce que chaque solution mérite un livre entier et qu'en un article je ne peux tout résumer efficacement.

Notez que dans l'article je vais omettre volontairement 3 solutions :

  • VServer car je ne l'ai jamais utilisé
  • Docker car je ne l'ai jamais utilisé non plus et selon moi il se destine plus au packaging d'applications
  • Virtualbox car trop vaste et pas très utilisé sur les serveurs

OpenVZ

OpenVZ est en quelques sortes la solution historique de virtualisation basée sur les containers sous Linux. C'est un outil puissant qui permet de faire fonctionner plusieurs systèmes invités avec limitation du CPU, RAM, quota de disque mais surtout émulation du /proc et /sys ce qui permet au système invité de voir réellement les ressources allouées. Par exemple si on définit une limite de 256Mo de RAM, un htop montrera que votre système dispose 256Mo de RAM. Si on alloue 10GB de disque, df montrera 10GB. Cela rend OpenVZ idéal si vous souhaitez fournir des VPS à vos clients, car ils seront à la fois isolés et transparents pour l'utilisateur.

Deux inconvénients majeurs à OpenVZ : ce n'est pas un projet upstream (nécessite d'utiliser un kernel patché) et l'inertie du projet. Le dernier kernel supporté par OpenVZ est le 2.6.32 ce qui nous ramène tout de même en 2010 (c'est le kernel de rhel6). Dans un billet de blog l'équipe d'OpenVZ défend ce choix : le 2.6.32 n'est pas vieux, il est "stable et éprouvé". Il faut tout de même constater qu'en 2015 le 2.6.32 peut être pesant, face à certaines technologies qui nécessitent un kernel récent (systemd). Un travail est en cours pour qu'OpenVZ soit utilisable sur un kernel upstream récent, malheureusement il est loin d’être fonctionnel. Fin 2014 l'équipe OpenVZ a annoncé une simplification dans leur fonctionnement : Virtuozzo (version propriétaire) et OpenVZ (version libre) vont fusionner et une version compatible kernel 3.10 sera disponible. Pas de date annoncée, juste "début 2015" et pas de nouvelles depuis.

Il faut noter également que dans un container il n'est pas possible de charger des modules noyau, vous devez le faire sur l'hôte. Par exemple si vous souhaitez utiliser fuse ou iptables, vous devez au préalable charger les modules sur l'hôte. Cela peut être un avantage (sécurité) ou un inconvénient (si votre hébergeur n'a pas chargé les bons modules sur l'hôte, c'est fichu pour vous). Autre point intéressant : OpenVZ est la solution utilisée par OVH pour ses VPS Classic.

LXC

LXC est un ensemble d'outils permettant d'utiliser les cgroups pour la virtualisation basée sur les containers. Contrairement à OpenVZ qu'il vise à remplacer, LXC est upstream. Malheureusement son évolution est très lente, et il y a encore beaucoup de manques qui ne sont toujours pas comblés malgré les années. Cela va de la faille de sécurité au désagrément. Deux exemples : tout d'abord un utilisateur root dans un container qui arriverait à écrire sur l'hôte serait toujours considéré comme root, l'isolement n'est donc pas parfait. Ce point est colmaté plus ou moins efficacement par SELinux, Apparmor ou par le mode "unprivileged" de LXC qui pose à mon sens beaucoup plus de désagréments que d'avantages. Autre point négatif, LXC n'émule pas de /proc ni /sys. Donc si on alloue 256Mo de RAM à notre container et que l'on lance htop dans ce dernier, la quantité de RAM affichée sera faussée (ce sera celle de l'hôte, par exemple 8GB), idem pour df et l'espace disque. Impossible de louer des VPS à des clients puisque les informations du système qu'ils verront seront seront celles de l'hôte, donc faussées.

LXD et LXCFS doivent palier ce manque, malheureusement ces projets sont encore jeunes (fin 2014) et pas du tout utilisables à l'heure actuelle. LXD va permettre de lancer de manière simple des containers en mode "unprivileged" avec une surcouche Apparmor pour parfaire l'isolement. LXCFS va émuler /proc et /sys ce qui va non seulement permettre au container de voir réellement les ressources qui lui sont allouées, mais aussi résoudre certains problèmes quand on empile les instances de systemd.

Xen

Xen est une solution complexe et particulière, à mi chemin entre la vraie virtualisation et les containers. C'est un mini système d'exploitation qui démarre en premier et qui se comporte comme une sorte de switch entre vos systèmes invités pour l'accès au matériel. C'est une solution particulière pour deux raisons : votre système d'exploitation hôte devient Dom0, il n'est plus le maître, c'est un invité tournant sur Xen pour lequel vous devez allouer des ressources. Le rôle Dom0 lui permet de piloter Xen. Ensuite il nécessite que vos systèmes invités soient "compatibles" Xen. C'est le cas pour Linux en upstream ainsi que FreeBSD et NetBSD dans des versions spécifiques, mais pas Windows.

Pour faire tourner Windows dans Xen, il faut invoquer le mode "HVM" qui va alors fonctionner plus ou moins comme KVM, c'est à dire avec la virtualisation CPU. A cela s'ajoutent différents modes: PVHVM et PHV qui correspondent à différents niveaux de mélanges entre la virtualisation CPU et la paravirtualisation. Xen est une science à lui tout seul et il y a de quoi y passer des jours.

Contrairement aux containers limités à Linux, Xen supporte plusieurs systèmes d'exploitations, dans plusieurs versions. En effet chaque système invité (DomU) charge son kernel, ce qui offre plus de libertés (par exemple la possibilité de charger des modules). Et là encore, l'isolement est très bon ainsi que la visibilité des ressources allouées, ce qui permet d'utiliser Xen si vous souhaitez fournir des VPS.

Xen est utilisé entre autres par AWS (le cloud Amazon).

KVM

KVM est la solution phare de virtualisation sous Linux, poussée par Red Hat qui base plusieurs solutions dessus. KVM est une puissance brute entourée d'excellents composants tels que VirtIO qui ajoute de la paravirtualisation dans les périphériques virtuels. Avec les instructions de virtualisation et un bios émulé, KVM permet de faire fonctionner quasiment n'importe quel système d'exploitation.

Malheureusement, le gros défaut selon moi de KVM est le manque d'outils simples à utiliser. Virt-manager est à mon sens trop bugué pour convaincre, et ce depuis des années. oVirt est en revanche excellent mais taillé pour les grosses infrastructures. Au final KVM est peut être un peu trop restreint aux professionnels qui peuvent bâtir une infrastructure conséquente pour y faire tourner du oVirt ou de l'Openstack.

Conclusion

A chaque solution son usage et le sujet est tellement vaste qu'il est difficile de conclure. Néanmoins je constate que LXC n'est toujours pas mûr, OpenVZ reste devant. Pour ceux qui ont les moyens, l'infrastructure et des besoins spécifiques, KVM et Xen sont des solutions toutes indiquées même si à mon sens KVM sera plus logique pour les sysadmin habitués à VMware.

Blacklist all the spammers !

Written by Xavier - - no comments

Last days I received lots of spams comments, about ~100 per day. I run Pluxml on my own server so I decided to blacklist their source IPs, with the following method :

  1. Make sure that all the spam comments are offline (waiting for moderation), make sure to validate all legit content.
  2. Exctract the IPs from the .xml files in the server (each comment has its own .xml, with a _ prefix if offline) with a script.
  3. DROP these IPs in iptables.

This is not really clean but it's a fast solution. Just be careful, don't drop legit IPs.

get-ips.sh

#!/bin/sh
#
awk '// {gsub("<[^>]*>", ""); print}' /path/to/pluxml/data/commentaires/_* >> ./ip.txt

Execute ./get-ips.sh you will get a ip.txt file.

blacklist-ips.sh

#!/bin/sh
#
IP="./ip.txt"
if [ -f $IP ]; then
        while read BLOCKED; do
                iptables -I INPUT -s $BLOCKED -j DROP
        done < $IP
fi

This script will read /root/ip.txt and will blacklist the content in iptables.

This is volatile so don't forget to save your iptables configuration or your blacklist will be lost if you reboot your server.

Manjaro et Nvidia Optimus

Written by Xavier - - 4 comments

J'ai eu l'occasion de bidouiller un ordinateur portable DELL fonctionnant avec un hardware Intel + Nvidia Optimus. Le principe est intéressant sur papier, c'est l'APU Intel qui est relié physiquement à l'écran ainsi qu'aux connecteurs, et il est capable de déléguer les calculs de rendu au GPU Nvidia lorsque nécessaire. Bien sûr en pratique cela ne fonctionne pas très bien sur Linux, à cause des pilotes Nvidia non libres et du vieillissant Xorg pas vraiment prévu pour fonctionner comme ça.

Cependant des courageux ont développé des outils comme bumblebee pour gérer la cohabitation Intel / Nvidia sur Linux. Manjaro va plus loin encore plus loin puisqu'un outil graphique facilitant la mise en place est disponible. De plus, si vous démarrez un LiveCD / LiveUSB, une option est disponible dès le boot pour activer les pilotes propriétaires (Optimus est pris en charge).

Cependant je ne sais pas si cela fonctionne correctement. Selon les applications utilisées, l'APU Intel sera parfois plus performant que le GPU Nvidia. Par exemple Stellarium est beaucoup plus rapide sur Intel que Nvidia, alors que pour Minecraft c'est l'inverse. Au moins, par défaut, c'est l'Intel qui fonctionne et la Nvidia semble désactivée puisque l'autonomie batterie est excellente.

$ java -jar Minecraft.jar # 30FPS avec Intel
$ optirun java -jar Minecraft.jar # 70FPS avec Nvidia GT720M

Si la solution semble fonctionner correctement et surtout ne pas pénaliser l'autonomie batterie, ce n'est pas encore parfait. Les technologies "hybrides" graphiques sont à éviter si vous utilisez autre chose que Windows. Le mieux reste de choisir du 100% Intel.

Jeu du moment #13 : Dragon Age Inquisition

Written by Xavier - - no comments

Résumé

Dans l'univers de Dragon Age, les mages sont considérés comme dangereux et ils sont donc soumis à la surveillance permanente des templiers, un ordre religieux de guerriers spécialisés dans la lutte contre la magie. Le précédent opus (Dragon Age II) se terminait sur la révolte des mages menant à une guerre civile sanglante. Dragon Age Inquisition commence lorsqu'un conclave est organisé entre les différentes factions afin de mettre fin à la guerre, mais tout ne se passe pas comme prévu car une énorme explosion provoque la mort de tous les participants ainsi que l'apparition de nombreuses failles permettant aux démons de venir dans notre monde.

Il n'y a qu'un seul survivant de cette explosion et c'est vous, avec une étrange marque sur la main et une belle amnésie. La marque vous donne le pouvoir de refermer les failles ce qui vous vaut d'être rapidement propulsé à la tête de l'inquisition, un ordre disparu depuis longtemps mais remis en place pour lutter contre la menace des failles de l'immatériel. Vous allez donc devoir trouver des alliés, construire une réputation à votre ordre, gagner une influence politique, militaire et financière pour l'inquisition.

Graphismes et Univers

Dragon Age a son univers fantasy présent depuis 3 jeux déjà, donc plutôt riche avec un historique, des factions, des codes, et énormément de livres à trouver pour en apprendre plus. L'action du jeu se déroule dans les contrées de Ferelden et Orlais, composées de nombreuses villes et lieux semi-ouverts dans lesquels le joueur est amené à se promener. Déserts, Forêts, villes inspirées de la renaissance, du moyen-âge, monde de l'immatériel, c'est très varié. Vous pouvez discuter avec vos compagnons, faire leurs quêtes personnelles, ouvrir des possibilités de romances

Le monde n'est pas ouvert à la manière d'un Skyrim, mais semi-ouvert comme sur un MMO avec de grandes cartes délimitées par des murs invisibles et des chemins balisés. Mais l'impression de liberté est bien là puisque tout est très grand. Le système de voyage rapide est d'ailleurs bien appréciable.

Les graphismes sont assez réussis puisque le jeu utilise le Frostbite Engine 3, proposant du Directx11 avec de la tesselation, occlusion ambiante et des filtrages assez poussés. Le rendu des visages est très impressionnant ainsi que les effets de lumière et de météo (la luminosité peut varier en fonction des nuages). L'ensemble est gourmand mais pas de manière excessive, ma GTX670 supporte le mode Ultra même si les chutes à 30 FPS sont fréquentes. Mais le résultat est beau.

4 races sont jouables : Humain, Nain, Elfe, Qunari. En revanche et contrairement à DA: Origins, pas de prologue différent en fonction des origines du joueur. Il y a quand même une influence mineure dans le jeu, par exemple si vous jouez un elfe certains PNJ vont croire que vous êtes là pour faire le ménage, tandis qu'un humain sera la plupart du temps bien vu par la noblesse Orlesienne.

Il n'y a pas d'import de sauvegarde possible pour réutiliser les choix des précédents opus, en revanche il existe Keep, accessible en ligne et sans Flash qui permet de construire une histoire à l'aide de vignettes correspondant aux choix de DA: Origins et DA 2 puis d'importer le tout dans DA: Inquisition au début d'une partie. Le système est plutôt bien pensé puisqu'il permet aux gens comme moi qui n'ont plus leurs vieilles sauvegardes de réutiliser quand même leurs choix précédents.

Gameplay

Dragon Age Inquisition est un RPG autrement dit ce sont les statistiques de votre personnage et celle des ennemis qui vont déterminer l'issue du combat, ainsi que le choix des attaques et pouvoirs. Le jeu propose 3 classes : guerrier, voleur et mage qui donnent accès à des compétences organisées par branches. De manière assez classique un guerrier pourra ainsi s'orienter vers un build de tank ou de dps. A cela viennent s'ajouter des "spécialisations" qui vont renforcer certains aspects de votre personnage. Par exemple la spécialisation de templier permet de mieux résister à la magie et faire plus de dégâts aux mages et aux démons. Ces classes et spécialisations offrent un bon potentiel de rejouabilité puisqu'on peut tester des builds différents et alterner les compagnons.

Étrangement, Dragon Age Inquisition semble avoir beaucoup de mal avec la notion de "heal". Ainsi les mages ne peuvent plus soigner, le seul moyen de regagner de la vie est d'utiliser des potions et notons qu'il n'y a pas de regen automatique entre les combats. Donc avant de partir en mission il faut vous approvisionner en potions et revenir au campement lorsque le stock s'épuise. Ce qui peut sembler être un élément intéressant de gameplay se révèle en fait pénible puisqu'on passe énormément de temps à faire des aller-retour pour aller se réapprovisionner en potions de soin.

Les combats sont plutôt dynamiques puisqu'il n'y a pas de tour par tour (mais une pause tactique est possible), tout est en temps réel et le positionnement de vos personnages peut avoir une influence (un archer fait plus de dégâts si il est en hauteur, un assassin fait des critiques s'il frappe dans le dos, etc). Il est possible d'utiliser la vue classique (dans le dos du personnage) ou alors la vue tactique. Cette dernière était présente dans Dragon Age : Origins et Dragon Age II, malheureusement elle est totalement ratée dans Dragon Age Inquisition pour deux raisons : le zoom arrière insuffisant (ne permet pas de voir tous les éléments sans faire défiler) et le manque de fonctionnalités (pas possible de sélectionner plusieurs personnages d'un coup ou de leur créer une "file d'attente" d'actions). Cette faute va de paire avec l'interface inventaire consolisé façon Skyrim, plutôt indigeste sur PC et pas très pratique. Parmi les choses pénibles il y a aussi les clics sur les objets qui ne font pas déplacer le personnage. Ainsi pour le loot il faut déplacer son personnage au clavier pour le positionner à côté, puis cliquer. Très lourd quand il y a des dizaines de choses à ramasser...

Pour faire des "pauses" entre les quêtes, il existe une table d'Etat major, élément intéressant qui permet d'assigner à vos "lieutenants" des tâches à accomplir. Par exemple sur la table se trouve une quête qui consiste à aider des réfugiés. Chaque lieutenant va proposer une solution, avec un temps réel estimé (de quelques minutes à plusieurs heures) et c'est à vous de choisir. Lorsque le temps sera écoulé, un rapport et une récompense vous sera fourni. Intéressant, mais cela aurait plus sa place sur une application smartphone, puisqu'à part cliquer et attendre il n'y a rien à faire.

Les cartes sont peuplées de mobs et certains ont tendance à repoper, parfois au mauvais endroit, exactement comme dans un MMO alors que pour un jeu solo il aurait été préférable de gérer ce repop quand le joueur est ailleurs. Par exemple dans ma seconde partie en difficile, mon groupe de niveau 6 a attaqué un "grand ours" (élite) de niveau 8. Le combat se passait bien jusqu'à ce que deux autres grands ours apparaissent soudainement et rejoignent la mêlée. Ensuite un 4e ours, de taille normale cette fois, est venu lui aussi dans la mêlée. Donc mon combat pensé contre 1 ennemi est devenu une mêlée dans laquelle plus rien n'est prévisible à cause du repop sauvage. Heureusement mon tank était solide et avait beaucoup de potions, l'issue fut donc positive.

Les cartes sont grandes mais le déplacement est parfois pénible à cause des murs invisibles et des dénivelés. Parfois pour vous rendre à un point qui peut sembler à 10 mètres, il faut faire un détour de 10km et trouver le bon chemin car à la manière d'un Skyrim le plan n'est pas précis du tout, c'est une vue satellite qui reste absolument floue sur les chemins empruntables ou non.

Pour en revenir aux problèmes intrinsèques aux MMO : les quêtes secondaires sont insipides. En effet dans 95% des cas elles se résument à aller farmer, récupérer par exemple 10 peaux de béliers. La bonne vieille quête fedex... Donc l'intérêt scénaristique est proche de 0 et on passe son temps à courir dans la campagne pour accomplir des objectifs débiles qui gonflent artificiellement (mais efficacement) la durée de vie du jeu. Cela contraste avec les quêtes principales qui sont magnifiquement mises en scène avec beaucoup de rebondissements.

La durée de vie est plutôt importante, puisque ma première partie m'a pris 90h. Mais comme mentionné précédemment, cette durée de vie est due en très grande partie aux quêtes secondaires insipides, la quête principale pouvant probablement être bouclée en une dizaine d'heures.

Tout n'est pas noir dans ce jeu et pour le prouver, voici deux excellents éléments : un système de craft intéressant car il est possible de fabriquer des armes et armures avec un libre choix des matériaux ce qui offre des propriétés uniques (on peut par exemple faire une armure qui privilégie la protection et une autre qui gonfle les stats de force) et le système Keep qui permet de "paramétrer" l'histoire du jeu (décrire les choix que vous avez fait dans les précédents jeux aura une influence directe sur l'histoire et les personnages présents ou non).

Conclusion

Si dans l'ensemble le jeu est plutôt bon et réussi, il a de nombreux défauts impardonnables qui font qu'il est loin d'être le jeu de l'année. Il me rappelle beaucoup swtor dans le sens où j'ai l'impression que c'est un MMO packagé pour être joué en solo avec des doublages et des cinématiques. C'est un jeu à gros budget, correct, long, mais je ne peux m'empêcher d'être agacé par certains éléments comme l'interface consolisée et la volonté de EA de vouloir caser encore une fois du multijoueur dans tous ses jeux, au détriment du solo.

Dragon Age Inquisition remonte-t-il le niveau de la série ? Faut-il l'acheter ? A mon sens oui et non. Pour un jeu à gros budget de 2015, on a quand même affaire à quelque chose de bon, parfois addictif. Son côté MMO non assumé peut en rebuter certains mais si vous aimez Dragon Age, si vous avez une grosse carte graphique à rentabiliser, si l'immersion et l'histoire sont importants pour vous, alors foncez.

Classified in : Culture - Tags : none

Je donne

Written by Xavier - - 11 comments

Je garde du matériel qui m'encombre et dont je souhaite me débarasser. Donc s'il y a des gens intéressés sur Nantes ou Angers, je donne :

  • Un lecteur DVD / formats multimédia (lit les DivX mais c'est un vieux truc de 2005 donc peu de codecs doivent être supporés). Connectique RCA & Peritel mais pas de HDMI. La télécommande a quelques soucis.
  • Un PC à base d'AMD Athlon64 + 1GB de ram +disque 160GB.
  • Une carte mère + CPU AMD Athlon 64. Pièces détachées elles doivent marcher.
  • Un PC AMD Phenom X4 + 4GB de RAM.
  • Une carte mère pour AMD Athlon (premier du nom). Aucune idée du bon fonctionnement ou non.
  • Un switch 8 ports 1000Mbps Netgear (déjà donné).
  • Une borne wifi Netgear (déjà donné).

Si intéressé laissez moi un commentaire en n'oubliant pas de remplir le champ avec votre adresse e-mail :)

Classified in : Uncategorized - Tags : none