Le Blog Utux

Parce qu'il n'y a pas que Linkedin pour se faire mousser avec des articles techniques

5 systèmes que j'aimerais tester

Rédigé par uTux

Ceci est une liste purement subjective de systèmes d'exploitations que j'aimerais bien tester en desktop ou en serveur "si j'avais le temps, si j'avais un use case, si j'avais un vieux notebook qui traîne dans un coin, si j'avais un petit serveur dispo pour monter un lab..."

GhostBSD

GhostBSD screenshot

J'adore FreeBSD, cela fait plus de 10 ans que je l'utilise sur 1 ou 2 serveurs dans un coin d'Internet ou de ma maison. A l'origine il me servait pour les jails - avant que Docker n'existe - sur une machine trop peu puissante pour supporter toute forme de virtualisation. J'avais même des jails en Debian GNU/kFreeBSD afin de combiner le meilleur des deux mondes.

Cependant, je n'ai jamais pu me motiver à utiliser FreeBSD en desktop car outre l'installation laborieuse de l'environnement de bureau complet, certaines features sont un peu moins pratiques que chez Linux (keymap, Wifi, hibernation...). Je dois admettre également que Docker me manque, bien que je pourrais apprendre à m'en passer en buildant mes propres jails.

GhostBSD est à FreeBSD ce que Manjaro est à Archlinux : une version prête à l'emploi pour un usage desktop. Et c'est un peu triste à dire mais depuis que DesktopBSD et PC-BSD/TrueOS sont morts, il ne reste que GhostBSD et NomadBSD pour remplir ce rôle.

GhostBSD pourrait être une bonne solution pour me permettre d'expérimenter le desktop sous FreeBSD.

Q4OS (Trinity)

Q4OS screenshot

