Jak zwiększyć rozmiar dysku twardego maszyny wirtualnej?

257

wprowadź opis zdjęcia tutaj

Skończyło mi się miejsce na mojej maszynie wirtualnej WinXP, która dała mi tylko 10 GB miejsca na jej utworzenie. Czy istnieje prosty sposób na zwiększenie go, powiedzmy, do 20 GB? Nie widzę żadnej oczywistej opcji w ustawieniach VirtualBox.


Poniższa sugestia podaje ten błąd

wim@wim-ubuntu:/media/data/winxp_vm$ VBoxManage modifyhd wim.vdi --resize 20000
VBoxManage: error: Cannot register the hard disk '/media/data/winxp_vm/wim.vdi' {46284957-2c09-4e70-8a49-bfbe0f7f681d} because a hard disk '/home/wim/VirtualBox VMs/winxp_vm/wim.vdi' with UUID {46284957-2c09-4e70-8a49-bfbe0f7f681d} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 210 of file VBoxManageDisk.cpp

Usunięcie .vdi z VirtualBox przed wywołaniem polecenia VBoxManage, a następnie dodanie go z powrotem, powiodło się. Ale teraz nie mogę uruchomić maszyny wirtualnej, pojawia się ten niepokojący ekran:

wprowadź opis zdjęcia tutaj

Nawiasem mówiąc, mówi FATAL: Could not read from the boot medium! System halted.


Vdi należy ponownie podłączyć do maszyny wirtualnej po komendzie VBoxManage. Ponadto partycja będzie musiała zostać zmieniona z okna WEJŚCIE, ponieważ będziesz mieć tę pustą przestrzeń:

wprowadź opis zdjęcia tutaj

Byłem w stanie łatwo zmienić rozmiar partycji za pomocą odrobiny darmowego programu o nazwie EASEUS Partition Master 9.1.0 Home Edition .

wim
źródło
3
Problem polega na tym, że dysk został dowiązany do lokalizacji „/ media / data” i nie znajduje się w oryginalnej lokalizacji maszyn wirtualnych „/ home / wim / VirtualBox”. Odpowiedziałem, jak to naprawiłem.
Stolsvik,
1
szczegółowo opisałem swoje doświadczenie tutaj: kmonsoor.wordpress.com/2012/05/26/virtualbox-increase-disk-size „zaakceptowana” odpowiedź poniżej jest daleka od bycia w porządku.
kmonsoor
Istnieje inna możliwość „skopiowania istniejącego VDI” do „nowego pustego VDI, którego rozmiar jest większy niż istniejący” ( refer- justintung.com/2011/01/06/… )
parasrish
pamiętaj również, że sama zmiana rozmiaru może nie pomóc, ponieważ zwiększyłby się rozmiar „vdi”, ale w oparciu o „instalację vm-os” twoja podstawowa partycja pozostaje taka sama, a nowo przydzielone miejsce jest zwykle pokazywane jako „nieprzydzielone” „. Musisz zatem wykonać „realokację partycji” (patrz link powyżej).
parasrish

Odpowiedzi:

325

Otwórz terminal i przejdź do folderu z obrazem dysku VirtualBox, a następnie użyj następującego polecenia:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

zastępując YOUR_HARD_DISKoraz SIZE_IN_MBswoją nazwą obrazu i pożądanym rozmiarem. sudomoże być konieczne na niektórych komputerach lub może wystąpić błąd. Ta odpowiedź i pełniejsze wyjaśnienie znajdują się tutaj, na webupd8 . Podziękowania dla Andrew za opublikowanie tej odpowiedzi.

Po zmianie rozmiaru dodatkowe miejsce na wirtualnym dysku twardym musi zostać podzielone na partycje i sformatowane, aby gość mógł z niego skorzystać. Można to zrobić za pomocą gparted, uruchamiając gościa z ISO na żywo. Możemy również zmienić rozmiar istniejącej partycji za pomocą gparted. W tym celu może być konieczne wyłączenie /swapi utworzenie nowej partycji wymiany.

