Maniatux's Blog

Welcome to the internet

Sysadmin

Maniatux.fr tourne maintenant sur un VPS Classic 1 (OVH)

Rédigé par Xavier - - Aucun commentaire

Pour 2,39€ TTC/mois je loue désormais un serveur chez OVH. En fait il s'agit d'un VPS, c'est à dire qu'il n'est pas physique, c'est un container OpenVZ. Pour ce prix on a donc 1 vcore, 1Go de ram, 10GB d'espace disque, 1 IPv4 + 1 IPv6 (/128). J'ai choisi la distribution Debian Wheezy en 64 bits.

Pourquoi avoir choisi d'externaliser le serveur du blog ? Pour les raisons suivantes :

  • Vie privée : maniatux.fr étant "public", j'étais ennuyé que son IP soit celle de mon domicile (risque d'attaques, de recoupement d'informations, etc).
  • Continuité de service : entre les reboot de box, les arrêts volontaires en cas d'orage, les reboot pour mises à jour, les bidouillages, ce n'était pas l'idéal pour un site web.
  • Envie de tester ce que vaut un serveur à 2,39€.

Pour le moment mon ressenti sur ce VPS est plutôt bon et, chose intéressante, son cpu :

$  cat /proc/cpuinfo
[...]
model name	: AMD Opteron(tm) Processor 6128

De l'Opteron ! C'est étonnant. Tous les serveurs que j'ai vus dans ma vie étaient tous en Intel Xeon. Je commençais à croire que personne ne voulait de l'AMD Opteron et j'étais très curieux de savoir ce que cela vaut. Autre point intéressant, la version du noyau :

$ uname -r
2.6.32-042stab092.3

Un kernel 2.6.32 ?? Et oui, parce qu'on est sur une plateforme en OpenVZ. Ce dernier se base sur un kernel RHEL modifié, et c'est encore le 2.6.32 qui est utilisé. Le 3.10 (utilisé sur RHEL7) ne semble pas annoncé. Dommage car les kernel récents apportent beaucoup d'améliorations, et le 2.6.32 nous ramène quand même en 2010.

Pour le moment je suis plutôt satisfait de ce VPS, très correct pour le prix si on peut se limiter aux 10GB d'espace de stockage.

ArchBSD dans une jail FreeBSD 10

Rédigé par Xavier - - Aucun commentaire

ArchBSD peut être installé dans une jail sur un hôte FreeBSD très facilement car très proche. En effet, là où Debian GNU/kFreeBSD est une Debian utilisant un noyau FreeBSD, ArchBSD peut se résumer à l'équation suivante : ArchBSD = FreeBSD + pacman. En effet sur ArchBSD on retrouve un rc.conf (avec des daemon_enable="YES") et le fonctionnement ne nécessite pas de couche de compatibilité Linux.

Création de la jail

Malheureusement ArchBSD ne propose pas d'image tout prête qu'il suffirait de décompresser. Il va falloir utiliser pacman et bidouiller un peu pour le faire fonctionner.

# pkg install pacman

Ensuite créez un fichier pacman.conf (dans le répertoire courant) avec le contenu suivant :

[options]
SigLevel = Never
[core]
Server = ftp://ftp.archbsd.net/core/os/x86_64

Note : x86_64 est à remplacer par i686 si votre système est 32 bits.

Créez le répertoire de la jail ainsi que deux répertoires nécessaires à pacman :

# mkdir /usr/jails/archbsd
# mkdir -p /usr/jails/archbsd/var/lib/pacman
# mkdir -p /usr/jails/archbsd/var/cache/pacman/pkg

Procédez maintenant à l'installation :

pacman -Sy base \
-r /usr/jails/archbsd \
--cachedir /usr/jails/archbsd/var/cache/pacman \
--arch x86_64 \
--config pacman.conf

Configuration de la jail

Editez votre /etc/jail.conf pour y ajouter votre jail archbsd. Exemple :

# DEFAULT PARAMETERS
#
exec.start      = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
path = "/usr/jails/$name";
host.hostname = "$name";

# INDIVIDUAL JAIL PARAMETERS
#
archbsd {
        ip4.addr = re0|192.168.0.13;
        persist;
}

Ensuite démarrez la jail :

# service jail start

Configurer ArchBSD

Entrez dans la jail ArchBSD :

# jexec archbsd bash

Premièrement, nous avons un souci avec pacman. En effet la détection de l'architecture ne fonctionne pas bien (FreeBSD utilise amd64 pour les systèmes 64 bits, alors que sur les dépôts de ArchBSD c'est x86_64), il faut donc la forcer. Editez le fichier /etc/pacman.conf et modifiez comme suivant :

Architecture = x86_64

Note : Bien entendu si vous êtes sur du 32 bits, c'est i686 qu'il faut saisir.

Ensuite il faut initialiser le keyring de pacman, avec les commandes suivantes :

# pacman-key --init
# pacman-key --populate archbsd

