Tengo un archivo de disco de 150 GB (.vmdk, no preasignado) donde se almacena mi máquina virtual.
El archivo tiene actualmente 20 GB, pero está creciendo todos los días, a pesar de que no estoy almacenando nada nuevo en el sistema de archivos invitado.
He estado buscando durante horas una forma de reducir el tamaño máximo de este disco , para que nunca llegue a 150 GB (me gustaría establecer el límite en 30 GB y ver qué sucede cuando la VM alcanza este tamaño) .
Lo que he intentado:
- Convertir la imagen de disco con VMware Converter → esto no funciona, la herramienta solo permite crear una copia completa o un 'clon vinculado'.
- Crear una nueva máquina virtual en blanco del tamaño deseado para copiar los datos de 20 GB en el nuevo .vmdk → No puedo encontrar una manera de realizar la copia o incluso conectar el nuevo disco a mi VM existente (de modo que realizo la copia usando El SO invitado).
- Mirando en el archivo .vmx para verificar si el tamaño máximo no se estableció en texto plano (no lo es).
Aunque esta tarea parece técnicamente bastante simple (no hay una reducción complicada, solo un simple cambio de límite de tamaño), realmente no tengo ideas aquí ...
¿Hay alguna solución?
virtual-machine
vmware-workstation
Sébastien
fuente
fuente
Respuestas:
El procedimiento habitual para reducir el tamaño de un disco .vmdk es:
Desfragmente el disco a través del invitado, eligiendo un modo de desfragmentación que consolide el espacio vacío al final del disco. Para un invitado de Windows, debe vaciar la Papelera de reciclaje y desactivar la hibernación y la paginación, devolviéndolas después de que se haya realizado la desfragmentación.
Cero todo el espacio no utilizado en el disco.
Para Windows utilización sdelete :
sdelete -c
.Para Linux:
dd if=/dev/zero of=/mytempfile && rm -f /mytempfile
.Encoge el disco (que puede tardar bastante tiempo en completarse).
VMware Workstation: Menú VM / Administrar / Limpiar discos.
O usar:
vmware-vdiskmanager.exe -k [VMDK PATH]
.para ESX:
vmkfstools --punchzero [VMDK PATH]
.Convertir el disco de cultivable a preasignado podría detener su crecimiento. Esto se puede hacer usando vmware-vdiskmanager con el
-t
parámetro cuyos valores son:El siguiente comando convertirá el .vmdk de cultivable a preasignado:
Si desea cambiar el tamaño del disco, esto debe hacerse mientras el disco todavía está en formato ampliable (ejemplos aquí ).
Para obtener más información, consulte la Guía del usuario de Virtual Disk Manager .
fuente
Debido a que el sistema operativo y sus programas de aplicación usan temporalmente mucho espacio en disco para archivos temporales, archivos de página, archivos de hibernación y archivos de configuración. Una vez que se eliminan, según la política del sistema operativo, se utilizan nuevos sectores en el disco la próxima vez. La VM asigna almacenamiento para el disco virtual desde el disco real cada vez que se utiliza un nuevo sector en el disco virtual. Como el sistema operativo invitado no reutiliza siempre el sector en el disco virtual, la VM considera que se trata de un uso del disco y da espacio desde el disco real y esto conducirá a una imagen de disco virtual en crecimiento.
Es menos probable que se resuelva el título de su pregunta, ya que el uso de dicha herramienta sin inspección de la imagen puede conducir a un desastre total. Pero puede evitar que la imagen crezca más allá de 30 GB. Hay muchas formas de lograr el objetivo.
A. Use solo 30GB particionados y deje el resto como espacio libre. Si ya particionó más espacio, entonces necesita reducirlo / eliminarlo, crear una nueva partición y luego volcarlo con ceros y perforarlo como lo describe @harrymc. Como el espacio en un área no particionada nunca se usa, el disco virtual nunca crecerá más allá de 30GB.
B. Cree una instantánea y restaure después del uso. Después de crear una instantánea, VM almacena los datos en un nuevo archivo de imagen. Si lo restaura, sin guardar o hacer nuevas instantáneas, todos los datos modificados se eliminan y, por lo tanto, se libera espacio.
C. Cree un nuevo disco virtual de un máximo de 30 GB, agréguelo como un nuevo disco a su máquina virtual actual, mueva todos los datos al nuevo disco virtual utilizando una herramienta de respaldo. Puede usar un Linux en vivo para la clonación.
La opción recomendada es A
fuente
¿Por qué no simplemente establecer el tamaño del disco involucrado en 30GB desde 150GB?
Tendrá que configurar la suma de todas las particiones para que sea inferior a 30 GB. Tendrá que reducir el tamaño de las particiones a medida que avanza. Hay MUCHA documentación en este sitio sobre cómo reducir las particiones, así que no lo repetiré aquí OTRA VEZ.
¿Por qué creaste una partición delgada de 150GB si no tuviste el espacio para soportarla al máximo? Parece que esto es solo pedir problemas.
fuente
vdiskmanager.exe -k [VMDK PATH]
como se sugiere en otra respuesta, no reduce la unidad.Hay una forma indirecta de utilizar VMWare Converter para crear una nueva VM y un tamaño de VMDK más pequeño, luego convertir el VMDK original en el VMDK más pequeño recién creado.
Pasos detallados aquí .
Tenga en cuenta que cualquier cambio en el tamaño de VMDK también necesitará una actualización correspondiente a la tabla de particiones .
fuente
Esto funciona solo para VMDK disperso (NO preasignado) Se requiere una desfragmentación antes de reducir para garantizar que el espacio utilizado sea contiguo
De la base de conocimiento VMWare
fuente
La respuesta de @harrym es bastante buena, pero en realidad no responde la pregunta. El OP quiere reducir el tamaño máximo . El problema es que el hipervisor no sabe qué cantidad del tamaño presentado (también conocido como tamaño máximo) es realmente utilizado por el sistema operativo. La compactación (vmware-vdiskmakager -k) se aplica a un vmdk ampliable. No hace nada en uno preasignado.
Entonces, los pasos para reducir el tamaño del disco son:
El primer paso implica un procedimiento desde la VM y varía con el SO huésped. El segundo paso podría ser compatible con los comandos vmware, pero no he encontrado una manera profunda de hacerlo. De ahí el enfoque hacky.
Aquí hay una solución no tan rápida (debido al gran movimiento de datos involucrados) y sucia que hizo el truco. Necesitaremos tener un espacio disponible igual al tamaño máximo del dispositivo .
ADVERTENCIA: ¡Recuerde hacer una copia de seguridad de los datos importantes antes de cualquier operación!
Encuentre una manera de cambiar el tamaño de la partición de invitado y dejar espacio sin asignar al final del dispositivo. Dos ejemplos:
Desde el sistema operativo invitado: Windows 7
Asegúrese de agregar al menos este número al tamaño del disco. Ahora necesitamos convertir los bytes en sectores que se dividen entre 512 y se redondean hacia arriba (techo). Por ejemplo, 209709448. Tenga en cuenta este número para el paso 3.
A través de un CD en vivo: SystemResqueCD
Anote el sector final y agregue 1. Por ejemplo, 113455104. Tenga en cuenta este número para el paso 3.
Como el hack funciona en vmdks preasignados de un solo archivo (tipo 2) (no lo he probado en varios tipos de archivos), primero convertimos lo crecible en preasignado. Necesitaremos temporalmente una partición con espacio físico como el tamaño máximo del dispositivo. (por ejemplo, 150 GB).
vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk
Ahora la parte difícil, para el disco preasignado debería haber 2 vmdks
disk.vmdk disk-flat.vmdk
el primero tiene solo KB de largo y el segundo que contiene los datos se extiende. Abra el primero (disk.vmdk) mientras la estación de trabajo VMWare está apagada , con un editor de texto (Notepad ++ es mi sugerencia). Encuentra la linea
RW 113455104 PLANO "Windows 7_x64-fl-flat.vmdk" 0
Sí, obtienes el punto, el segundo campo es el número de sectores asignados para el dispositivo. Como validación, multiplique por 512 y encuentre el tamaño en bytes, luego divida por 1073741824 (1024 ** 3) para encontrar el tamaño en GB. Este debería ser el tamaño del dispositivo anterior.
Ahora reemplace ese número con el número anotado del paso uno y guarde el archivo. ADVERTENCIA : Un error aquí y podría terminar recortando los datos reales utilizados en el sistema de archivos. (Pero cambiamos el tamaño de fs al comienzo del dispositivo e hicimos cálculos correctos y seguros, ¿verdad?)
Hasta ahora no se han tocado datos todavía. Realice este último paso para recortar realmente las extensiones. Utilizaremos la funcionalidad de cambio de nombre de vmware-vdiskmanager para recrear el vmdk con su tamaño ahora recortado.
vmware-vdiskmanager.exe -n destvmdk sourcevmdk
fuente
Para un sistema operativo invitado vmware linux, ejecute:
sudo vmware-toolbox-cmd disk shrinkonly
fuente