Leider ist in den 2.xx Versionen von LXD noch keine direkte Backup-Funktion eingebaut.
Der Workaround geht über:
- Snapshot der VM erstellen
- Snapshot in Image wandeln
- Image exportieren
Für diese Schritte hab ich mir mal ein Skript zusammen gebaut, das ich nicht vorenthalten will:
#!/bin/bash
datum=$(date +%Y-%m-%d)
backupdir=/mnt/data/backup/lxd
#vmliste=$(lxc list | awk '$4 == "STARTED" {print $2}')
vmliste=$(lxc list --format csv -c n)
echo "Starte Backup auf $(hostname -f)"
echo " "
date
echo " "
echo "Sicherungsliste:"
echo $vmliste
echo " "
for vm in $vmliste
do
echo "Sichere VM: " $vm
lxc snapshot $vm backup && echo "Snapshot erfolgreich"
lxc publish $vm'/backup' --alias $vm'-backup' --compression none && echo "Publish erfolgreich"
[ -d $backupdir/$datum ] || mkdir $backupdir/$datum
lxc image export $vm-backup $backupdir/$datum/$vm.tar && echo "Export erfolgreich"
lxc image delete $vm-backup && echo "Image Cleanup erfolgreich"
lxc delete $vm/backup && echo "Snapshot Cleanup erfolgreich"
[ -e /var/lib/lxd/containers/$vm/backup.yaml ] && cp /var/lib/lxd/containers/$vm/backup.yaml $backupdir/$datum/$vm.yaml && echo "Config kopiert"
echo " "
done
date
echo " "
echo "Sicherungen abgeschlossen."
Die Formatierung und Ausgaben zielen herbei auf meine cron-Mail-Formatierung ab 😉
Am Anfang ist noch ein „Switch“, ggfs nur die laufenden VMs zu sichern.
Ich habe die gzip-Komprimierung aus Performancegründen abgeschaltet, andernfalls dauert der Publish sehr lange. Das Image ist dann zwar größer, aber auch bedeutend schneller fertig (bei meinem etwas schwachen Server…).