Virtualbox, Zusammenführen von Snapshots und Basisfestplatte


9

Ich habe eine virtuelle Maschine mit ungefähr 30 Schnappschüssen in Zweigen. Der aktuelle Entwicklungspfad umfasst 22 Snapshots plus Basisdatenträger. Die Anzahl der Dateien scheint sich jetzt auf E / A und den von mir verwendeten Entwickler-Laptop auszuwirken (ich weiß nicht, ob es sich um Probleme mit der Leistung der Host-Festplatte mit der Gesamtgröße von 140 GB über viele Fragmente handelt oder nur um die Tatsache, dass dies der Fall ist Sektoren treffen, die auf viele Dateien verteilt sind).

Ich möchte den aktuellen Entwicklungszweig von Snapshots mit der Basisfestplatte zusammenführen, bin mir jedoch nicht sicher, ob der folgende Befehl das richtige Ergebnis liefern würde. Ich kann diese Festplatte nach Abschluss des Vorgangs (5-6 Stunden) nicht mehr starten.

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

Könnte jemand bestätigen, ob dies der richtige Ansatz ist oder nicht?


Um einige Informationen hinzuzufügen, ist der Fehler, den ich erhalte, kein VirtualBox-Fehler, sondern ein Startfehler von Windows. Es möchte die Startreparatur starten, aber da ich den Fehler nicht kenne, kenne ich das Update nicht. Das Starten von Fenstern führt normalerweise zu einer langen Wartezeit und einem blauen Bildschirm. Wird dies erwartet oder habe ich beim Klonen der Festplatte die falsche Methode verwendet?
Henrik

Ich habe VBoxManage (auf Windows-Host, Ubuntu-Gast) verwendet, wie Sie in Ihrer Frage vorgeschlagen haben, und es hat die Snapshots ordnungsgemäß in das einzelne Ausgabe-Disk-Image zusammengeführt
Chaulky

1
Ja, das ist ein korrekter Ansatz. Es ist besser, nur die Quell-UUID anstelle des Dateinamens anzugeben. Dann können Sie sicher sein, dass VBox die Anhänge auflösen kann.
Rustyx

Antworten:


7

Wählen Sie im Dialogfeld "Snapshots" den übergeordneten Snapshot aus, in dem alle Snapshots anschließend zu einem einzigen VDI zusammengeführt werden sollen.

Aus Ihrer Beschreibung geht hervor, dass dies die Wurzel des Baumes ist.

Klicken Sie mit der rechten Maustaste und wählen Sie "Snapshot löschen".

Dadurch wird das getan, was Sie möchten - alle Änderungen aller untergeordneten Snapshots werden in einem einzigen VDI zusammengeführt.

Durch das Klonen des Festplattenabbilds im neuesten Snapshot wird außerdem die differenzierende Festplatte mit ihrer übergeordneten Festplatte (und ihrer übergeordneten Festplatte usw.) zusammengeführt, bis Sie zu einem "normalen" Festplattentyp gelangen.

Ich vermute, dass beim Löschen eines Schnappschusses der Befehl clonehd ausgeführt wird.

Überprüfen Sie Ihre VM-Einstellungen (insbesondere IO APIC aktiviert / deaktiviert) und stellen Sie sicher, dass sie übereinstimmen.


Ich denke, dies ist derzeit die einzige Möglichkeit, dies zu tun. Es ist jedoch eine manuelle, zeitaufwändige Mehrklick-GUI-Methode, um dies zu tun.
Henrik

3

Wenn Sie nur ein einzelnes Snaphot behalten möchten, machen Sie es zu Ihrem aktuellen Status, exportieren Sie die VM und importieren Sie sie erneut. Exportierte Appliances behalten ihren Snapshot-Verlauf nicht bei.

Oder Sie können dieses Skript vboxmerge.py verwenden , um die Zusammenführung für Sie durchzuführen . Angesichts der Anzahl Ihrer Schnappschüsse würde ich erwarten, dass der Export- / Importzyklus schneller ist.


2

Hier ist eine Technik (getestet in 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 geklonte VM wiederverwenden können (Sie können den VM-Namen auf der Registerkarte "Basis" der 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.
    • Akzeptieren Sie die verbleibenden Standardeinstellungen, dh Klontyp: 'Vollständiger Klon'; Schnappschüsse: 'Aktueller Maschinenstatus'.
  3. Löschen Sie die alte VM (klicken Sie mit der rechten Maustaste auf die VM und führen Sie den Befehl 'Entfernen ...' aus).


0

Wenn Ihr Host ein Windows ist oder Sie über ein Windows auf VHD-Dateien zugreifen können, gibt es einen Trick, um alle Änderungen in übergeordnete Elemente, Großeltern usw. zu verschmelzen.

Es verwendet das DiskPart-Tool und die beiden Befehle:

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

Wobei # die Anzahl der Hierarchieebenen ist, die Sie verschieben möchten, 1 für direkte Eltern, 2 für Großeltern usw.

Dies geschieht an Ort und Stelle, viel weniger zeitaufwendig als das Klonen usw.

Denken Sie daran, dass nach dem Zusammenführen alle Zwischen-VHDs gelöscht werden können (sie werden für Sie nicht gelöscht), und vergessen Sie nicht, das übergeordnete Element, in das Sie zusammengeführt haben, an VirtualBox anzuhängen.

Beispiel:

Disk3.vhd ist Kind von Disk2.vhd, Disk2.vhd ist Kind von Disk1.vhd

Wenn Sie auf Disk1.vhd alle Änderungen an Disk3.vhd vornehmen möchten, verwenden Sie einfach Disk3.vhd depth=2und wählen Sie diese aus. Wenn Sie auf Disk1.vhd alle Änderungen an Disk2.vhd vornehmen möchten, depth=1wählen Sie einfach Disk3.vhd.

Denken Sie auch daran, dass keine hässlichen VirtualBox-Snapshots erforderlich sind. Sie können den Befehl DiskPart create vdisk verwenden, um eine andere als eine vorhandene Festplatte zu erstellen (die auch eine differenzierende Festplatte sein kann usw.). Außerdem können Sie einen riesigen Baum erstellen.

Für den Rest: Das Poster verwendet VHD (nicht VDI), sodass native Tools wie DiskPart und Disk Managment verwendet werden können, um auf diese Festplatten außerhalb des Gasts zuzugreifen (auf dem Host, wenn Host Windows ist).

Für Sie das Poster: Denken Sie daran, dass Sie vor dem Zusammenführen immer ein vollständiges BackUp haben müssen. Der VirtualBox-Klon funktioniert nicht an Ort und Stelle, er erstellt eine neue Datei (Kopie beim Schreiben), aber die Zusammenführung von DiskPart funktioniert an Ort und Stelle (ändern Sie die Datei, erstellen Sie nicht ein neuer).

Hoffe, dass dies einen anderen Ansatz geben kann, da VHD / VHDX verwendet wird (nicht gültig für VMDK, VDI usw., nur für Windows Host).

Hinweis: Windows 7 und höher, XP und Vista können VHD mit einem externen M $ -Tool bereitstellen, aber DiskPart unterstützt VHD unter XP und Vista nicht. All dies funktioniert auch unter Windows HOME-Editionen (7 und höher), ohne dass eine erforderlich ist SERVER Edition.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.