¿Cómo puedo compactar el archivo VHD con Ubuntu?

9

Yo uso Windows Server 2008r2 con el rol Hyper-V. El sistema invitado es Ubuntu 12.04 LTC. Está situado en el disco duro virtual dinámico.

Quiero compactar este VHD (el tamaño real es de 50 GB, 360 GB en el disco). Pero no puedo hacer esto, porque el sistema de archivos de Ubuntu no es NTFS. ¿Qué necesito (gparted, sdelete, ...) para resolver este problema?

El principal problema es que el sistema de archivos no es NTFS, sino ext4.

La respuesta:

1) Descargar systemrescuecd

http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/3.8.1/systemrescuecd-x86-3.8.1.iso/download

2) Agregue este .iso a la búsqueda del sistema operativo Ubuntu

3) Inicie esta máquina virtual

4) Use zerofree

zerofree /dev/sda1

5) Apague esta máquina virtual

6) Use el administrador de Hyper-V (Editar -> desfragmentación)

Este disco duro era de 360 ​​Gb. Ahora 70 GB.

AmShegar
fuente
1
Si desea responder a su propia pregunta, publique una respuesta , no una edición de la pregunta en sí.
Massimo
considere fstrimen 2019, especialmente para ext4 bajo LVM superuser.com/questions/1491437/…
Alec Istomin

Respuestas:

6

Apague su VM, haga una copia de seguridad del VHD y ejecute otra máquina virtual (uso SystemRescueCD porque es pequeña y rápida) que tiene la partición ext4 disponible, es decir, un HD para SysRescue (¡pero no lo monte!). Desde la VM SysRescue, ejecute ' zerofree ' en la partición ext4, apague esa VM y luego use su sitio web de administración para compactar el VHD.

rickhg12hs
fuente
Comienzo a hacerlo (descargue SystemRescueCD, luego zerofree / dev / sda1), pero no sé si puedo compactar este VHD en Windows (después de todo el espacio libre será nulo)
AmShegar
1
Prueba el Administrador de Hyper-V .
rickhg12hs
3

Puedo confirmar: zerofree está trabajando para compactar archivos de disco virtual

PERO: no necesita usar ningún CD de rescate ni montar el VHDX en otra máquina virtual:

sudo apt-get install zerofree

Arranque en modo seguro, luego ejecute:

zerofree /dev/sda1

Después de eso, tenemos que comenzar la optimización para el archivo del disco virtual. En el servidor que aloja el archivo VHDX, cree el siguiente archivo ShrinkVhdx.ps1:

[CmdletBinding()]
Param(
    $VHDFiles
)

    #Find the disks
    foreach($VHD in $VHDFiles){
        Write-Verbose "Working on $VHD, please wait"
        Write-Verbose "Current size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB"
        Mount-VHD -Path $VHD -NoDriveLetter -ReadOnly
        Optimize-VHD -Path $VHD -Mode Full
        Write-Verbose "Optimize size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB"
        Dismount-VHD -Path $VHD
        Write-Verbose ""
        }

Y ahora ejecute el archivo y disfrute del espacio en disco liberado :-)

ShrinkVhdx.ps1 .\hdd1.vhdx
Jochen
fuente
Esto depende del sistema de archivos si es XFS que no tienes suerte con zerofree.
Brad
1

El proceso parece ser

  • Copia de seguridad de su archivo VHD actual.
  • Use el Administrador de instantáneas para eliminar / fusionar cualquier instantánea.
  • Cero llenar el espacio en disco no utilizado

verbigracia

sudo apt-get install secure-delete 
sudo sfill -llz .

Esto crea un archivo llamado oooooooo.ooolleno de 0s. Supongo que debe repetir el comando sfill en todas las particiones.

Tenga en cuenta que esto tampoco es rápido, tardará horas, si no días, en completarse.

  • Compacto
  • Lucro
usuario9517
fuente
gracias, pero no tengo internet en la máquina con hyper-v y vhd con linux. Así que no puedo hacer "sudo apt-get install secure-delete"
AmShegar
0

Intenté iniciar Systemrescuecd en una máquina de segunda generación. Pero no funcionó, así que creé una nueva máquina de primera generación y le agregué el VHDX. systemrescuecd comenzó. No hice ninguna operación. Se eliminó la máquina de primera generación y volvió a colocar el VHDX en la máquina original. Entonces Ubuntu no se inició en absoluto. Sólo Grub-menu.

Vea mi publicación aquí: Hyper-V Ubuntu vhdx scsi ide

Así que tenga en cuenta esto, y haga una copia de seguridad (no lo hice esta vez) ...

Sam
fuente