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…).