Virtualbox, scalanie migawek i dysku podstawowego

9

Mam maszynę wirtualną z około 30 migawkami w oddziałach. Obecna ścieżka rozwoju to 22 migawki plus dysk podstawowy. Wygląda na to, że ilość plików ma teraz wpływ na IO i używany przeze mnie laptop deweloperski (nie wiem, czy jest to problem z wydajnością dysku hosta z całkowitym rozmiarem 140 GB w wielu fragmentach, czy tylko faktem, że jest to uderzanie sektorów rozproszonych w wielu plikach).

Chciałbym scalić bieżącą gałąź rozwoju migawek z dyskiem podstawowym, ale nie jestem pewien, czy poniższe polecenie przyniesie poprawny wynik. Nie mogę uruchomić tego dysku po zakończeniu procedury (5-6 godzin).

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

Czy ktoś może potwierdzić, czy jest to właściwe podejście, czy nie?

Henrik
źródło
Aby dodać trochę informacji, otrzymywany przeze mnie błąd nie jest błędem VirtualBox, ale błędem rozruchu z systemu Windows. Chce uruchomić naprawę przy starcie, ale ponieważ nie znam błędu, nie znam poprawki. Uruchomienie systemu Windows zwykle powoduje długie oczekiwanie i niebieski ekran. Czy jest to oczekiwane lub czy użyłem niewłaściwej metody podczas klonowania dysku?
Henrik
Użyłem VBoxManage (na hoście Windows, gość Ubuntu) jak zasugerowałeś w swoim pytaniu i poprawnie
scalił
1
Tak, to prawidłowe podejście. Lepiej jest podać tylko źródłowy UUID zamiast jego nazwy pliku, wtedy masz pewność, że VBox będzie w stanie rozwiązać załączniki.
rustyx

Odpowiedzi:

7

Co chcesz zrobić, to w oknie migawek wybierz migawkę nadrzędną, którą chcesz scalić wszystkie migawki w jednym VDI.

Z twojego opisu wygląda na to, że jest to korzeń drzewa.

Kliknij prawym przyciskiem myszy i wybierz „Usuń migawkę”.

To zrobi, co chcesz --- połączy wszystkie zmiany ze wszystkich migawek potomnych w jeden VDI.

Dodatkowo - klonowanie obrazu dysku, który znajduje się w najnowszej migawce - spowoduje także scalenie dysku różnicowego z jego rodzicem (i jego rodzicem itd., Aż dojdzie do „normalnego” typu dysku twardego).

Podejrzewam, że „usunięcie migawki” uruchamia polecenie clonehd.

Sprawdź ustawienia maszyny wirtualnej (w szczególności włączone / wyłączone IO APIC) i upewnij się, że są zgodne.

Adam
źródło
Wydaje mi się, że jest to obecnie jedyny sposób, aby to zrobić, jednak jest to ręczne, czasochłonne i wielokrotne kliknięcie w GUI.
Henrik
3

Jeśli chcesz zachować tylko jedną migawkę, ustaw ją w bieżącym stanie, a następnie wyeksportuj maszynę wirtualną i ponownie ją zaimportuj. Wyeksportowane urządzenia nie zachowują historii migawek.

Możesz też użyć tego skryptu vboxmerge.py, aby obsłużyć scalanie. Biorąc pod uwagę liczbę twoich migawek, oczekiwałbym, że cykl eksportu / importu będzie szybszy.

John Hart
źródło
2

Oto technika (przetestowana na VirtualBox 4.3.4), która używa polecenia „Klonuj” do scalania i kompaktowania wszystkich migawek na nowej maszynie wirtualnej zawierającej pojedynczy plik VDI:

  1. Zmień nazwę maszyny wirtualnej, aby móc ponownie użyć jej bieżącej nazwy dla sklonowanej maszyny wirtualnej (możesz zmienić nazwę maszyny wirtualnej na karcie „Podstawowe” w ustawieniach „Ogólne”).

  2. Kliknij maszynę wirtualną prawym przyciskiem myszy i uruchom polecenie „Klonuj ...”:

    • Ustaw nazwę na oryginalną nazwę maszyny wirtualnej.
    • Zaakceptuj pozostałe wartości domyślne, tj. Typ klonu: „Pełny klon”; Migawki: „Bieżący stan maszyny”.
  3. Usuń starą maszynę wirtualną (kliknij maszynę wirtualną prawym przyciskiem myszy i uruchom polecenie „Usuń ...”).

Stuart Rackham
źródło
0

Jeśli Twoim hostem jest system Windows lub masz dostęp do plików VHD z systemu Windows, istnieje możliwość scalenia wszystkich zmian w rodzicach, dziadkach itp.

Korzysta z narzędzia DiskPart i dwóch poleceń:

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

merge vdisk depth=#

Gdzie # to liczba poziomów hierarchii, które chcesz przenieść, 1 dla bezpośredniego rodzica, 2 dla dziadka itp.

Robi to w miejscu, znacznie mniej czasochłonne niż klonowanie itp.

Pamiętaj, że po scaleniu wszystkie pośrednie dyski VHD można usunąć (nie usuwa ich za Ciebie) i nie zapomnij dołączyć do VirtualBox tego rodzica, w którym się scaliłeś.

Przykład:

Disk3.vhd jest dzieckiem Disk2.vhd, Disk2.vhd jest dzieckiem Disk1.vhd

Jeśli chcesz na Disk1.vhd wszystkie zmiany Disk3.vhd po prostu użyj depth=2i wybierz Disk3.vhd. Jeśli chcesz na Disk1.vhd wszystkie zmiany na Disk2.vhd wystarczy użyć depth=1wybierz Disk3.vhd.

Pamiętaj również, że nie ma potrzeby brzydkich migawek VirtualBox, możesz użyć polecenia DiskPart create vdisk, aby utworzyć dysk różnicowy z istniejącego (który może być również dyskiem różnicowym itp.), A także utworzyć ogromne drzewo.

Reszta: Plakat korzysta z VHD (nie VDI), więc można korzystać z natywnych narzędzi, takich jak DiskPart i Zarządzanie dyskami, aby uzyskać dostęp do dysków z Gościa (na hoście, jeśli hostem jest Windows).

Dla ciebie plakat: Pamiętaj, aby zawsze mieć pełne BackUp przed scaleniem, klon VirtualBox nie działa w miejscu, tworzy nowy plik (kopiuj podczas zapisu), ale scalanie DiskPart działa na miejscu (modyfikuj plik, nie twórz nowy).

Mam nadzieję, że może dać inne podejście, ponieważ VHD / VHDX jest w użyciu (nie dotyczy VMDK, VDI itp., Tylko dla hosta Windows).

Uwaga: Windows 7 i nowsze wersje, XP i Vista mogą montować dysk VHD za pomocą zewnętrznego narzędzia M $, ale DiskPart nie obsługuje VHD w XP i Vista ... wszystko to działa również w edycjach Windows HOME (7 i nowszych), bez potrzeby Edycja SERVER.

Laura
źródło