unstko.de | Blog

Blog über die Nutzung von AWS für meine Web-Dienste

Meine VirtualBox-Odyssee mit Snapshots

Bei der Nutzung der Snapshots von VirtualBox hatte ich eine Odyssee erlebt, welche mich davon überzeugt hat, keine Snapshots mehr einzusetzen. Stattdessen setze ich in Zukunft auf Klone.

Für die Software-Entwicklung auf meinem Arbeits-Notebook mit Windows 10 habe ich mir ein virtuelles Manjaro-Linux mittels VirtualBox aufgesetzt und eingerichtet. Zur regelmäßigen Sicherung des aktuellen Stands nutzte ich Snapshots. Dies sind sehr einfach und schnell zu erstellen. Ich konnte sie auch schon erfolgreich einsetzen, um auf einen vorherigen Stand zurückzukehren, wenn der aktuelle Stand defekt war. Somit haben die Snapshots als Backup-Funktion zunächst für mich funktioniert.

Was ich jedoch lange nicht bemerkt hatte, war die immense Größe der einzelnen Snapshots. Anstatt nur wenige hundert Megabyte oder wenige Gigabyte waren diese mit mehreren zig Gigabyte fast genauso groß wie das virtuelle Linux selbst. Bei einem Versuch der Erstellung eines Snapshots kam es dann zur Meldung, dass nicht mehr genügend Speicherplatz auf der Festplatte frei sei.

Veranschaulichung der Dimmensionen:

  • VM-Instanz mit 70 GB
  • Snapshots jeweils zwischen 30 und 80 GB
  • Festplatte mit 450 GB (inkl. Windows 10) war voll

Mein erster Lösungsversuch war das Löschen von alten Snapshots. Das scheiterte jedoch, weil beim Löschen von alten Snapshots dieser Stand mit den nachfolgenden gemerged wird. Dafür war aber ebenfalls kein ausreichender Speicherplatz mehr auf der Festplatte vorhanden. Einfach so Snapshots zu löschen (also ohne die Funktion in der VirtualBox, sondern einfach aus dem Betriebssystem heraus) ist nicht empfehlenswert, weil diese ja differentiell aufeinander aufbauen.

Also benötigte ich ausreichend externen Speicherplatz, um die gesamte virtuelle Maschine inkl. aller Snapshots zu verschieben und dort das Löschen der Snapshots vorzunehmen. Eine ausreichend große externe Festplatte mit 1,5 Terabyte war leider schon anderweitig im Einsatz für Backups meiner DiskStation. Zudem war die Festplatte dafür mit ext4 formatiert. Zum Glück hatte ich alte Festplatten aufgehoben, welche noch als Reserve in meinem Stand-PC verbaut und nur teilweise genutzt waren. Also habe ich erst einmal Daten von diesen Reserve-Festplatten gelöscht und verschoben. Das dauerte wegen der Menge der Daten und ihrer Größe schon mehrere Stunden.

Nachdem eine Reserve-Festplatte mit 500 Gigabyte frei war, habe ich sie komplett mit NTFS formatiert und aus dem Stand-PC ausgebaut. Mit einem Adapter für Serial ATA Hard Disks habe ich dann die Festplatte per USB an das Arbeits-Notebook angeschlossen und die virtuelle Maschine komplett darauf verschoben. Das hat wegen einer Übertragungsrate von 30 MBit/sec auch nochmal 3,5 Stunden gedauert.

Im Anschluss habe ich in der VirtualBox die bisherige virtuelle Maschine entfernt und die verschobene als neue angelegt. Zum Test habe ich diese gestartet. Das war erfolgreich, wenn auch nur sehr langsam. Nun konnte ich endlich die alten Snapshots löschen. Angefangen habe ich mit dem ältesten Stand. Es dauerte auch hier mehrere Stunden bis das Löschen und Mergen erfolgreich abgeschlossen war.

Als ich weitere Snapshots löschen wollte, hieß es, dass der eben gelöschte Snapshot vermisst wird. Ich konnte also keine weiteren Snapshots mehr löschen. Die virtuelle Maschine ließ sich starten, war jedoch nach dem vorherigen Merge auf einem veralteten Stand. Das erkannte ich daran, dass in meiner IDE nicht die aktuellen Git Banches, sondern Branches von vor mehreren Monaten angezeigt wurden. Das Mergen der Snapshots hat also neuere Daten durch ältere ersetzt.

Mein nächster Versuch war nun das Klonen des aktuellen Stands wieder zurück auf das Notebook. Auch das dauerte wegen der geringen Übertragungsrate mehrere Stunden. Der Klon ließ sich erfolgreich starten, entsprach aber leider dem veralteten Stand nach dem Merge.

Daher wollte ich den nach dem Merge auf der externen Festplatte automatisch gelöschten Snapshot wiederherstellen. Da ich danach auf der externen Festplatte nichts mehr geschrieben hatte, war meine Hoffnung, dass sich dieser dort mit Hilfe eines Wiederherstellungs-Tools noch finden lässt. Doch weder das Tool Recuvo, noch andere Windows-Tools oder das Linux-Tool ntfsundelete konnten die Datei finden und wiederherstellen.

Der nächste “Schock” kam, als ich die externe Festplatte wieder am Arbeits-Notebook angeschlossen hatte (ich hatte sie zwischendurch für den Wiederherstellungs-Versuch an meinen Linux-Rechner angeschlossen). Denn plötzlich konnte VirtualBox, trotz der selben Pfade wie zuvor, die virtuelle Maschine auf der externen Festplatte nicht mehr nutzen. Es behauptete, dass alle möglichen Abhängigkeiten fehlten. Wahrscheinlich lag auch das an der schon vorher für Probleme sorgenden fehlenden Snapshot-Datei. Somit war der Stand auf der externen Festplatte für mich unnutzbar geworden. Zum Glück hatte ich zuvor den Klon erstellt. Diesen konnte ich starten und habe ihn per Updates wieder auf einen aktuellen Stand gebracht.

Mein Fazit:

Leider wurde es immer schlimmer beim Versuch, wieder einen aktuellen funktionierenden Stand herzustellen. Zum Glück hatte ich einen Klon erstellt. Vom Thema Snapshots für die VirtualBox bin ich schwer enttäuscht und kann aus meiner Sicht nur davon abraten.

Dazu kommt, dass die Snapshots entgegen meiner Erwartung nicht nur ein paar Megabyte groß waren mit den entsprechenden Abweichungen. Nein, sie waren jedes Mal mehrere zig Gigabyte groß, obwohl das gesamte System nur 40 Gigabyte Platz braucht. Sicherlich habe ich damit gearbeitet, indem ich große Projekte kompiliert habe. Aber das wurde ja auch immer wieder neu überschrieben.

Und das Löschen und Mergen von Snapshots war auch schon vorher nicht problemlos. Danach waren immer einige Einstellungen meiner IDE verkehrt bzw. kaputt. Ich konnte mir daher nie sicher sein, ob das System einen konsistenten Stand hat. Ich werde daher in Zukunft als Backups Klone erstellen und auf diesen weiterarbeiten.