Schnellste Weg, um Snapshots in VirtualBox zusammenzuführen?

48

Ich habe VDI mit einer ganzen Reihe von Schnappschüssen - sagen wir, 50 oder 70 Schnappschüsse. Ich möchte eine einfache VDI mit einem aktuellen Status haben. Diese Snapshots beanspruchen viel zu viel Speicherplatz und werden nicht als Snapshots benötigt.

Ich weiß das, wenn ich anrufe

VBoxManage clonehd thedisk.vdi thedisk-full.vdi
(50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing

Ich werde bekommen, was ich will. Aber es dauert sehr, sehr lange (mehr als 5 Stunden bei meiner Hardware und 16G anfänglicher Festplattengröße).

Und natürlich habe ich es versucht VBoxManage snapshot deleteund es ist seltsam: Funktioniert nicht auf gestoppten Maschinen, kann auf laufenden Maschinen fehlschlagen und wenn es einmal fehlschlägt, werden alle nachfolgenden Aufrufe fehlschlagen.

Gibt es eine Möglichkeit, aus einer Reihe von Schnappschüssen ein einfaches VDI zu erstellen - schneller?

$ VBoxManage --version
3.2.14r75509

(Auf ServerFault gestellt, aber entschieden, dass dieser Ort für diese Frage besser geeignet ist.)

Andrey Regentov
quelle
Der Befehl, den Sie verwenden, ist der Befehl, den Sie verwenden möchten, da es keinen schnelleren Weg gibt.
Ramhound
Was ist mit dem Export der gesamten VM? Wird sein VDI enthalten, was ich will?
Andrey Regentov
Du solltest es versuchen. Letztendlich wird jede andere Methode aufgrund der Größe der virtuellen Maschine noch eine Weile dauern.
Ramhound

Antworten:

53

Die Lösung gefunden. Es ist so einfach wie der letzte Schritt von den Befehlen, die ich hier geschrieben habe. Dh

VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi

Also sollte ich nur den letzten Schnappschuss klonen, nicht jeden Schnappschuss aus der Kette. Und es ist Tausende Prozent schneller.

Die UUID finden Sie unter VBoxManage list hdds | grep VmName | tail

Wählen Sie in der GUI (unter Windows) die VM aus, wählen Sie oben rechts Snapshots aus, klicken Sie mit der rechten Maustaste auf den gewünschten Snapshot, wählen Sie Klonen ... aus und wählen Sie im Dialogfeld Vollständiges Klonen aus.

Andrey Regentov
quelle
thx aber es funktioniert nicht auf meinem Setup, es sagt, dass das Image bereits existieren würde. Hast du das --existieren vergessen?
Andy
3
Wenn Sie bereits eine thedisk-full.vdiDatei auf der Festplatte haben, ändern Sie bitte zuerst den Namen im Befehl in so etwas wie thedisk-full-new.vdi.
Andrey Regentov
Der vollständige Pfad muss natürlich derjenige sein, der in VirtualBox registriert ist. Symbolische Links funktionieren nicht, da VBox alle Snapshots nachschlagen muss
Andy
nicht sicher, was macht der Schwanz, meinst du " tail -1"?
Eckes
1
Wird in VirtualBox 5 clonehdaus Gründen der Abwärtskompatibilität nicht mehr empfohlen und clonemediumstattdessen verwendet.
George Sovetov
22

Hier ist eine Technik (getestet auf VirtualBox 4.3.4), die den Befehl 'Clone' verwendet, um alle Snapshots zu einer neuen VM zusammenzuführen und zu komprimieren, die eine einzelne VDI-Datei enthält:

  1. Benennen Sie die VM um, damit Sie ihren aktuellen Namen für die geklonte VM wiederverwenden können (Sie können den VM-Namen auf der Registerkarte "Basis" in den Einstellungen "Allgemein" ändern).

  2. Klicken Sie mit der rechten Maustaste auf die VM und führen Sie den Befehl 'Klonen ...' aus:

    • Setzen Sie den Namen auf den ursprünglichen Namen der VM.
    • Übernehmen Sie die restlichen Standardeinstellungen, z. B. Klontyp: 'Vollständiger Klon'; Schnappschüsse: 'Aktueller Maschinenzustand'.
  3. Löschen Sie die alte VM (klicken Sie mit der rechten Maustaste auf die VM und führen Sie den Befehl 'Entfernen ...' aus).

Stuart Rackham
quelle
Ab VirtualBox 6.0.8 funktioniert dies weiterhin.
Paul Sturm
3

Sie können versuchen , den Export zu OVF und dann importieren die generierte Datei zurück.

Wie hier erklärt :

OVF kann keine Snapshots beschreiben, die für eine virtuelle Maschine erstellt wurden. Wenn Sie eine virtuelle Maschine exportieren, die Snapshots enthält, wird folglich nur der aktuelle Status der Maschine exportiert, und die Datenträgerabbilder im Export haben einen "reduzierten" Status, der mit dem aktuellen Status der virtuellen Maschine identisch ist.

Als Ergebnis erhalten Sie eine geklonte VM mit dem aktuellen Status ohne andere Snapshots.

StreakyCobra
quelle
Ich frage nach vdis, weil die Maschine nicht exportiert werden kann - sie war defekt (nach dem Neustart des Hosts nicht erreichbar), und alles, was ich hatte, war die VDI-Disk und ungefähr fünfzig Schnappschüsse.
Andrey Regentov
0

Bei diesem Vorgang werden sehr große Dateien auf derselben physischen Festplatte gelesen und geschrieben. Die einzige Möglichkeit, dies zu beschleunigen, besteht darin, diese Dateien auf verschiedenen Datenträgern abzulegen und die Pfade in Ihrem VBoxManage-Befehl zu ändern. Wenn das Gerät nur über eine Festplatte verfügt, können Sie ein externes USB-Laufwerk oder sogar eine Festplatte in einem anderen Gerät über eine Netzwerkfreigabe verwenden (abhängig von der Geschwindigkeit Ihres Netzwerks).

Golimar
quelle
1
In der Regel ist das Netzwerk um Größenordnungen langsamer als die interne HDD-Schnittstelle. Dies würde den Prozess wahrscheinlich nicht beschleunigen.
Andrey Regentov
-2

Einige haben 10Gib / s LAN, so dass es mehr als ein Gigabyte pro Sekunde übertragen kann, so dass es kein Engpass wird.

Einige haben 1Gib / s LAN, so dass es mehr als 100 Megabyte pro Sekunde übertragen kann, so dass es kein Engpass wird (es sei denn, Sie haben eine wirklich schnelle SSD).

Mechanische Festplatten, die zur gleichen Zeit auf derselben Festplatte gelesen und beschrieben werden (oder stark fragmentiert sind), sind fast 20 Megabyte pro Sekunde lahmgelegt, während bei nicht fragmentierten Festplatten nur Lese- oder Schreibvorgänge mehr als 100 Megabyte pro Sekunde möglich sind.

Sie sagen, LAN sei langsamer, aber nicht USB (2.0, ganz zu schweigen von 1.1 oder 1.0) ist um ein Vielfaches langsamer.

Was ich vorschlagen würde, wäre: Verwenden Sie USB 3.1 Gen2 Typ C oder eine eSATA / SATA / SAS

Aber immer: Verwenden Sie eine zweite ausreichend schnelle Festplatte.

Und immer: Das Klonen auf eine andere Festplatte und das Zurückkopieren der Datei ist viel schneller als das Verwenden von nur einer Festplatte, es sei denn, es handelt sich um eine SSD oder eine Festplatte mit unabhängigen Mehrkopfarmen (sie können gleichzeitig auf zwei lesen und schreiben) Oberflächenstellen, jeder Kopf hat einen eigenen Arm, sehr teuer, ca.> 9876 €).