Tom Brossman
źródło
20
+1. Po prostu użyłem tego, aby zwiększyć rozmiar mojego dysku Windows 7 z 20 do 30 GB, i działał bardzo płynnie (nie trzeba wyrejestrowywać itp.). $ VBoxManage modifyhd Windows7.vdi --resize 30720 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Początkowo system Windows nie wykrył zwiększonego miejsca, ale po wyłączeniu zasilania to zrobił, a następnie mogłem użyć wbudowanego narzędzia do zarządzania dyskami, aby zwiększyć rozmiar mojej partycji C:.
Jonik
3
+1, to z pewnością najczystszy sposób na zrobienie tego.
Starx
20
@asd Zmiana rozmiaru dysku nie wystarcza, musisz także zmienić rozmiar partycji.
Bruno,
5
Myślę, że w najnowszych wersjach VirtualBox jest .\VBoxManage.exe modifymedium disk 4d30d154-f8c2-4a3b-bd8b-ddcfbfe64aaf --resize 30720teraz. modifyhddziała również - istnieje kompatybilność wsteczna ze starszymi poleceniami.
TranslucentCloud,
2
Właśnie zmieniłem rozmiar pliku vdi z 25G na 120G, ale menedżer dysków systemu Windows7 nadal nie widzi nieprzydzielonego miejsca. Jest to spowodowane przez plik migawki (wcześniej miałem migawkę), ale kiedy próbuję usunąć migawkę, raport Virtualbox ulega awarii, więc nie mogę usunąć migawki. Jakieś pomysły? Mój gość win7 nadal widzi 25G. dzięki.
ollydbg23
25

Dla mnie działało:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

Rozumiem jednak, jak przebieg może się różnić :-) Jeśli chodzi o zmianę rozmiaru partycji, w systemie Windows 7 mogłem zmienić rozmiar na ekranie, który pokazałeś, klikając prawym przyciskiem myszy dysk C: na dolnym panelu i wybierając rozszerzenie głośności.

Ekran zarządzania komputerem

Richard Povinelli
źródło
12
sudonie jest konieczne. Może to uszkodzić uprawnienia w twoim katalogu domowym, wymagając korzystania sudoz virtualboksa, co jest złym pomysłem.
Lekensteyn,
1
@Lekensteyn: Dobrze wiedzieć, że nie jest to konieczne. Użyłem go, ponieważ inni powiedzieli, że nie działa bez rootowania. Jeśli chodzi o uszkodzenia uprawnień, chmod działa dobrze, aby naprawić takie błędy.
Richard Povinelli,
@Lekensteyn: chown naprawi błędy własnościowe. Wspominam o chmod i chown, ponieważ musiałem rozwiązać problem, do którego często się odwołujesz :-)
Richard Povinelli,
2
Jest to świetne rozwiązanie dla systemu Windows, ale jeśli masz system gościa Linux, ten link może pomóc w zmianie rozmiaru partycji: forums.virtualbox.org/viewtopic.php?f=35&t=50661
Jon
Jeśli używasz systemu Windows w systemie Linux, musisz postępować zgodnie z tymi opcjami i rozszerzyć dysk, w przeciwnym razie system Windows nie doda dodatkowego miejsca, które dodaliśmy
Ajith R Nair
18

Wim, myślę, że najpierw musisz wyrejestrować go z Vbox. Plik, Menedżer multimediów, kliknij dysk twardy i wyrejestruj go. Następnie spróbuj ponownie.

tiempjuuh
źródło
2
Nie wymagane w systemie Linux w VirtualBox. Najpierw musiałem całkowicie wyłączyć system operacyjny gościa.
Cofnij się
15

Możesz to również zrobić za pomocą menu VirtualBox:

Wybierz File->Virtual Media Manager ...

Otworzy się okno: wprowadź opis zdjęcia tutaj

Wybierz dysk i wybierz Properties. Teraz wystarczy przesunąć suwak na dole.

Po uruchomieniu maszyny wirtualnej system Windows nie rozpozna nowej przestrzeni.

