Come posso aumentare le dimensioni del disco rigido della macchina virtuale?


257

inserisci qui la descrizione dell'immagine

Ho esaurito lo spazio sulla mia macchina virtuale WinXP, a cui ho dato solo 10 GB di spazio per quando l'ho creata. C'è un modo semplice per aumentarlo a, diciamo, a 20 GB? Non riesco a vedere alcuna opzione ovvia nelle impostazioni di VirtualBox.


Il suggerimento seguente fornisce questo errore

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

Rimuovere .vdi da VirtualBox prima di chiamare il comando VBoxManage, quindi aggiungerlo nuovamente, ha avuto esito positivo. Ma ora non riesco ad avviare la macchina virtuale, ottengo questa schermata preoccupante:

inserisci qui la descrizione dell'immagine

A proposito, dice FATAL: Could not read from the boot medium! System halted.


Il vdi deve essere ricollegato alla VM dopo il comando VBoxManage. Inoltre, la partizione dovrà essere ridimensionata da ENTRO le finestre, poiché avrai questo spazio vuoto:

inserisci qui la descrizione dell'immagine

Sono stato in grado di ridimensionare facilmente la partizione usando un po 'di freeware chiamato EASEUS Partition Master 9.1.0 Home Edition .


3
Il tuo problema è che hai collegato il disco a una posizione "/ media / data" e che non si trova nella posizione originale "/ home / wim / VirtualBox VM". Ho risposto con come ho risolto questo problema.
stolsvik,

1
ho dettagliato la mia esperienza qui: kmonsoor.wordpress.com/2012/05/26/virtualbox-increase-disk-size la risposta "accettata" di seguito è ben lungi dall'essere addirittura giusta.
kmonsoor,

C'è un'altra possibilità di "copiare il VDI esistente" a una "nuova VDI vuota, la cui dimensione è più grande di quanto esistente" (riferi- justintung.com/2011/01/06/... )
parasrish

inoltre, notare che il semplice ridimensionamento potrebbe non aiutare, poiché la dimensione di "vdi" sarebbe aumentata, ma in base alla "installazione di vm-os", la partizione primaria rimane invariata e lo spazio appena allocato viene in genere mostrato "non allocato ". È quindi necessario eseguire la "riassegnazione della partizione" (fare riferimento al collegamento sopra).
Parassita,

Risposte:


325

Apri un terminale e vai alla cartella con l'immagine del disco di VirtualBox, quindi usa il seguente comando:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

sostituendo YOUR_HARD_DISKe SIZE_IN_MBcon il nome dell'immagine e la dimensione desiderata. sudopotrebbe essere necessario in alcune macchine o potresti riscontrare un errore. Questa risposta e una spiegazione più completa sono qui, su webupd8 . Ringraziamo Andrew per aver pubblicato questa risposta.

Dopo il ridimensionamento, lo spazio sul disco rigido virtuale aggiuntivo deve essere partizionato e formattato affinché l'ospite lo utilizzi. Questo può essere fatto con gparted avviando l'ospite da un ISO live. Possiamo anche ridimensionare la partizione esistente usando gparted. Per questo motivo potrebbe essere necessario disabilitare /swape creare una nuova partizione di swap.


20
+1. Ho usato questo per aumentare le dimensioni del mio disco di Windows 7 da 20 a 30 GB e ha funzionato senza problemi (non è necessario annullare la registrazione, ecc.). $ VBoxManage modifyhd Windows7.vdi --resize 30720 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Inizialmente Windows non ha rilevato lo spazio aumentato, ma dopo uno spegnimento lo ha fatto, e quindi sono stato in grado di utilizzare lo strumento di gestione disco integrato per aumentare le dimensioni della mia partizione C :.
Jonik,

3
+1, questo è sicuramente il modo più pulito per farlo.
Starx,

20
@asd La modifica delle dimensioni del disco non è sufficiente, è inoltre necessario ridimensionare la partizione.
Bruno,

