Podsumowanie:
VBoxManage.exe modifyhd --resize
może zwiększyć (ale nie zmniejszyć) logiczny rozmiar obrazu dysku (rozmiar widziany przez system gościa).
VBoxManage.exe modifyhd inputfile.vdi --compact
może zmniejszyć rozmiar obrazu dysku fizycznego (rozmiar pliku obrazu na dysku widzianego przez system operacyjny hosta). Nie zmienia to jednak rozmiaru dysku logicznego. Zauważ, że działa to tylko wtedy, gdy wolne miejsce zostało najpierw zerowane w systemie-gościu.
modifyhd
działa tylko z wariantem formatu dynamicznego („obraz dynamicznie przydzielany”).
modifyhd
działa tylko z formatami obrazów VDI i VHD.
- Jeśli używasz migawek, będziesz musiał sklonować najnowszą migawkę VDI z podfolderu „Migawki”.
Aby uzyskać szczegółowe informacje, patrz sekcja 8.23. VBoxManage modyfikuj w instrukcji.
Powodem, dla którego zmniejszanie rozmiaru dysku logicznego VDI nie zostało jeszcze zaimplementowane, jest zapobieganie uszkodzeniu danych, które mogłoby się zdarzyć, a w wyniku tego powstałyby niedziałalne maszyny wirtualne. Dlatego gdy --resize
używana jest ta opcja, nowy rozmiar dysku musi być większy niż bieżący. Nie wolno być mniejszym lub równym bieżącemu rozmiarowi. Innymi słowy, rozmiar dysku 40 GB można zmienić tylko na 41 GB lub więcej, nie można zmienić rozmiaru na 40 GB (to po prostu głupie) lub 39 GB lub mniej.
Stare wersje VirtualBox tworzyły pliki VDI jako „stały” format formatu. Nowe ustawienie domyślne ma teraz tworzyć warianty formatu „dynamicznego” podczas tworzenia nowych plików VDI (obraz dysku wirtualnego). (Zgaduję, że tak jest od czasu wprowadzenia wariantu formatu dynamicznego, niezależnie od wersji, która została wprowadzona.)
Zatem komunikat o błędzie „operacja dla tego formatu nie jest jeszcze zaimplementowana” oznacza to, że plik VDI używa wariantu formatu „ustalonego”. Aby obejść ten problem, będziesz musiał sklonować plik VDI za pomocą clonehd
polecenia. Aby wyświetlić wariant formatu pliku VDI, możesz użyć showhdinfo
polecenia.
Przykład roboczy
Pokaż informacje VDI o bieżącym dysku.
Komenda wejściowa: vboxmanage.exe showhdinfo path\inputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity: 40960 MBytes
Size on disk: 40962 MBytes
In use by VMs: sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)
C:\Program Files\Oracle\VirtualBox>
Widzisz, gdzie jest napisane „naprawiono domyślne”? Właśnie dlatego wyrzuca powyższy błąd przy próbie zmiany jego rozmiaru.
Sklonuj stary plik VDI do nowego pliku VDI.
Komenda wejściowa: vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c
C:\Program Files\Oracle\VirtualBox>
Voilà! Stary plik został teraz sklonowany do nowego pliku. Ponieważ domyślnym ustawieniem w nowych wersjach VirtualBox jest stosowanie wariantu formatu „dynamicznego”, nie trzeba tego jawnie definiować. Chociaż, jeśli pracujesz ze starszą wersją VirtualBox, możesz chcieć ustawić opcję na „dynamiczną” (jeśli w ogóle dostępna), aby zapewnić lepszą kompatybilność i / lub elastyczność z przyszłymi wersjami VirtualBox.
Pokaż informacje VDI o sklonowanym dysku.
Komenda wejściowa: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
Widzisz, jak teraz mówi „dynamiczne domyślne”? Jak miło!
(Na marginesie! Podano tutaj 7806 MB jako fizyczny rozmiar, ponieważ użyłem --compact
opcji oryginalnego pliku VDI, próbując wymusić konwersję do wariantu formatu dynamicznego. Po prostu coś, co czytałem na forum VirtualBox, podobno pracowałbym ze starszymi wersjami, więc pomyślałem, że równie dobrze mogę spróbować. Nie zadziałało).
Zmiana rozmiaru sklonowanego dysku.
Komenda wejściowa: vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:\Program Files\Oracle\VirtualBox>
Powodzenie! Żadnych bzdur w formacie, nie więcej. Pamiętaj tylko, aby zmienić rozmiar nowego, sklonowanego dysku, a nie oryginalnego. Pamiętaj, że rozmiar jest wyrażony w MB. Wierzę, że możesz użyć np. 51200
Jak również 50G
(lub „GB”). Istnieje również opcja, za pomocą --resizebyte
której można wyrazić rozmiar w bajtach.
Pokaż informacje VDI o sklonowanym dysku o zmienionym rozmiarze.
Komenda wejściowa: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
Otóż to! Odtąd musisz dodać ten sklonowany dysk jako nowy VDI dla maszyny wirtualnej. Robisz to w VirtualBox. Nie wejdę w to. Jeśli do tej pory potrafiłeś to zrozumieć i zrozumieć, to prawdopodobnie nie potrzebujesz dalszych wskazówek. Możesz usunąć stary „naprawiony” plik lub pozostawić go jako kopię zapasową. Upewnij się, że przetestowałeś nowy plik VDI przed usunięciem oryginalnego pliku źródłowego.
Uwaga! Nie zobaczysz od razu nowego rozmiaru sklonowanego dysku. Musisz uruchomić maszynę wirtualną za jej pomocą, a następnie użyć narzędzia do zarządzania partycjami, aby rozwinąć partycję, aby wypełnić dysk wirtualny (lub utworzyć więcej partycji). W systemie Windows po prostu uruchom, diskmgmt.msc
a będziesz mógł tam rozwinąć partycję.
Zrzuty ekranu
Odniesienie