Das Beste ist, nur die virtuelle Festplatte des gewünschten Status zu klonen, dann zu überprüfen, ob sie funktioniert, dann die oberste Ebene WIEDERHERSTELLEN (löscht alle Schnappschüsse), dann die Festplatte aus dem Speicher zu entfernen und die neue anzuschließen.

So gehen Sie vor, um alle alten Zustände in einem No-Tree-Snapshot-Schema zu verlieren:

  1. Klonen Sie von einer Festplatte auf eine andere, um Engpässe zu vermeiden
  2. Erstellen Sie einen neuen Computer, schließen Sie diesen Datenträger an, trennen Sie ihn ab, und konfigurieren Sie ihn als nicht veränderbar
  3. Testen Sie, ob es funktioniert (da es nicht veränderbar ist), Sie werden den gleichen Zustand haben
  4. Wenn Sie möchten, dass es nicht unveränderlich ist, trennen Sie es, wechseln Sie wieder in den normalen Zustand usw
  5. Löschen Sie die alten Maschinen-Snapshots (zuerst WIEDERHERSTELLEN)
  6. Löschen Sie die temporäre Testmaschine
  7. Kopieren Sie die virtuelle Festplatte zurück auf die Festplatte
  8. Bringen Sie die geklonte Festplatte an

Denken Sie jedoch immer daran, dass Schnappschüsse wie ein vollständiger Baum sein können, ein Knoten mehr als ein Kind haben kann, jedes Kind mehr als ein Kind haben kann usw.

Wenn Sie mit Schnappschussbäumen arbeiten möchten, denken Sie bei DELETE immer an das Löschen eines Knotens, ohne den Rest der Knoten zu beeinflussen (verlieren Sie nur diesen Zustand, aber nicht den Rest, kein übergeordnetes und kein untergeordnetes Element werden betroffen, die Daten werden im gesamten ersten Unterelement zusammengeführt Level Childs, also langsamer Prozess) und bei RESTORE als Zerstörung aller Childs auf allen Unterebenen (alle Zustände nach dem, den Sie wiederherstellen, werden nur die Dateien gelöscht, also wirklich schneller Prozess, nur Sekunden).

Das ist!

PD: Wie schrecklich die Namen von VBOX für diese beiden Operationen waren (lösche nur einen Knoten = LÖSCHEN; lösche alle untergeordneten Knoten auf allen Unterebenen = WIEDERHERSTELLEN)

Claudio
quelle
Durch die Wiederherstellung werden keine Snapshots gelöscht, nur der aktuelle (nicht gespeicherte) Status.
Melebius