2012-03-16 20 views
8

Tengo una máquina con Windows y estoy ejecutando VMWare Player. Tengo 1 imagen de Centos. En un momento, la máquina virtual tenía unos 12 GB.Shrink vmware disk

he eliminado muchos archivos innecesarios, dejando caer el tamaño de 4 GB

Sin embargo, esta reducción no se reflejó en el vmdk.

Windows informa de que el tamaño es de 10 GB, mientras que sólo utiliza Centos 4 GB

¿Hay una manera de recuperar este espacio?

Respuesta

6

Sí, puede reducir el tamaño usando "vmware-vdiskmanager". Consulte este article para más detalles.

También pregúntese: ¿necesitaría este espacio más adelante? Si este es un entorno que no es de producción, y lo utiliza para fines "domésticos" I fuertemente recomendamos pasar a otra plataforma de virtualización (VirtualBox por ejemplo) ya que es más fácil de usar, más actualizada y compatible con la mayoría formatos de los archivos VMDK (por lo que la migración sería fácil).

+0

Gracias por la ayuda. Echa un vistazo a la caja virtual también – Thomas

12

El problema aquí es que aunque haya eliminado los archivos en su imagen de CentOS VM, VMware no intenta reclamar ese espacio hasta que se lo solicite explícitamente. Incluso entonces, si los bloques de disco utilizados por los archivos no se han puesto a cero, seguirán ocupando espacio en los archivos vmdk. Si está acostumbrado a reducir las VM de Windows, puede que no le resulte familiar.

El procedimiento básico para la recuperación del espacio es:

  • Elimine los archivos innecesarios
  • cero todo el espacio libre (no es necesario para Windows VM)
  • uso de VMware Player o estación de trabajo para reducir el tamaño de los discos virtuales.

El procedimiento específico que utiliza para reducir mi imagen CentOS era hacer lo siguiente:

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

luego cerrar mi CentOS máquina virtual y utiliza el compacto utilidad en la hardware página de el Disco duro dispositivo en Configuración de máquina virtual.

Después de la contracción, vmdk para el sistema de archivos raíz era aproximadamente del mismo tamaño que el tamaño del sistema de archivos raíz en uso, y la vmdk comenzó a expandirse de nuevo según sea necesario desde aquí.

Nota que mi máquina virtual sólo tenía una única partición raíz, si hubiera tenido otras particiones o discos, habría reemplazado la parte cd / del llenar línea con el punto de montaje en las otras particiones y ejecute la utilidad de reducción en cada disco virtual.

Para obtener más opciones, consulte Shrinking VM Disk Images.

Si necesita instrucciones para hacer lo mismo con un Linux basado en Debian, o desea utilizar la utilidad de línea de comandos vmware-vdiskmanager en lugar de la GUI de VMware para reducir los discos, consulte el artículo How To Shrink VMware Virtual Disk Files (.vmdk).


Si ha estado utilizando la máquina virtual por algún tiempo, también puede beneficiarse de poner a cero el archivo de intercambio. En mi sistema CentOS, hice lo siguiente:

$ 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: Debido a que estamos limpiando una partición entera aquí, asegúrese de que el dispositivo que especifica para el comando dd es el mismo que se muestra por el comando cat /proc/swaps . Para estar seguro, haga una copia de seguridad de su VM antes de intentar esto.

Después de encoger el disco virtual, deberá volver a habilitar el archivo de intercambio. Por ejemplo:

$ 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 

El gedit/etc/fstab fue reemplazar el antiguo UUID de intercambio con el nuevo creado por mkswap.

Tenga en cuenta que esta pregunta sería realmente más adecuada en Superuser o Serverfault que aquí en Stack Overflow, que está destinado a las preguntas de programación.

+0

¿por qué necesitarías la sincronización? después de todo, el apagado también debería conducir a una 'sincronización ', ¿verdad? – 0xC0000022L

+0

Cinturón, tirantes y un trozo de hilo, supongo @ 0xC0000022L. Pruébelo sin y vea si funciona. Supongo que la teoría es que sin el 'sync; sleep 1; sync', entonces Centos puede descartar cualquier escritura en caché sin escribir en' zero.fill' tan pronto como reciba el comando 'rm zero.fill', dejándolos sin -Zeroed. –

+0

Lo siento @EricGuo, su comentario no está claro. ¿Quiere decir que le gusta mi respuesta aquí, o que le gusta otra respuesta a la que estaba intentando vincular? Si esto último, su enlace apunta a una pregunta más que a una respuesta, entonces no tengo idea de qué respuesta está hablando. Utilice el enlace permanente "Compartir" en la parte inferior de la respuesta en lugar de copiar el enlace no permanente de la barra de direcciones. –

3

Lo que se busca es (en la versión 5 del jugador):

  1. potencia abajo de la máquina virtual (después de la limpieza necesaria de sus discos)
  2. Editar la configuración de la máquina virtual
  3. Haga clic en disco duro (en el panel izquierdo)
  4. Haga clic en Utilidades
  5. Seleccionar compacto
+0

También funciona en VMWare Player – rboy

+0

Solo funciona I El VMWare Player tiene algunos consejos sobre qué partes de su disco virtual se pueden reducir. Puede usar herramientas como 'zerofree' (Linux) o' sdelete' (Windows) para "cero/invalidar" el espacio no utilizado. Después, la opción Compact puede funcionar. – AnDus

11

Responda a esta pregunta ya que tengo esto con VMware Player 5 y las herramientas GUI se eliminan incluso en el panel de control y hacerlo desde el host ya no funciona. De todos modos para conseguir la máquina virtual para reducir el tamaño de línea de comandos abierta en el invitado de Windows y navegue hasta

C: \ Archivos de programa \ VMware \ VMware Tools \ VMwareToolboxCmd.exe

y el tipo de ayuda para todas las opciones así que utilicé

C: \ archivos de programa \ VMware \ VMware Tools \ VMwareToolboxCmd.exe anillo de contracción c: \

se ejecuta mientras º La máquina está encendida, compruébalo y disfruta

+0

¿A qué unidad se refiere el 'c: \' al final? –

+1

Esto se aplica a los invitados de Windows que se refiere a la unidad raíz del sistema operativo, no lo he probado en un invitado de Unix y supongo que el archivo de ayuda iteraría qué '/' admite –

0

Desafortunadamente, ninguna de las respuestas provistas me funcionó (utilizo Windows 8.1 como mi sistema host, CentOS 7 es el sistema invitado que se ejecuta dentro de VMWare Player).

Con las herramientas de VMWare instaladas en mi sistema de invitado, podría llamar a los siguientes comandos, lo que me sirvió de algo.

vmware-toolbox-cmd disk list muestra todas las particiones montadas que puede ser de termocontracción:

/ 
/boot 
/home 

Uso por ejemplo vmware-toolbox-cmd disk /home para reducir la partición dada.