Et voilà, ArchBSD est prêt !

Retour sur Debian GNU/kFreeBSD dans une jail FreeBSD

Rédigé par Xavier - - Aucun commentaire

Dans un précédent article j'ai résumé comment installer Debian GNU/kFreeBSD Wheezy dans une jail FreeBSD 10 et indiqué que j'avais migré le serveur hébergeant mon blog : Maniatux.fr : Debian GNU/kFreeBSD + IPv6 . Voici un petit retour d'expérience sur Debian GNU/kFreeBSD, que j'appellerai kfreebsd parce que c'est plus court.

Tout d'abord il vaut mieux utiliser la branche Jessie, et pas Wheezy car il y a quelques bugs gênants comme OpenSSH qui ne fonctionne pas à moins de devoir faire pas mal de bidouilles sur l'hôte. De plus la branche kfreebsd de Jessie est développée sur un kernel FreeBSD10, alors que pour Wheezy c'est un FreeBSD8, on s'assure donc en théorie une meilleure compatibilité.

Maniatux tournait sur une jail FreeBSD avec nginx et php_fpm compilés à partir des ports. Suite au passage en kfreebsd, avec toujours nginx et php5-fpm à partir d'apt-get, j'ai noté une baisse des performances d'affichage de mes pages, et une hausse du load average sur mon serveur. C'est très faible mais tout de même notable à l'utilisation. La commande top semble indiquer que c'est php5-fpm qui est le plus gourmand de tous, la version fournie par debian n'étant probablement pas la même que dans les ports.

A propos de la commande top, l'indicateur d'utilisation de la ram ne semble plus fiable avec des jails sous kfreebsd. Par exemple si je lance htop dans ma jail kfreebsd, il m'indique que le système utilise 120Mo de ram. Si j'installe htop directement sur l'hôte et l'exécute, il n'indique que ~30Mo. Dans la jail kfreebsd il n'est pas évident d'utiliser df car il faut exécuter une commande permettant d'extraire les informations de /proc/mounts et le résultat n'est pas toujours optimal.

Si on met de côté ces quelques points, mon impression est plutôt positive. Debian (le projet) a fait un super travail en portant son système d'exploitation sur FreeBSD, et cela n'a pas été fait à la va vite. Il y a véritablement un support suivi et cela prouve une fois de plus que Debian est une distribution de référence.

Aperçu de bhyve - Episode 1 vmrun.sh

Rédigé par Xavier - - Aucun commentaire

bhyve est un hyperviseur pour FreeBSD qui utilise les capacités de virtualisation du CPU (VT-x + EPT chez Intel et AMD-V + RVI chez AMD) et fourni des périphériques virtuels VirtIO aux systèmes invités. En un sens c'est une alternative à Linux-KVM pour FreeBSD. Cette solution vient en complément des jails qui se limitent à faire tourner du FreeBSD. bhyve supporte déjà des systèmes invités Linux, FreeBSD et OpenBSD. On ne sait pas encore si Windows sera supporté, mais c'est très probable. bhyve n'émule pas encore de bios ni de carte VGA, ce qui signifie que vous allez devoir travailler en mode texte, exactement comme pour les jails.

Il est intéressant de noter que bhyve est déjà pris en charge par libvirt, ce qui vous permet de gérer et piloter vos VM grâce à cette API, en local ou via une console distante (virt-manager). Je testerai cela probablement dans un prochain article.

Du virtuel dans du virtuel

Je n'ai pas de machine physique libre ayant les pré requis pour bhyve, c'est à dire avec un processeur suffisamment récent pour supporter à la fois VT-x et EPT. J'ai donc utilisé mon ordinateur portable de 2012 équipé d'un i5, sur lequel tourne Windows 7 (pour le travail) et sur lequel j'installe VMware Workstation. Pourquoi VMware ? Parce qu'il fourni une fonctionnalité intéressante : le support de nested VT-x. En gros la machine virtuelle que vous faites tourner peut elle-même faire tourner des machines virtuelles. Donc je vais pouvoir créer dans VMware une machine virtuelle FreeBSD, puis exécuter bhyve dans cette dernière afin de faire tourner d'autres VM dedans.

A noter que VirtualBox ne supporte pas le nested VT-x, ce qui signifie que votre VM FreeBSD ne pourra pas exécuter bhyve car absence d'accès aux instructions VT-X + EPT du CPU hôte.

Allons-y

Le site du projet bhyve fourni un lien vers un fichier texte contenant les instructions. Donc je me contente de les suivre pour le moment.

Charger les modules

Pour charger les modules de manière volatile :

# kldload vmm
# kldload if_tap

Note : Si une erreur s'affiche au chargement du module vmm, il est probable que votre processeur ne soit pas supporté, ou qu'il ne dispose pas des instructions VT-x ou EPT.

Pour charger les modules de manière persistante (au reboot), éditez le fichier /boot/loader.conf