5
Penso che nelle ultime versioni di VirtualBox sia .\VBoxManage.exe modifymedium disk 4d30d154-f8c2-4a3b-bd8b-ddcfbfe64aaf --resize 30720adesso. modifyhdfunziona anche però - c'è una retrocompatibilità con i comandi più vecchi.
TranslucentCloud,

2
Ho appena ridimensionato le dimensioni del file vdi da 25G a 120G, ma il gestore del disco del sistema Windows7 non riesce ancora a vedere lo spazio non allocato. È causato da un file di snapshot (prima ho uno snapshot), ma quando provo a eliminare lo snapshot, il report di virtualbox si arresta in modo anomalo, quindi non posso eliminare lo snapshot. Qualche idea? Il mio guest win7 continua a vedere 25G. Grazie.
ollydbg23

25

Per me ha funzionato:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

Tuttavia, capisco come il chilometraggio può variare :-) Per quanto riguarda il ridimensionamento della partizione, in Windows 7, sono stato in grado di ridimensionare nella schermata mostrata facendo clic con il tasto destro del mouse sull'unità C: nel pannello inferiore e selezionando Estendi volume.

Schermata di gestione del computer


12
sudonon è necessario. Potrebbe corrompere le autorizzazioni nella tua home directory, richiedendoti di utilizzare sudoper virtualbox che è una cattiva idea.
Lekensteyn,

1
@Lekensteyn: Buono a sapersi che non è necessario. L'ho usato perché altri avevano detto che non funzionava senza essere root. Per quanto riguarda la corruzione dei permessi, chmod funziona bene per correggere tali errori.
Richard Povinelli,

@Lekensteyn: chown correggerà gli errori di proprietà. Cito chmod e chown, perché ho dovuto risolvere il problema a cui ti riferisci molte volte :-)
Richard Povinelli,

2
Questo è ottimo per Windows, ma se hai un SO guest Linux questo link può aiutarti a ridimensionare le partizioni: forums.virtualbox.org/viewtopic.php?f=35&t=50661
Jon

Se stai eseguendo Windows in Linux devi seguire queste opzioni ed estendere il disco, altrimenti Windows non aggiungerà lo spazio aggiuntivo che abbiamo aggiunto
Ajith R Nair,

18

Wim, penso che dovrai prima annullare la registrazione da Vbox. File, Media Manager, fai clic su di te hdd e annulla la registrazione. Quindi riprovare.


2
Non richiesto su Linux in VirtualBox. Prima ho dovuto chiudere completamente il SO guest.
Underverse

15

Puoi anche farlo usando il menu VirtualBox:

Seleziona File->Virtual Media Manager ...

Si aprirà una finestra: inserisci qui la descrizione dell'immagine

Seleziona il tuo disco e seleziona Properties. Ora basta spostare il cursore in basso.

Dopo aver avviato la macchina virtuale, Windows non riconoscerà il nuovo spazio.

In Windows, apri Computer Management(cercalo nel menu Start), seleziona Storage-> Disk Managementnel menu a sinistra. Seleziona la tua partizione (probabilmente C :), fai clic destro su di essa e seleziona Extend Volume .... Ora fai clic sulla procedura guidata e il gioco è fatto.


Devi fare Releaseprima? Come attualmente il cursore è grigio. O hai scelto la partizione dinamica?
Royi,

Royi: quando crei il disco virtuale, assicurati che abbia una dimensione dinamica.
lenooh,

10

Dopo aver ridimensionato e non essere in grado di visualizzare il ridimensionamento sul mio computer guest Windows XP, ho dovuto

  1. clonalo
  2. ridimensionalo con "VBoxManage edithd winxppro \ Clone.vdi --resize 30720" e tutto ha funzionato

