Les jails sont
vraiment une formidable technique pour les serveurs auto-hébergés. Comme
mes interlocuteurs linuxiens restent souvent assez sceptiques devant cet
enthousiasme, commençons par en expliquer l’intérêt à qui n’en a pas eu
l’usage.
Les jails permettent de créer des dizaines de machines partiellement
virtualisées au sein de son serveur avec la plupart des avantages d’une
machine virtuelle, sans la lourdeur (en ressources de la machine et pour
l’administration) inhérente à la virtualisation. Par exemple, mon
modeste eeePC 900 pourvu d’un seul giga de RAM accueille sans qu’il y
paraisse 10 machines virtuelles. Si je passais à 50, je pense que le
seul changement vraiment significatif serait le démarrage de 50 jails,
forcément un peu long ; mais ensuite, processeur et mémoire ne semblent
pas plus affectés que si les services contenus dans ces jails tournaient
directement sur la machine.
Bon, donc, techniquement, c’est très performant, mais ça sert à quoi ? Je
n’insisterais pas sur l’aspect sécuritaire, même si mon titre semble
appeler de tels développements : le cloisonnement des services est
évidemment une protection intéressante ; néanmoins, dans le cas d’un
serveur domestique, la chose n’est pas forcément essentielle.
Non, l’intérêt principal, c’est la sauvegarde et le transfert des
services d’une machine à l’autre. Je m’explique : lorsqu’on héberge des
services importants (mails par exemple), on tient :
- à préserver ses données
- à pouvoir reconstruire très rapidement son serveur à l’identique
ailleurs en cas de défaillance
Pour cela, il faut utiliser une politique de sauvegarde bien conçue qui
serve ces deux objectifs. Dans le cas d’un serveur hébergeant une
dizaine de services directement, les données importantes à préserver
sont assez éclatées :
- Configuration du parefeu
- Configuration desdits dix services (dans /etc ou
dans /usr/local/etc)
- Données des services (dans /var/mail, dans /srv/http, dans
/home etc.)
Bref, tout est dispersé et le seul moyen de pouvoir reconstruire
rapidement le serveur est le backup complet. J’imagine que vous ne voyez
peut-être pas le rapport avec les systèmes de fichiers, annoncé dans le
titre, mais nous y sommes presque.
De nombreux linuxiens proposeront quelque chose comme un tar ou un rsync
sur l’ensemble de la machine. Mais il faut tenir compte d’une seconde
problématique : pour pouvoir être correctement sauvegardés, certains
services demandent à être arrêtés, sans quoi les données sauvegardées
par tar à l’instant t ne seront pas compatibles avec leurs compléments
contenus dans d’autres fichiers sauvegardés à l’instant t+1. J’ai mesuré
l’ampleur de ce problème à mes dépens avec
OpenJabNab,
un jour où j’avais vraiment besoin de ma sauvegarde… inutilisable.
Qu’à cela ne tienne : arrêtons le serveur, démarrons-le même depuis un
livecd (nous sommes auto-hébergés, donc tout-puissants !) et lançons le
tar en question pour les heures à venir. Soit, mais :
- Il faut être chez soi ; pas de sauvegarde pendant les vacances… On
peut certes renoncer au livecd et se contenter d’arrêter les daemons
des services qui peuvent poser problème, mais on ne sait pas qu’il y
aura problème avant d’en faire l’expérience ; il faudrait tester la
reconstruction du serveur et sa mise en ligne pour être sûr de
n’avoir pas péché par optimisme.
- Les services hébergés ne permettent pas toujours de rester
hors-ligne durant plusieurs heures toutes les semaines. Quid du
mail, par exemple ?
Et c’est là que le système de fichiers (ou pour Linux le gestionnaire de
volume logique) entre en jeu, grâce aux clichés ou snapshots : ils
permettent de figer en quelques instants un état du système de fichiers
qu’on copiera ensuite, plutôt que de copier directement les fichiers.
Résultat : un serveur coupé quelques minutes et non plus quelques heures.
Si l’on combine les jails et les snapshots, le bonheur est total,
puisque les services forment des blocs homogènes (et non plus dispersés
sur tout le système) qu’on peut copier intégralement, sans pour autant
être obligé de les arrêter plus que quelques minutes ou quelques
secondes, selon le type de système de fichiers.
Voilà pour l’intérêt de la chose. Nous examinerons la méthode dans
l’épisode suivant…