vmm_load="YES"
if_tap_load="YES"

Récupérer le script d’exécution

Le script d’exécution devrait être présent dans /usr/share/examples/bhyve/vmrun.sh mais il est également possible de le récupérer à cette adresse :

# fetch http://people.freebsd.org/~neel/bhyve/vmrun.sh

Ce script va gérer la création de la VM, le montage de l'iso ,d'un périphérique de stockage et d'une interface réseau. Rendons-le exécutable :

# chmod +x vmrun.sh

Guest FreeBSD

Récupérer une ISO de FreeBSD 10 :

fetch http://people.freebsd.org/~neel/bhyve/release.iso.iso

Démarrer la VM :

./vmrun.sh vm1

Le bootloader du FreeBSD invité devrait alors s'afficher.

Après le chargement du kernel, on obtient une magnifie erreur de point de montage root non trouvé :

J'ai trouvé ce fil de discussion qui explique une solution de contournement, mais le problème c'est que je ne peux rien saisir au clavier, les caractères ne sont pas pris. Bug ? Limitation due à l'utilisation de VMware ? Il semblerait plutôt que ce soit un problème de console non adaptée.

Bon, faisons un deuxième essai. La FAQ de Bhyve mentionne l'existence d'images RAW de FreeBSD11-CURRENT conçues exprès pour démarrer dans Bhyve. Commencez par visiter le FTP avec l'adresse suivante : http://ftp.freebsd.org/pub/FreeBSD/snapshots/VM-IMAGES/11.0-CURRENT/amd64/Latest/ afin de repérer le nom de l'image. Ensuite récupérez cette image avec fetch (commande non détaillée car l'URL est trop longue).

Ensuite supprimons le fichier release.iso pour ne pas qu'il soit capturé par vmrun.sh, décompressons notre image RAW, et démarrons le tout :

# rm release.iso
# unxz FreeBSD-11.0-CURRENT-amd64-20140714-r268622.raw.xz
# ./vmrun.sh -d FreeBSD-11.0-CURRENT-amd64-20140714-r268622.raw vm1

Et cette fois ça marche. On arrive au login, il suffit d'entrer "root" sans mot de passe, et on accède à notre système virtuel FreeBSD 11 :

Pas d'accès au réseau pour le moment, mais c'est normal car la carte tap0 crée par le script vmrun.sh n'est reliée à rien (ni bridge ni routage). Il ne semble pas possible pour le moment de "sortir" de la vm ou de l'éteindre avec la commande shutdown. Cette dernière commande ne fera qu'arrêter le système guest, mais bhyve continuera de fonctionner. La solution constite à passer sur un autre tty (ALT+F2) et utiliser la commande suivante :

# bhyvectl --destroy --vm=vm1

Bhyve fonctionne plutôt bien mais est extrêmement basique, beaucoup de choses se font manuellement et l'émulation d'un CDROM ne semble pas vraiment au point puisque FreeBSD10 n'a pas réussi à booter. L'utilisation d'une image FreeBSD-11 toute prête a permis de contourner le problème, le boot s'est déroule bien et le clavier est pris en charge.

J'ai expliqué mon problème de FreeBSD10 qui ne boote pas sur irc (#bhyve), on m'a recommandé d'utiliser vmrc. Cela fera peut-être l'objet d'un prochain article.

Guest Linux

bhyve affirme supporter les guest Linux. Faisons donc un essai avec Debian Wheezy.

# fetch http://cdimage.debian.org/debian-cd/7.6.0/amd64/iso-cd/debian-7.6.0-amd64-netinst.iso

Ensuite démarrons cette VM à l'aide du script vmrun.sh mais en spécifiant cette fois l'emplacement de l'ISO :

# ./vmrun.sh -I debian-7.6.0-amd64-netinst.iso vm2

Le test va être rapide car cela ne marche pas du tout :

En l'absence de BIOS ou UEFI, bhyve n'est pas capable de booter tout seul. La FAQ de bhyve indique la nécessité d'utiliser sysutils/grub2-bhyve. On va s'arrêter là et miser sur vmrc dans un prochain article car il parait que tout ceci est alors automatisé.

Conclusion

Cette première découverte de bhyve est très intéressante. L'idée est bonne, utiliser la virtualisation matérielle VT-x + EPT et VirtIO pour les périphériques, ce qui assure en théorie le maximum de performances. Malheureusement son utilisation n'est vraiment pas évidente, on sent le côté expérimental de la chose. bhyve est un produit encore brut qu'il faudra exploiter avec de meilleurs outils.

Rapport d'incident (09/07/2014)

Rédigé par Xavier - - Aucun commentaire

Comme vous avez pu le constater, maniatux.fr a été indisponible toute la journée. Cela est du à une perte de connexion à internet sur la BBox, résolu après un reboot en rentrant à la maison vers 18h30.

Classé dans : Sysadmin - Mots clés : aucun