Ho visto in altri forum che le istantanee possono interferire per il ridimensionamento e non essere in grado di rimuovere tutte le istantanee per diversi errori che ho ottenuto, l'unica soluzione trovata per me era clonarla per rimuovere le istantanee e quindi ridimensionarla, e tutto ha funzionato. Per il ridimensionamento finestre esterne, un CD di avvio GParted che può essere trovato qui può aiutare


6

Ho avuto lo stesso problema in cui avevo spostato un disco e ho sostituito l'originale con un collegamento simbolico. In seguito funziona bene, ma si verificano problemi con il comando 'modificahd', poiché apparentemente canonicalizza il percorso del file vdi quando si lavora con esso. Questo sembra che tu stia provando ad aggiungere un nuovo disco con lo stesso UUID ma su un percorso diverso - o qualcosa del genere.

C'erano due problemi:

  1. Il disco doveva essere rimosso dalla VM che lo utilizzava, ma anche "dall'elenco VirtualBox di hdds". Ciò è stato risolto con il comando 'closemedium', che lo rimuove da tale elenco.

  2. Il disco da ridimensionare era un "disco fisso" anziché "dinamico" e solo i dischi dinamici possono essere ridimensionati. Ciò è stato risolto con un comando 'clone' (il clone è dinamico), quindi ridimensiona il disco risultante.

Questo è il mio registro per come è stato fatto. Si accorgono che io non in qualsiasi punto in esecuzione come root , tranne quando poi faccio il ridimensionamento della partizione e il filesystem.

RIMUOVI L'ASSOCIAZIONE AL DISCO DALLA VM.

PROBLEMA ANCORA PERSISTI:

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

Ah, il disco è ancora "nel sistema":

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

Rimuovere / eliminare il disco dall'elenco dei dischi di 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)

Prova di nuovo il ridimensionamento:

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!

DAMN, "dimensione fissa" NON FUNZIONA! 'clonehd' in soccorso, in quanto lascia un disco clonato 'allocato dinamicamente':

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

ORA FARE IL RESIZE (istantaneo):

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%

ALLORA ATTACCARE A ALCUNE VM, PER IL RISPARMIO. Questo viene fatto come root. Suppone che tu abbia solo una partizione e possibilmente scambiare.

# 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.

Questo ha funzionato per me, seguito la guida qui: yinfor.com/2015/05/…
marijnz0r

4

Questo ha funzionato per me con Virtualbox 5.2.6 installato su Ubuntu 16.04 Host Machine e Windows 10 Guest: apri Virtualbox Manager, fai clic su Strumenti globali (angolo in alto a destra) e scegli Virtual Media Manager. Fai clic sulla scheda Hard Disk e seleziona il tuo SO guest. Nella parte inferiore della casella fai clic sulla scheda Attributi. Nella parte inferiore puoi vedere le dimensioni del disco virtuale e con il cursore puoi aumentare le dimensioni a tuo piacimento. (Puoi solo aumentare, non diminuire le dimensioni con questo metodo). Clicca su Applica. Avviare il sistema operativo guest Windows, aprire Gestione computer, fare clic con il pulsante destro del mouse su C: Drive e selezionare Estendi volume per estendere il file system con la parte non allocata.

Questo è tutto ciò che dovevo fare, funziona perfettamente per me.


Ha funzionato alla grande. Non dovrebbe essere questa la risposta accettata, almeno per le versioni recenti di VirtualBox?
AlwaysLearning

2

Un modo sicuro è quello di farlo su un disco rigido più grande che non è in esecuzione in una macchina virtuale. Per prima cosa usa ccleaner o un programma simile in XP per ripulire tutti i file spazzatura che può. Quindi crea un HDD virtuale secondario della dimensione desiderata. Avviare con l'ISO clonezilla nell'unità ODD virtuale e clonare insieme all'opzione 'ridimensiona alla nuova dimensione della partizione' selezionata. Quindi imposta il nuovo Virtual HDD come primario e non eliminare quello vecchio fino a quando non sai che ha funzionato.


2