W Computer Managementsystemie Windows otwórz (wyszukaj go w menu Start), wybierz Storage-> Disk Managementw lewym menu. Wybierz partycję (prawdopodobnie C :), kliknij ją prawym przyciskiem myszy i wybierz Extend Volume .... Teraz wystarczy kliknąć kreatora i gotowe.

lenooh
źródło
Czy musisz to zrobić Releasewcześniej? Jak obecnie suwak jest szary. Czy wybrałeś partycję dynamiczną?
Royi
Royi: kiedy tworzysz dysk wirtualny, upewnij się, że ma on dynamiczny rozmiar.
lenooh
10

Po zmianie rozmiaru i niemożności wyświetlenia zmiany rozmiaru na moim komputerze-gościu z systemem Windows XP musiałem to zrobić

  1. sklonuj to
  2. zmień rozmiar za pomocą „VBoxManage modyfikuj winxppro \ Clone.vdi --resize 30720” i wszystko działało

Widziałem na innych forach, że migawki mogą przeszkadzać w zmianie rozmiaru i nie są w stanie usunąć wszystkich migawek z powodu różnych błędów, które otrzymałem, jedynym znalezionym rozwiązaniem było sklonowanie go w celu usunięcia migawek, a następnie zmiana rozmiaru i wszystko działało. Do zmiany rozmiaru poza oknami, gparted Boot CD, które można znaleźć tutaj może pomóc

Philippe Gachoud
źródło
6

Miałem ten sam problem, gdy przeniosłem dysk i zastąpiłem oryginał dowiązaniem symbolicznym. To potem działa OK, ale napotykasz problemy z poleceniem 'modyfikhd', ponieważ najwyraźniej kanonizuje ścieżkę do pliku vdi podczas pracy z nim. To sprawia, że ​​wygląda na to, że próbujesz dodać nowy dysk z tym samym UUID, ale inną ścieżką - lub czymś takim.

Były dwa problemy:

  1. Dysk musiał zostać usunięty z maszyny wirtualnej, która go używała, ale także „z listy dysków twardych VirtualBox”. Zostało to naprawione za pomocą polecenia „closemedium”, które usuwa go z tej listy.

  2. Dysk, którego rozmiar ma być zmieniany, był „dyskiem stałym” zamiast „dynamicznym” i można zmieniać rozmiar tylko dysków dynamicznych. Zostało to naprawione poleceniem „klonuj” (klon jest dynamiczny), a następnie zmień rozmiar dysku wynikowego.

To jest mój dziennik tego, jak to zostało zrobione. Zauważ, że w żadnym momencie nie działam jako root , chyba że później dokonam zmiany rozmiaru partycji i systemu plików.

USUŃ POWIĄZANIE DO DYSKU Z VM.

PROBLEM NADAL TRWA:

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
VBoxManage: error: Cannot register the hard disk '/datadisk/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' {6cd99209-e4db-4178-a6c2-53f9581b1fad} because a hard disk '/home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' with UUID {6cd99209-e4db-4178-a6c2-53f9581b1fad} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp

Ach, dysk wciąż jest „w systemie”:

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID:        ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State:       locked write
Type:        normal
Usage:       TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)

UUID:        6cd99209-e4db-4178-a6c2-53f9581b1fad
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi
State:       created
Type:        normal

Usuń / usuń dysk z listy dysków VirtualBox („closemedium”):

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage closemedium disk 6cd99209-e4db-4178-a6c2-53f9581b1fad
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID:        ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State:       locked write
Type:        normal
Usage:       TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)

Spróbuj ponownie zmienić rozmiar:

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

CHOLERA, „stały rozmiar” NIE DZIAŁA! „clonehd” na ratunek, ponieważ pozostawia „klonowany dysk” dynamicznie przydzielany:

virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage clonehd TestInception\ 64\ bit.vdi TestInception\ 64\ bit-cloned.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 8e237500-173b-401a-9e63-9e64da110da9

TERAZ ZRÓB ROZMIAR (natychmiastowy):

virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd --resize 8192 TestInception\ 64\ bit-cloned.vdi 
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Następnie podłącz do niektórych maszyn wirtualnych, aby zmienić rozmiar. Odbywa się to jako root. Zakłada się, że masz tylko jedną partycję i ewentualnie zamień.

# fdisk /dev/sdb  # <- The extra disk, just attached to be resized
// The procedure looks like this:
// m - print help
// p - print table
// d ... - delete partition (delete both if you have root and swap)
// n - new partition (create root/first partition starting on exact same sector as before, typically 2048, but ends on last, or last minus swap)
//  ... n.. (.. then add the swap partition. Calculate how many sectors using original table)
// t - change type of partition (swap partition, if any, to 82 - not 83 which is "normal Linux").
// w - write partition table (write out, with the resized partition)

# e2fsck -f /dev/sdb1

e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 99918/122160 files (0.3% non-contiguous), 471032/487936 blocks

# resize2fs /dev/sdb1

resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/sdb1 to 1965824 (4k) blocks.
The filesystem on /dev/sdb1 is now 1965824 blocks long.
Stolsvik
źródło
To zadziałało dla mnie, zgodnie z instrukcją tutaj: yinfor.com/2015/05/…
marijnz0r
4

Działa to dla mnie z Virtualbox 5.2.6 zainstalowanym na Ubuntu 16.04 Host Machine i Windows 10 Guest: otwórz Virtualbox Manager, kliknij Global Tools (prawy górny róg) i wybierz Virtual Media Manager. Kliknij kartę Dysk twardy i wybierz system operacyjny gościa. W dolnej części okna kliknij kartę Atrybuty. Na dole widać rozmiar dysku wirtualnego, a za pomocą suwaka można zwiększyć rozmiar do własnych potrzeb. (Za pomocą tej metody można tylko zwiększyć, a nie zmniejszyć). Kliknij Zastosuj. Uruchom system operacyjny Windows Guest, otwórz Zarządzanie komputerem, kliknij prawym przyciskiem myszy dysk C: i wybierz opcję Rozszerz wolumin, aby rozszerzyć system plików o nieprzydzieloną część.

To wszystko, co musiałem zrobić, działa idealnie dla mnie.

Judex
źródło
Działa świetnie. Czy nie powinna to być zaakceptowana odpowiedź, przynajmniej w przypadku najnowszych wersji VirtualBox?
AlwaysLearning
2

Pewnym sposobem jest zrobienie tego samego, jak przejście na większy dysk twardy, który nie działa na maszynie wirtualnej. Najpierw użyj ccleaner lub podobnego programu w XP, aby wyczyścić wszystkie niepotrzebne pliki. Następnie utwórz dodatkowy wirtualny dysk twardy o żądanym rozmiarze. Uruchom z clonezilla ISO na wirtualnym dysku ODD i klonuj wraz z wybraną opcją „zmień rozmiar na nowy rozmiar partycji”. Następnie ustaw nowy wirtualny dysk twardy jako podstawowy i nie usuwaj starego, dopóki nie dowiesz się, że działał.

xyzzyman
źródło
2

Otrzymałem ten sam błąd, dopóki nie użyłem sudo do uruchomienia polecenia, a potem działałem idealnie, wciąż muszę mieć partycję powiększoną z poziomu gościa, aby użyć dodatkowej przestrzeni.

JJinCO
źródło
Niektóre osoby zgłosiły, że powoduje to, że domowy katalog ma złe uprawnienia
Jonathan
2

Upewnij się, że jesteś zalogowany jako użytkownik z uprawnieniami do zapisu do pliku obrazu dysku. Następnie uruchomić

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB  

Pracował dla mnie przy pierwszym pytaniu

tindase
źródło
1
Czy musiałeś ponownie zainstalować / sformatować / partycjonować? czy po prostu uruchomił się ponownie?
Jonathan
2

