2012-03-16 21 views
8

Ho un computer Windows e sto eseguendo VMWare Player. Ho 1 immagine di Centos. A un certo punto la VM era di circa 12 GB.Riduci disco vmware

ho cancellato molti file non necessari, lasciando cadere la dimensione a 4 GB

Tuttavia, questa riduzione non si è riflesso nel vmdk.

Windows segnala che la dimensione è di circa 10GB, mentre CentOS usa solo 4GB

C'è un modo per recuperare questo spazio?

risposta

6

Sì, è possibile ridurlo utilizzando "vmware-vdiskmanager". Per ulteriori dettagli, consulta questo article.

Chiedi anche a te stesso: avresti bisogno di questo spazio più tardi? Se si tratta di un ambiente non di produzione, e lo si utilizza per scopi "casa" I fortemente consiglia di passare ad altre piattaforme di virtualizzazione (VirtualBox ad esempio) in quanto è più user-friendly, più aggiornato e supporta la maggior parte formati dei file VMDK (quindi la migrazione sarebbe facile).

+0

Grazie per l'aiuto. Daremo anche un'occhiata alla casella virtuale – Thomas

12

Il problema qui è che sebbene siano stati cancellati i file nell'immagine VM CentOS, VMware non tenta di recuperare quello spazio finché non lo si chiede esplicitamente. Anche in questo caso, se i blocchi del disco utilizzati dai file non sono stati azzerati, continueranno a occupare spazio nei file vmdk. Se sei abituato a ridurre le macchine virtuali Windows, questo potrebbe non esserti familiare.

La procedura di base per recuperare lo spazio è:

  • Rimuovere i file non necessari
  • Zero tutto lo spazio libero (non necessario per Windows VM)
  • utilizzare VMware Player o Workstation a ridursi i dischi virtuali.

La procedura specifica che ho usato per ridurre la mia immagine CentOS è stato quello di effettuare le seguenti operazioni:

df -h 
su 
yum clean all 
cd/; cat /dev/zero > zero.fill ; sync ; sleep 1 ; sync ; rm -f zero.fill 
exit 

Ho poi chiudere il mio CentOS VM e utilizzare il Compact utility sul Hardware pagina dedicata agli il dispositivo disco rigido in Impostazioni macchina virtuale.

Dopo il restringimento, il vmdk per il file system di root aveva circa le stesse dimensioni del file system di root in uso e il vmdk ha iniziato ad espandersi di nuovo, se necessario, da qui.

Nota che la mia VM aveva solo una singola partizione di root, se avessi avuto altre partizioni o dischi, avrei sostituito la parte cd / del riempire linea con il punto delle altre partizioni monte e quindi eseguire l'utilità di restringimento su ciascun disco virtuale.

Per ulteriori opzioni, vedere Shrinking VM Disk Images.

Se avete bisogno di istruzioni per fare lo stesso con un Linux basato su Debian, o volete usare l'utilità da riga di comando vmware-vdiskmanager piuttosto che la GUI di VMware per ridurre i dischi, date un'occhiata all'articolo How To Shrink VMware Virtual Disk Files (.vmdk).


Se si utilizza la macchina virtuale per un po 'di tempo, è possibile trarre vantaggio dall'azzeramento del file di scambio. Sul mio sistema CentOS, ho fatto la seguente:

$ su 
Password: 
# cat /proc/swaps 
Filename        Type  Size Used Priority 
/dev/sda3        partition 2064376 0  -1 
# swapoff -a 
# cat /proc/swaps 
Filename    Type  Size Used Priority 
# dd if=/dev/zero of=/dev/sda3 bs=1M 
dd: writing `/dev/sda3': No space left on device 
2017+0 records in 
2016+0 records out 
2113929216 bytes (2.1 GB) copied, 24.6894 s, 85.6 MB/s 
  • Nota: Dal momento che stiamo pulendo una partizione tutta qui, assicuratevi che il dispositivo specificato per il comando dd è lo stesso mostrato dal comando cat /proc/swaps . Per sicurezza, esegui il backup della tua VM prima di provare a farlo.

Dopo aver ridotto il disco virtuale, sarà necessario riattivare il file di scambio. Per esempio:

$ su 
Password: 
# free -o 
      total  used  free  shared buffers  cached 
Mem:  1030684  344552  686132   0  20956  175912 
Swap:   0   0   0 
# mkswap /dev/sda3 
Setting up swapspace version 1, size = 2064380 KiB 
no label, UUID=80276a48-3581-4f7a-8b05-1f2a97169e22 
# gedit /etc/fstab 
# swapon -a 
# free -o 
      total  used  free  shared buffers  cached 
Mem:  1030684  346132  684552   0  20968  175912 
Swap:  2064376   0 2064376 

La gedit/etc/fstab è stato quello di sostituire il vecchio UUID di swap con quello nuovo creato da mkswap.

Si noti che questa domanda sarebbe davvero più appropriata su Superuser o Serverfault rispetto a qui su Stack Overflow, che è destinato ad essere per domande di programmazione.

+0

perché dovresti aver bisogno della sincronizzazione? dopo tutto l'arresto dovrebbe anche portare a un 'sync', giusto? – 0xC0000022L

+0

cintura, bretelle e un pezzo di spago Credo @ 0xC0000022L. Provalo senza e vedi se funziona. Presumo che la teoria è che senza il 'sync; sonno 1; sync' poi CentOS può scartare qualsiasi cache non-scritto scrive a' zero.fill' non appena si ottiene il comando 'rm zero.fill', lasciando loro un -zeroed. –

+0

Mi dispiace @EricGuo, il tuo commento non è chiaro. Intendi che ti piace la mia risposta qui, o che ti piace un'altra risposta che stavi tentando di collegare? Se quest'ultimo, il tuo link puntava a una domanda piuttosto che a una risposta, quindi non ho idea di quale risposta stai parlando. Utilizzare il collegamento perma "Condividi" nella parte inferiore della risposta anziché copiare il collegamento non perma dalla barra degli indirizzi. –

3

Quello che state cercando è (nella versione 5 del Player):

  1. Spegnere il VM (dopo il necessario servizio di pulizia dei suoi dischi)
  2. Modifica impostazioni della macchina virtuale
  3. Cliccare su hard Disk (nel riquadro a sinistra)
  4. Cliccare sulla Utilities
  5. Select Compact
+0

funziona anche in VMWare Player – rboy

+0

Funziona solo io, il giocatore di VMWare ha alcuni suggerimenti che parti del vostro disco virtuale può essere shrinked. Potresti usare strumenti come 'zerofree' (Linux) o' sdelete' (Windows) per "azzerare/invalidare" lo spazio inutilizzato. Successivamente l'opzione Compatta potrebbe funzionare. – AnDus

11

Scavare in questa domanda poiché ho questo con VMware Player 5 e la GUI degli strumenti viene rimossa anche nel pannello di controllo e farlo dall'host non funziona più. In ogni caso per ottenere il VM a ridursi riga di comando aperta nel Guest di Windows e passare alla

C: \ Program Files \ VMware \ VMware Tools \ VMwareToolboxCmd.exe

e il tipo di aiuto per tutte le opzioni così ho usato

C: \ Program Files \ VMware \ VMware Tools \ VMwareToolboxCmd.exe calettatore c: \

corre mentre th e la macchina è accesa, il check-out e godere

+0

A quale unità fa riferimento il 'c: \' alla fine? –

+1

Questo vale per gli ospiti di Windows che si riferisce alla unità principale del sistema operativo, non l'ho provato su un ospite Unix e pretendo il file di aiuto sarebbe iterare quali '/' supporti –

0

Purtroppo nessuna delle risposte fornite funzionato per me (io uso di Windows 8.1 come il mio sistema host, CentOS 7 è il sistema guest in esecuzione all'interno di VMWare Player).

Con VMWare Tools installato nel sistema guest, potrei chiamare i seguenti comandi, il che ha fatto il trucco per me.

vmware-toolbox-cmd disk list mostra tutte le partizioni che possono shrinked:

/ 
/boot 
/home 

Uso esempio vmware-toolbox-cmd disk /home per ridurre la partizione specificata.