Quiero convertir una máquina física con MS Windows 7 en una máquina virtual VirtualBox. Esto es fácil, lo he hecho antes, pero esta vez necesitaba que el tamaño / capacidad virtual del disco fuera un tamaño fijo y más pequeño .
Debe repararse porque instalaré el cifrado de disco PGP en él por razones de cumplimiento. Esto expandirá un disco dinámico a su tamaño máximo.
Aparte de este caso especial, existen otras razones para querer que los discos sean más pequeños y fijos. Es mi experiencia Si ejecuta, por ejemplo, un servidor de compilación Jenkins en un disco que se expande dinámicamente, podría ver que el disco se expande rápidamente a su tamaño máximo mientras que en el sistema operativo invitado el uso del espacio en disco es estable y hay mucho espacio libre.
Usando Disk2vhd , he creado un archivo vhdx. Este archivo lo convertí al formato vdi.
vboxmanage clonehd --format VDI MSWIN7.VHDX MSWIN7.vdi
Supuestamente con vdi podría disminuir el tamaño / capacidad virtual con comandos similares a
vboxmanage modifyhd MSWIN7.vdi --resize 160000
Descubrí que esto no funciona. Incluso si prueba variantes, recibirá constantemente mensajes de error como:
Estado de progreso: VBOX_E_NOT_SUPPORTED VBoxManage: error: ¡aún no se ha implementado el cambio de tamaño del disco duro para este formato!
A continuación se muestra el diseño del disco de mi disco vdi. Agregué esto a una máquina virtual Ubuntu para verlo usando Gparted y CloneZilla. La capacidad es de alrededor de 300 GB. Sin asignar 145 GB. Usado es de alrededor de 153 GB.
Quiero reducir la capacidad a alrededor de 160 GB. Esto debería ser suficiente para encajar /dev/sdb1
y /dev/sdb2
.
Por cierto, probé CloneZilla pero tampoco parece que le guste reducir la capacidad a un disco más pequeño. Probé varias configuraciones en CloneZilla pero no tuve éxito.
¿Cómo puedo disminuir el tamaño / capacidad virtual?
fuente
vboxmanage clonehd "source-disk.vdi" "new-disk.vdi" --existing
destruye la tabla de particiones en la imagen de destino.Al final logré resolver este rompecabezas de una manera inesperada y fácil usando la utilidad de línea de comandos preinstalada,
dd
vea Clonación de disco . Como se muestra a continuación, ahora tengo mi unidad de 160 GB en mi sistema operativo invitado almacenado en un archivo vdi VirtualBox fijo de 160 GB.Lo resolví siguiendo los siguientes pasos:
MSWIN7.vdi
con MS Windows 7 a una máquina virtual Ubuntu como segundo disco./dev/sda1
con Ubuntu VM en ejecución,/dev/sdb2
con la fuenteMSWIN7.vdi
y/dev/sdc1
con el nuevo vdi./dev/sdc
. CloneZilla hizo esto por mí. No copió datos, pero creó la partición que quería. Por supuesto que puedes hacer esto manualmente.sdb
asdc
con undd
comando similar asudo dd if=/dev/sdb of=/dev/sdc
. El comando finaliza con un mensaje de error que no deja espacio, que se espera. Esto lo ignoré porque este es solo espacio sin asignar que no pudo copiar.Creo que es posible ejecutar el comando para cada partición. Quizás sea mejor y no muestre un mensaje de error.
sudo dd if=/dev/sdb1 of=/dev/sdc1
ysudo dd if=/dev/sdb2 of=/dev/sdc2
.fuente
¡Creo que esta solución es extremadamente peligrosa! Se basa en que todos los archivos se encuentran en los primeros 153 GB de la partición original de 300 GB. El comando dd no copia archivos. Simplemente copia TODOS los bloques en secuencia. Por lo tanto, si tuvo la mala suerte de tener archivos importantes DESPUÉS del corte de 160 GB, dd no sabrá copiarlos.
La solución típica que he visto en muchas publicaciones es encender la VM de Windows y usar alguna combinación de herramientas de desfragmentación y herramientas administrativas para consolidar todos los archivos en la parte frontal del disco; la dificultad es que muchas herramientas de desfragmentación no se mueven inamovibles Archivos del sistema de Windows (tuve que desactivar la Recuperación del sistema para eliminar un fragmento de disco inmóvil de 7 GB), que se encuentran en el medio del espacio que está intentando consolidar.
Una vez que haya consolidado los archivos en la parte frontal del disco (MyDefrag es una herramienta gratuita que proporciona una visualización de dónde están los archivos en el disco), debe reducir el tamaño de su partición de Windows. Utilicé la herramienta diskpart con la opción de reducción.
En este punto, puede usar dd para copiar la partición ahora más pequeña a un nuevo vdi.
También he usado vboxmanage modifymedium win10.vdi --compact, en mi host Linux, pero primero tuve que ejecutar sdelete.exe dentro del sistema de Windows para poner a cero todo el espacio no utilizado primero (sdelete -zc :). El uso de vboxmanage para compactar el archivo vdi existente le permite hacer todo en el lugar (pero siempre tener una copia de seguridad).
fuente
En mi caso, tenía una máquina virtual de Windows con 50 GB de vdi para reducir a 20 GB.
He probado la solución de Andre Figueiredo pero tuve un problema con el clonado
vdi
.Cuando aplico la solución Andre Figueiredo y adjunto el encogido
vdi
a la VM, durante el arranque, Virtualbox se detiene con un error de E / S.Quizás esto esté relacionado con mi
btrfs
sistema de archivos (escuché quebtrfs
causa problemas con Vritualboxvdi
).Mi solución:
Intenté una solución diferente para reducir el disco VM (
vdi
), llamado OVdi , ( OVdi tiene un tamaño de disco de 50 GB, una partición ntfs única con 40 GB de espacio libre).Sigamos estos pasos (este es mi caso, puedes adaptar / inventar diferentes nombres vdi ):
detener la VM (apagado)
crear un nuevo disco (
vdi
) con el nombre DVdi del tamaño deseado (20GB mi caso ..)adjuntar DVdi a la VM
arranque VM e instale la utilidad EaseUS Backup Free
Ejecute EasyUS y use la función EasyUS Clone (clona OVdi MBR y la partición ntfs de OVdi reduciéndose a un nuevo disco DVdi )
Apagar la VM
Separar OVdi de VM
Compruebe si DVdi es el primer dispositivo de arranque para la VM
reiniciar la VM
Que te diviertas
No olvides eliminar el volumen OVdi .
Siguiendo estos pasos, reduje con éxito el tamaño del disco VM de 50 GB a 20 GB
fuente
Como otros han mencionado, la respuesta de Andre Figueiredo se basa en la suerte, ya que no hay garantía de que la "primera X gb" del espacio sea su espacio, a menos que defragmente, en cuyo caso aún es arriesgado.
La respuesta de Paul Hursky es mucho más segura. Enumeraré algunos pasos adicionales que hice (tenga en cuenta que esto es para Windows, el mío fue XP pero también debería funcionar para otros):
1) Obtenga la edición gratuita de "MiniTool Partition Wizard Free 12" en este enlace
2) Instálelo dentro del sistema operativo invitado y cambie el tamaño de su unidad, deje un poco de espacio para respirar solo para estar seguro (no lo tire hacia atrás ...) Como es muy probable que cambie el tamaño del disco duro del sistema operativo actual, le dará la opción de reiniciar y realizar la acción, haga esto.
3) Ahora usando el mismo programa de Partición MiniTool, seleccione su espacio ahora no asignado (debajo
*:
) -> Haga clic derecho -> Limpiar partición -> Rellenar sectores con cero (rápido).4) Ahora apague con seguridad el sistema operativo invitado. Vaya a la carpeta VirtualBox donde existe VBoxManage.exe, abra cmd en esta ruta y ejecute esto:
5) Y ahora todo debería funcionar mágicamente. La próxima vez que abra el sistema operativo invitado, ejecutará el disco de verificación, DEJAR QUE SE EJECUTE, encontrará "archivos huérfanos" que parecían archivos del sistema.
fuente