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.