Tous en prison - Harmonie entre jails et systèmes de fichiers -
Épisode 1
=====================================================================

Date: 2012-07-14 10:31
Author: jdn06
Category: Distributions
Tags: FreeBSD, jails, sauvegarde, tar

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…