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