Ho ricevuto lo stesso errore fino a quando non ho usato sudo per eseguire il comando, quindi ha funzionato perfettamente, ma ho bisogno di avere una partizione cresciuta all'interno del guest per usare spazio aggiuntivo.


Alcune persone hanno riferito che questo fa sì che la home directory abbia cattive autorizzazioni
Jonathan

2

Assicurarsi di aver effettuato l'accesso come utente con autorizzazioni di scrittura al file immagine del disco. Quindi corri

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB  

Ha funzionato per me la prima volta di chiedere


1
Hai dovuto reinstallare / riformattare / ripartizionare? o si è appena riavviato?
Jonathan,

2

Se il computer host è Windows, è possibile eseguire il comando seguente per aumentare o ridurre la dimensione del disco VDI nella casella virtuale:

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

Nel comando precedente sostituire your_user_name con l'utente reale di Windows e 20000 è una dimensione MB del disco.


1

È un dato di fatto, sembra che modifyhdda solo non ti faccia del bene in alcuni casi. In realtà ho ampliato il mio vdi WinXP clonando l'immagine dopo l'espansione.

Ecco la guida passo-passo completa che ha funzionato per me un paio di settimane fa: http://libtronics.com/2011/07/resize-virtualbox-disk-for-winxp-guest/


Puoi per favore spiegare i passaggi qui? Le risposte con poco più di un collegamento a un altro sito sono generalmente visualizzate in modo non corretto e possono essere eliminate .
Tom Brossman,

1
Bene, devi capire cosa fa edithd, che non è altro che espandere il disco virtuale sottostante, tutto qui. Hai ancora bisogno di espandere il filesystem che è su di esso.
Marcin Kaminski,

1

Ecco un modo per ridimensionare il disco di VirtualBox, indipendentemente dal fatto che si tratti di un disco di formato fisso o dinamico. In particolare, impedisce questo errore:

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

⚠️ Eseguire il backup del disco virtuale. Non sai mai cosa potrebbe andare storto.

Sul tuo host:

  1. Apri una finestra del terminale.

    Su Windows: apri il prompt dei comandi cmd.

  2. Vai alla directory con il disco virtuale che desideri ridimensionare. Per esempio:

    cd "My VMs"
  3. Crea un nuovo disco VirtualBox con il nome file, la dimensione (in megabyte) e il formato desiderati Standard(dinamico ()) o Fixed). Ad esempio, per creare un disco a formato fisso da 50 GB chiamato MyNewDisk.vdi:

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

    Se VBoxManagenon viene riconosciuto come comando, specificare il percorso completo. Può essere trovato nella directory di installazione di VirtualBox. Su Windows il comando sopra diventerebbe:

    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium
        --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
  4. Copia il disco originale sul nuovo disco.

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
  5. Il ridimensionamento è fatto! Puoi controllare le proprietà del nuovo disco se vuoi:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
  6. Modificare invece la macchina virtuale per utilizzare il nuovo disco.

Successivamente, sul SO guest è necessario ridimensionare le partizioni per utilizzare lo spazio appena disponibile.


1

Per coloro che hanno Windows su un disco rigido virtuale, come ho fatto io, prima converto in VDI clonando con il seguente comando Linux. (Nota, VM di Windows spenta.)

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

Questo duplicherà il VHD.

Quindi il VDI può essere ridimensionato con il seguente. Nota che il VDI non crescerà fino a quando non viene utilizzato.

VBoxManage modifyhd Windows10.vdi --resize 80000

Dopo aver risolto il montaggio dello storage nel software host della VM e aver acceso la VM, Windows si avvia, ma la partizione avrà comunque le stesse dimensioni. Google per uno strumento di Windows in grado di ridimensionare la partizione dell'unità C. Ho usato EaseUs Partition Master per far crescere la partizione dell'unità C alla mia nuova dimensione.

Infine, il disco rigido virtuale può essere eliminato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.