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…