Jeśli na komputerze hosta jest system Windows, możesz uruchomić następującą komendę, aby zwiększyć lub zmniejszyć rozmiar dysku vdi w polu wirtualnym:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Users\your_user_name\VirtualBox VMs\Ubuntu18LTS\Ubuntu18LTS.vdi" --resize 20000

W powyższym poleceniu zastąp twoją_nazwa_użytkownika prawdziwym użytkownikiem systemu Windows, a 20000 to rozmiar dysku MB.

Manish Jangir
źródło
1

W rzeczywistości wydaje się, że modifyhdsam w niektórych przypadkach nic ci nie pomoże. W rzeczywistości rozszerzyłem mój WinXP vdi, klonując obraz po rozwinięciu.

Oto kompletny przewodnik krok po kroku, który działał dla mnie kilka tygodni temu: http://libtronics.com/2011/07/resize-virtualbox-disk-for-winxp-guest/

0x61696f
źródło
Czy możesz wyjaśnić tutaj kroki? Odpowiedzi z niewiele więcej niż linkiem do innej witryny są tutaj zwykle źle widoczne i mogą zostać usunięte .
Tom Brossman
1
Cóż, musisz zrozumieć, co robi modyfikator, co nie jest niczym więcej niż rozszerzeniem podstawowego dysku wirtualnego, to wszystko. Nadal musisz rozwinąć znajdujący się na nim system plików.
Marcin Kamiński
1

Oto sposób zmiany rozmiaru dysku VirtualBox, niezależnie od tego, czy jest to dysk o stałym formacie, czy dynamiczny. W szczególności zapobiega temu błędowi:

Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

⚠️ Wykonaj kopię zapasową dysku wirtualnego. Nigdy nie wiesz, co może pójść nie tak.

Na twoim hoście:

  1. Otwórz okno terminala.

    W systemie Windows: otwórz wiersz polecenia cmd.

  2. Przejdź do katalogu z dyskiem wirtualnym, którego rozmiar chcesz zmienić. Na przykład:

    cd "My VMs"
  3. Utwórz nowy dysk VirtualBox z żądaną nazwą pliku, rozmiarem (w megabajtach) i formatem Standard(dynamicznym) lub Fixed). Na przykład, aby utworzyć dysk o stałym formacie 50 GB o nazwie MyNewDisk.vdi:

    VBoxManage createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed

    Jeśli polecenie VBoxManagenie zostanie rozpoznane, podaj pełną ścieżkę do niego. Można go znaleźć w katalogu instalacyjnym VirtualBox. W systemie Windows powyższe polecenie brzmiałoby:

    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium
        --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    
  4. Skopiuj oryginalny dysk na nowy dysk.

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
  5. Zmiana rozmiaru jest zakończona! Możesz sprawdzić właściwości nowego dysku, jeśli chcesz:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
  6. Zmień maszynę wirtualną, aby zamiast tego używała nowego dysku.

Następnie w systemie-gościu należy zmienić rozmiar partycji, aby użyć nowo dostępnego miejsca.

Daniel AA Pelsmaeker
źródło
1

Dla tych, którzy mają Windows na VHD, tak jak ja, najpierw przekonwertuj na VDI, klonując następującą komendą Linux. (Uwaga, maszyna wirtualna z systemem Windows wyłączona.)

VBoxManage clonehd Windows10.vhd Windows10.vdi --format vdi

Spowoduje to zduplikowanie dysku VHD.

Następnie można zmienić rozmiar VDI w następujący sposób. Zauważ, że VDI nie wzrośnie, dopóki nie zostanie użyte.

VBoxManage modifyhd Windows10.vdi --resize 80000

Po naprawieniu montażu pamięci masowej w oprogramowaniu hosta maszyny Wirtualnej i włączeniu maszyny Wirtualnej system Windows uruchamia się, ale partycja nadal będzie miała ten sam rozmiar. Google dla narzędzia Windows, które może zmienić rozmiar partycji dysku C. Użyłem EaseUs Partition Master do powiększenia partycji dysku C do mojego nowego rozmiaru.

Wreszcie dysk VHD można usunąć.

jws
źródło