Travailler avec LXC

Updated 21 Août 2019

Sauvegardes instantanées

Si vous utilisez Btrfs, zfs ou lvm, lxc-snapshot peut être exécuté presque instantanément. Cela peut être important lorsque vous devez supprimer ou minimiser les temps d'arrêt. Si vous utilisez Btrfs pour votre conteneur, il faut utiliser le paramètre -B btrfs lors de l'exécution de lxc-create. Ensuite, lxc créera un sous-volume pour stocker le contenu du conteneur rootfs. Plus tard, le conteneur sera cloné à l'aide des outils spécifiques de Btrfs.

Si vous disposez déjà d'un conteneur et que celui-ci utilise Btrfs, vous pouvez le récupérer. Pour ce faire, procéder comme suit. Si vous utilisez un autre système de fichiers, vous devrez également transférer les données sur un autre support, formater le premier, y remettre vos données, puis effectuer les opérations suivantes.

Migration

Dans cet exemple, le nom du conteneur est calculer. Remplacez-le par le vôtre.

Arrêtez le conteneur :

/etc/init.d/lxc.calculate stop

Renommez le répertoire rootfs :

cd /var/calculate/lxc/calculate

mv rootfs rootfs.old

Créez un sous-volume Btrfs et déplacez-y le contenu de rootfs :

btrfs subvolume create rootfs

mv rootfs.old/* rootfs/

rmdir rootfs.old

Corrigez les paramètres, notamment en remplaçant dir par btrfs :

/var/calculate/lxc/calculate/config

...
lxc.rootfs.path = btrfs:/var/calculate/lxc/calculate/rootfs
...

Démarrez le conteneur :

/etc/init.d/lxc.calculate start

Vérification

Pour vérifier si le conteneur utilise désormais un sous-volume Btrfs, exécutez :

btrfs subvolume list /var/calculate

ID 274 gen 258 top level 5 path lxc/calculate/rootfs

Créez un cliché du conteneur :

time /etc/init.d/lxc.calculate stop

real    0m2.252s

time lxc-snapshot calculate

real    0m0.072s

time /etc/init.d/lxc.calculate start

real    0m1.186s

Comme vous pouvez le constater, la sauvegarde ne prend que quelques trois secondes. Une fois cette opération effectuée, un sous-volume sera créé, contenant une copie des données :

btrfs subvolume list /var/calculate

ID 274 gen 258 top level 5 path lxc/calculate/rootfs
ID 277 gen 32 top level 5 path lxc/calculate/snaps/snap0/rootfs

Conclusions

En plus de réaliser des clichés plus rapides, vous utiliserez également moins d'espace disque, car les données ne seront enregistrées sur votre disque dur qu'à partir du moment où les modifications des fichiers seront devenues trop nombreuses. Cela dit, nous recommandons d'enregistrer une copie de votre cliché (snap0) ailleurs, de préférence sur un autre serveur. Pour ce faire, vous pouvez utiliser Rsnapshot.