Archiver des containers LXC

On parle beaucoup depuis quelques temps de Docker et des containers Linux LXC (https://linuxcontainers.org/), qui permettent d'avoir une approche légère de la virtualisation.

La version 1.0 de LXC est sortie en février 2014, et est incluse dans la plupart des distributions Linux.

Il est très facile de créer une machine, la cloner, la lancer en mode éphémère (qui ne conserve pas les modifications), et la détruire via des commandes :

lxc-create -t ubuntu -n machine1
lxc-clone -o machine1 -n clone1
lxc-start-ephemeral -o machine1
lxc-destroy -n clone1

Il n'existe cependant pas (encore) de commande pour archiver un container, puis le restaurer, soit sur la même machine hôte soit sur une autre machine (pour transférer un container entre deux machines).

Sauvegarde

Comme les machines virtuelles sont créées sous la forme d'une arborescence, l'archivage / sauvegarde est cependant possible via une simple commande tar, par exemple, une fois la VM arrêtée. Les commandes se font dans un compte root, qui possède les bons droits sur les répertoires :

cd /var/lib/lxc
tar zcf /data/backup/lxc/machine1.tar.gz machine1

Ceci va créer une archive au format tar.gz, que l'on pourra mettre à l'abri ou transférer sur une autre machine.

On gagne en moyenne 50 à 60% de place en compressant l'archive.

Restauration

Une fois l'archive / sauvegarde créée, il est facile de restaurer la machine, en se positionnant dans le répertoire où sont stockées les VM (à savoir /var/lib/lxc) :

cd /var/lib/lxc
tar zxf /tmp/machine1.tar.gz

On peut ensuite normalement démarrer la machine via

lxc-start -n machine1

Problèmes et erreurs

Il peut arriver que la machine ne démarre pas, avec un message d'erreur.

J'ai constaté qu'un fichier rootfs.hold était présent à la racine de la VM :

ls machine1
config fstab rootfs/ rootfs.hold

En supprimer ce fichier rootfs.hold, la machine a redémarré correctement.

Script d'archivage

Pour me simplifier la vie, j'ai créé un script d'archivage, lxc-archive, qui permet de gérer les sauvegardes et restauration, en effectuant les vérifications qui vont bien :

  • existence et arrêt de la machine pour la sauvegarde,
  • non-existence de la machine en mode restauration

 

 

Catégorie