Q4OS est une distribution Debian fournie avec l'environnement KDE Plasma ou Trinity, un fork de KDE 3.5 toujours maintenu. Alors que ce dernier n'est pas aussi populaire que MATE (qui rempli le même rôle en continuant à faire vivre l'esprit de GNOME2) Q4OS fait beaucoup d'efforts pour en proposer une version bien intégrée et agréable visuellement.

J'avoue que KDE 3.5 titille une fibre nostalgique en moi, même si je m'en souviens surtout comme d'un environnement bordélique et surchargé. Q4OS pourrait me donner l'occasion de me réconcilier avec ce DE.

Mageia

Mageia screenshot

On ne présente plus Mageia, le fork le plus fidèle à l'esprit d'origine de feu Mandriva. Je suis habituellement très critique envers cette distribution pour diverses raisons mais je dois avouer qu'elle a le mérite d'être encore là et d'être toujours indépendante. Dans un précédent article je disais même que je pourrais me réfugier dessus si jamais un jour Debian venait à disparaitre (ce qui était un pur exercice de pensée).

Utiliser sérieusement et longuement Mageia me permettrait peut-être de comprendre l'amour que portent certains utilisateurs à cette distribution qui manque gravement de moyens et qui vit dans le passé :)

OpenSuse

OpenSUSE screenshot

Lorsque l'on s'aventure sur le territoire des distributions Linux développées par une entreprise, on a généralement affaire au trio Red Hat, Ubuntu et SUSE. OpenSuse est la distribution communautaire gratuite disponible en deux cuvées : Leap (alignée sur la version de Suse Linux Enterprise Server - ou SLES) ou Tumbleweed (rolling release).

A l'instar de Drakeconf pour Mageia, OpenSuse dispose d'un outil graphique de configuration - Yast2 - dont j'ai beaucoup de mal à comprendre l'intérêt mais heureusement rien ne nous oblige à l'utiliser.

Suse ayant encore une bonne image auprès du grand public, en produisant gratuitement une distribution stable d'une grande qualité, j'aimerais bien trouver un jour un cas d'usage pour OpenSuse en desktop ou en serveur.

OpenIndiana

OpenIndiana screenshot

Après avoir écumé les distributions Linux et être passé par FreeBSD, NetBSD, OpenBSD... que reste-t-il ? Et bien la famille Solaris semble constituer une bonne piste. Le hic c'est qu'il n'existe plus vraiment de communauté pour maintenir les forks libres que sont OpenIndiana et OmniOS.

Malgré tout j'aimerais bien que ces systèmes reviennent en force afin de nous proposer un peu d'exotisme dans le monde des sysadmins.

ENLARGE YOUR HP PROLIANT MICROSERVER GEN8 - épisode 1

Rédigé par uTux

Je possède depuis plus de 2 ans un HP ProLiant MicroServer Gen8 qui tourne sous FreeNAS et fait office de NAS comme son nom l'indique. Équipé d'un Celeron G1610T, il tourne sous FreeNAS a offert des performances correctes jusqu'à ce que je décide un jour d'activer le chiffrement des disques. Ce processeur ne supporte pas les instructions AES-NI, donc le chiffrement et déchiffrement sont fait de manière logicielle, c'est lourd.

Pour y remédier il est possible de changer le CPU et se tourner vers des Xeon un peu plus costauds. J'ai donc commandé un E3-1260L (4c/8t @2.40Ghz). Niveau TDP on passe de 35W pour le Celeron à 45W ce qui reste correct pour le refroidissement semi-passif, surtout que le CPU ne tourne pas à 100% en permanence. Ce CPU offre 8 cœurs logiques, le turbo, et les instructions AES-NI ce qui devrait booster FreeNAS et les jails FreeBSD que je lui fais supporter.

En attente de réception du CPU !

FreeBSD: jouons avec iocage

Rédigé par uTux

En 2018, en matière de containers il n'y a pas que Docker ou LXC, il y a aussi FreeBSD et ses jails :) en fait ça existait longtemps avant et c'est plutôt bien fichu. J'ai longtemps utilisé le framework ezjail qui a l'avantage d'être simple et de fonctionner sans ZFS (j'avais un serveur anémique à base d'Atom 32 bit).

J'utilise FreeNAS et bien que leur web-ui permette depuis longtemps de créer des jails, cette solution est trop rigide, il est par exemple impossible d'upgrader une jail :( Bonne nouvelle, dans les dernières versions (avec le web-ui en beta ou via la ligne de commandes) on a droit à iocage qui est plus souple et supporte (entre autres) les upgrades.

Création d'une jail FreeBSD

Tout comme iohyve, il faut commencer par définir un pool de stockage ZFS. Cela peut être un pool existant, il ne l'écrase pas mais créé quelques datasets. Par exemple pour utiliser le pool data:

[root@freenas] ~# iocage activate data
ZFS pool 'data' successfully activated.

Ensuite on télécharge un template qui va servir à créer nos jails. Par exemple pour récupérer 11.1-RELEASE:

[root@freenas] ~# iocage fetch
[0] 9.3-RELEASE (EOL)
[1] 10.1-RELEASE (EOL)
[2] 10.2-RELEASE (EOL)
[3] 10.3-RELEASE
[4] 10.4-RELEASE
[5] 11.0-RELEASE (EOL)
[6] 11.1-RELEASE

Type the number of the desired RELEASE
Press [Enter] to fetch the default selection: (11.1)
Type EXIT to quit: 6
Fetching: 11.1-RELEASE

Downloading : MANIFEST [####################] 100% 0Mbit/s
Downloading : base.txz [####################] 100%  13.44Mbit/s
Downloading : lib32.txz [####################] 100%  12.66Mbit/s
Downloading : doc.txz [####################] 100%  10.76Mbit/s
Downloading : src.txz [####################] 100%  11.94Mbit/s
 11.94Mbit/sExtracting: base.txz... 
Extracting: lib32.txz... 
Extracting: doc.txz... 
Extracting: src.txz... 

* Updating 11.1-RELEASE to the latest patch level... 
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update4.freebsd.org... done.
Fetching metadata signature for 11.1-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 151 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150 done.
Applying patches... done.

The following files will be updated as part of updating to 11.1-RELEASE-p9:
[--- blablabla ---]
Installing updates... done.

On peut créer une jail nommée "unbound":

root@freenas:~ # iocage create -r 11.1-RELEASE -n unbound
unbound successfully created!

On lui met une adresse IP (en mode shared car j'ai encore quelques soucis avec le VNET):

root@freenas:~ # iocage set vnet=off unbound
Property: vnet has been updated to off
root@freenas:~ # iocage set ip4_addr="em0|192.168.0.201/24" unbound
Property: ip4_addr has been updated to em0|192.168.0.201/24

On démarre la jail:

root@freenas:~ # iocage start unbound
* Starting unbound
  + Started OK
  + Starting services OK

On entre dans la jail:

root@freenas:~ # iocage console unbound

FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 02:08:28 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
root@unbound:~ #

Autres features

  • Créer ses propres templates, utile pour créer des jails prêtes à l'emploi (avec SSH + authorized_keys, par exemple).
  • Upgrade des jails
  • Snapshots (et oui, zfs...)
  • VNET (la jail a sa propre stack réseau, utile pour les manipulations pare-feu ou vpn)
  • Limitations CPU & mémoire
  • Installation automatique de paquets
  • Montage de volumes bind
  • Création de jails kFreeBSD (à titre de proof of concept)
  • A la manière des dataset/pool zfs, chaque jail a des propriétés modifiables (get/set)
  • Ecrit en python

Conclusion

J'utilise iocage pour une jail backuppc et j'en suis plutôt content. Si l'aspect VNET reste à améliorer, on a quand même fait un grand pas par rapport à la solution maison de FreeNAS.

iocage c'est le meilleur de FreeBSD: les jails et zfs. La syntaxe est claire, facile à retenir et me donne presque envie de m'y remettre et de migrer tous mes services dessus. Je vous encourage à l'essayer! Je vous encourage aussi à manger du FreeNAS, c'est bon pour la santé.

FreeNAS 9.10 : jouons avec bhyve et iohyve

Rédigé par uTux

J'adore FreeNAS parce que c'est du FreeBSD bien exploité (zfs + jails) et mis en forme proprement au travers d'un webui. J'en parle un peu plus dans cet article et vous encourage toujours à mettre votre NAS propriétaire synlogy et compagnie à la décharge pour vous acheter un vrai serveur digne de ce nom.

FreeNAS 9.10 est disponible depuis peu et se base sur FreeBSD 10.3 ce qui nous amène bhyve, l'hyperviseur concurrent à qemu-kvm très prometteur qui nous permet de faire tourner des VM Linux (entre autres) en plus des jails. Même si cette feature est encore considérée comme expérimentale par FreeNAS, elle est tout même documentée.

FreeNAS fournit l'outil iohyve qui s'inspire de iocage et s'appuie fortement sur zfs. iohyve est génial parce qu'il est non seulement simple à utiliser mais en plus très intuitif car on retient rapidement les commandes. Notez que dans FreeNAS 10 bhyve sera présent dans le webui, pour le moment il faut encore y aller à la main ;)

/!\ Avertissement /!\

Il ne faut pas modifier les fichiers système de FreeNAS, car non seulement ils seront écrasés lors de la prochaine mise à jour, mais en plus ils risquent d'interférer avec le webui. Par exemple au lieu de modifier le /etc/rc.conf on va plutôt aller dans la section tunables qui est prévue à cet effet. On installe pas non plus de paquets avec pkg. Toutes les manipulations du paragraphe suivant font appel à des outils déjà présents qui travaillent dans le zpool contenant les données.

Installation d'une VM ubuntu-server-16.04

La première chose à faire est de configurer iohyve, il va créer ses dataset ainsi que le bridge si celui-ci n'existe pas déjà. Notez que la manipulation n'écrase pas vos dataset ou votre zpool, ne vous embêtez pas à en faire un autre. Dans l'exemple suivant, mon zpool est data et mon interface réseau bge1 :

[root@freenas] ~# iohyve setup pool=data kmod=1 net=bge1
Setting up iohyve pool...
On FreeNAS installation.
Checking for symbolic link to /iohyve from /mnt/iohyve...
Symbolic link to /iohyve from /mnt/iohyve successfully created.
Loading kernel modules...
bridge0 is already enabled on this machine...
Setting up correct sysctl value...
net.link.tap.up_on_open: 0 -> 1

On peut alors voir les dataset créés :

[root@freenas] ~# zfs list | grep iohyve
data/iohyve                                                 10.9G  1.08T    96K  /mnt/iohyve
data/iohyve/Firmware                                          96K  1.08T    96K  /mnt/iohyve/Firmware

Le dataset Firmware sert pour démarrer des guest en UEFI mais nous ne l'utiliserons pas. Si vous voulez en savoir plus, vous pouvez consulter cette page de wiki détaillant l'installation de Windows avec iohyve.

Pour que iohyve et les modules kernel soient chargés au démarrage, on les ajoute dans la section General > Réglages dans le webui de FreeNAS :

FreeNAS tunables.

On demande à iohyve de télécharger pour nous l'ISO (il est possible de les renommer, ce que je ne fais pas dans l'exemple) :

[root@freenas] ~# iohyve fetch http://releases.ubuntu.com/16.04/ubuntu-16.04-server-amd64.iso
Fetching http://releases.ubuntu.com/16.04/ubuntu-16.04-server-amd64.iso...
/iohyve/ISO/ubuntu-16.04-server-amd64.iso/ubun100% of  655 MB 1018 kBps 10m59s

Hop, deux nouveaux datasets :

[root@freenas] ~# zfs list | grep iohyve
data/iohyve                                                 10.9G  1.08T    96K  /mnt/iohyve
data/iohyve/Firmware                                          96K  1.08T    96K  /mnt/iohyve/Firmware
data/iohyve/ISO                                              644M  1.08T    96K  /mnt/iohyve/ISO
data/iohyve/ISO/ubuntu-16.04-server-amd64.iso                644M  1.08T   644M  /mnt/iohyve/ISO/ubuntu-16.04-server-amd64.iso

Maintenant, on créé notre VM puis on lui donne ses paramètres :

[root@freenas] ~# iohyve create vm-ubuntu 10G
Creating vm-ubuntu...
[root@freenas] ~# iohyve set vm-ubuntu loader=grub-bhyve ram=1G cpu=1 os=d8lvm
Setting vm-ubuntu loader=grub-bhyve...
Setting vm-ubuntu ram=1G..
Setting vm-ubuntu cpu=1...
Setting vm-ubuntu os=debian...

Les paramètres ont l'air évidents, mais trois d'entre eux méritent un petit complément :

  • loader=grub-bhyve : Par défaut iohyve ne va pas charger de bios ou uefi dans bhyve donc il doit utiliser un bootloader externe, ici c'est grub2-bhyve.
  • ram=1G : pour ubuntu, ne pas mettre moins, j'ai essayé avec 256M et j'ai eu ce bug. Une fois l'installation terminée par contre, on peut baisser.
  • os=d8lvm : je n'ai pas trouvé beaucoup de détails mais cela indique à iohyve le type de système invité. d8lvm correspond à Debian 8 avec stockage lvm (ce que ubuntu propose par défaut). Sans lvm on peut utiliser os=debian.

On jette un coup d'oeil aux zfs datasets :

[root@freenas] ~# zfs list | grep iohyve
data/iohyve                                                 10.9G  1.08T    96K  /mnt/iohyve
data/iohyve/Firmware                                          96K  1.08T    96K  /mnt/iohyve/Firmware
data/iohyve/ISO                                              644M  1.08T    96K  /mnt/iohyve/ISO
data/iohyve/ISO/ubuntu-16.04-server-amd64.iso                644M  1.08T   644M  /mnt/iohyve/ISO/ubuntu-16.04-server-amd64.iso
data/iohyve/vm-ubuntu                                      10.3G  1.08T    96K  /mnt/iohyve/vm-ubuntu
data/iohyve/vm-ubuntu/disk0                                10.3G  1.09T    64K  -

Maintenant, on ouvre une seconde console (CTRL+ALT+F2) ou une seconde connexion SSH, puis on se connecte à la console de la VM (il n'y a rien pour le moment, c'est normal, elle ne fonctionne pas) :

[root@freenas] ~# iohyve console vm-ubuntu

On revient sur le premier terminal / SSH, puis on lance l'installation de la VM :

[root@freenas] ~# iohyve install vm-ubuntu ubuntu-16.04-server-amd64.iso
Installing vm-ubuntu...

On retourne dans votre second terminal et là on voit enfin des choses apparaître :)

Cela rappelle beaucoup les installations de VM sur Xen.

On fait une installation normale de Ubuntu avec le réseau qui s'auto configure via DHCP. Lorsque c'est terminé, le reboot risque de ne pas fonctionner, il faut donc le faire à la main :

[root@freenas] ~# iohyve stop vm-ubuntu
Stopping vm-ubuntu...
[root@freenas] ~# iohyve list
Guest       VMM?  Running  rcboot?  Description
vm-ubuntu  YES   NO       NO       Tue Jul 12 22:38:55 CEST 2016
[root@freenas] ~# iohyve start vm-ubuntu
Starting vm-ubuntu... (Takes 15 seconds for FreeBSD guests)

Et la console confirme que ça fonctionne :)

Et voilà, ça fonctionne :)

La VM a même accès au réseau, on peut donc se logguer en SSH !

Conclusion

Encore une fois FreeNAS envoie du lourd et exploite les capacités de FreeBSD. iohyve permet d'utiliser bhyve + zfs tout en étant bien pensé et intuitif, et c'est une qualité rare (regard inquisiteur pointé vers lxd chez Canonical). Il est désormais possible d'avoir des VMs Linux sous FreeNAS ce qui conforte une fois de plus le fait que vous devriez jeter votre NAS propriétaire pour acheter un vrai serveur x86.

HP ProLiant MicroServer Gen8 : mon NAS homemade

Rédigé par uTux

Le HP Proliant Gen8 G1610T format micro tour est un petit serveur en forme de cube ayant la particularité d'offrir 4 baies de disque. Il est totalement silencieux avec une consommation électrique maîtrisée et est proposé à un prix abordable. Il existe en version Intel Celeron ou Intel Xeon, la première étant trouvable à moins de 300 euros (j'ai eu le miens à 226€ neuf chez Amazon en Septembre). Ce n'est pas si cher si on le compare à un NAS Synlogy d'autant qu'on a droit à du hardware beaucoup plus intéressant :

  • CPU Intel Celeron G1610T (double cœur, 64 bits, virtualisation)
  • 2GB de RAM ECC (extensible)
  • 2 cartes réseau gigabit
  • iLo (KVM IP)
  • Un emplacement PCI Express 16x format low profile.
  • Consommation en idle et sans disques de ~30W
  • Silencieux
Lien vers la fiche constructeur.

On a donc un vrai serveur sur lequel on peut mettre l'OS de son choix et faire de la virtualisation.

Après avoir mis 8GB de RAM ECC ainsi que 4 disques de 1To dans les baies, j'ai installé FreeNAS sur une clé USB. Au démarrage le ventilateur souffle fort (puisqu'on a affaire à un vrai serveur) mais il ralenti progressivement pour devenir quasiment inaudible. C'est simple : ce serveur fait moins de bruit qu'une Bbox Sensation fibre.

Les disques en cours d'ajout dans les baies.

Je connaissais déjà un peu FreeNAS mais il y a quelques années encore je n'étais pas très familier avec ZFS et FreeBSD. Aujourd'hui je le suis beaucoup plus et je découvre donc à quel point ce produit est bon. Quelle joie d'avoir à portée de main les outils pour gérer un zpool, programmer des scrub périodiques, des snapshots avec durée de rétention, des dataset, des périphériques block...

Bien entendu FreeNAS est orienté NAS donc au delà de ZFS on a les fonctionnalités de partage Windows, UNIX et Apple ainsi qu'une gestion complète des utilisateurs (intégration LDAP ou AD possible).

Les sysadmin FreeBSD seront ravis de noter la présence des jails. Si vous voulez que votre NAS fasse office de serveur DNS, il suffit de créer une jail qui tournera sur FreeBSD 9.3 et dans laquelle vous pourrez configurer named. Backuppc ? Idem, une jail avec les ports qui vont bien (ou pkg).

Mes jails sur FreeNAS.

Pour le stockage j'ai testé deux configurations :

  • 4 disques en raidz-1, similaire à du RAID5 : 3TB utiles
  • 2 disques en mirror + 2 disques en mirror, similaire à du RAID10 : 2TB utiles.

La première configuration semble la plus avantageuse car elle offre la plus grosse capacité de stockage mais souffre de mauvaises performances en écriture sans que je comprenne réellement pourquoi (bloqué à 30Mo/s). Refaire le zpool avec 3 disques + 1 spare règle le problème mais c'est dommage d'avoir un disque inutilisé. Il faut noter aussi que beaucoup de sysadmin déconseillent le raidz-1/RAID5 en raison de la reconstruction stressante en cas de changement de disque. Cet excellent article résume la situation. La deuxième configuration en mirror+mirror n'offre que 2TB de stockage (50%) mais fonctionne mieux et la maintenance est facilitée. Voici mon zpool de stockage "data" :


[root@freenas] ~# zpool status
  pool: data
 state: ONLINE
  scan: scrub repaired 0 in 1h38m with 0 errors on Wed Jan 20 03:38:41 2016
config:

	NAME                                            STATE     READ WRITE CKSUM
	data                                            ONLINE       0     0     0
	  mirror-0                                      ONLINE       0     0     0
	    gptid/094171e0-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0
	    gptid/0a481bb7-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0
	  mirror-1                                      ONLINE       0     0     0
	    gptid/0b1b6253-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0
	    gptid/0bf02931-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0

errors: No known data errors

Explication : le zpool data est composé de deux vdev additionnés : mirror-0 et mirror-1. Chaque mirror est composé de deux disques qui, comme leur nom l'indique, sont en miroir (comme du RAID1). Notez qu'il n'y a pas de "stripping" comme dans le RAID10 entre mirror-0 et mirror-1, les données sont écrites là où il y a de la place. L'avantage est qu'on peut avoir deux vdev de taille différente. Par exemple mirror-0 pourrait faire 1TB et mirror-1 faire 2TB, le zpool aurait donc une taille de 1+2 = 3TB là où un RAID10 s'alignerait sur le plus petit et n'aurait donc que 2TB disponibles. ZFS permet aussi de remplacer les disques au fur et à mesure et augmenter la taille du stockage, le tout à chaud. Pour la petite histoire, je l'ai déjà fait sur un serveur de production en remplaçant des disques de 2TB par des 4TB, le zpool est passé de 4 à 6 puis à 8TB.

La compression lz4 est activée par défaut dans FreeNAS car avantageuse en terme de stockage mais aussi de performances. En effet le coût CPU est faible et la réduction du nombre de blocs physiquement écrits et lus améliore la rapidité.

En conclusion le HP Proliant G1610T est le serveur que j'attendais depuis des années. Silencieux, peu gourmand mais néanmoins véloce, il a tout d'un grand surtout les baies de disque qui permettent de faire du stockage. Associé à FreeNAS, il bat toutes les solutions propriétaires du marché et se révèle beaucoup plus souple pour un sysadmin comme moi qui ne jure que par les produits qui offrent un vrai accès root.