Como posso compactar o arquivo VHD com o Ubuntu?


9

Eu uso o Windows Server 2008r2 com a função Hyper-V. O sistema convidado é o Ubuntu 12.04 LTC. Ele está situado no disco rígido virtual dinâmico.

Quero compactar esse VHD (o tamanho real é de 50 GB, 360 GB no disco). Mas não posso fazer isso, porque o sistema de arquivos Ubuntu não é NTFS. O que eu preciso (gparted, sdelete, ...) para resolver esse problema?

O principal problema é que o sistema de arquivos não é NTFS, mas ext4.

A resposta:

1) Faça o download do systemrescuecd

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

2) Adicione este .iso à missão OS Ubuntu

3) Inicie esta máquina virtual

4) Use zerofree

zerofree /dev/sda1

5) Desligue esta máquina virtual

6) Use o gerenciador do Hyper-V (Editar -> desfragmentação)

Este vhd era de 360 ​​Gb. Agora 70 GB.


1
Se você quiser responder sua própria pergunta, poste uma resposta , não uma edição da pergunta em si.
Massimo

considere fstrimem 2019, especialmente para ext4 sob LVM superuser.com/questions/1491437/…
Alec Istomin

Respostas:


6

Desligue sua VM, faça backup do VHD e execute outra máquina virtual (eu uso o SystemRescueCD, pois é pequeno e rápido) que possui a partição ext4 disponível, como um HD para o SysRescue (mas não a monte!). Na VM do SysRescue, execute ' zerofree ' na partição ext4, desligue a VM e use o site de administração para compactar o VHD.


Eu começo fazê-lo (download SystemRescueCD, então zerofree / dev / sda1), mas eu não sei que posso compactar esta VHD no Windows (depois de todo o espaço livre será null)
AmShegar

1
Experimente o Gerenciador Hyper-V .
rickhg12hs

3

Posso confirmar: o zerofree está trabalhando para compactar arquivos de disco virtual

MAS: você não precisa usar nenhum CD de resgate ou montar o VHDX em outra máquina virtual:

sudo apt-get install zerofree

Inicialize no modo de segurança e execute:

zerofree /dev/sda1

Depois disso, precisamos iniciar a otimização para o arquivo do disco virtual. No servidor que hospeda o arquivo VHDX, crie o seguinte arquivo 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 ""
        }

E agora execute o arquivo e aproveite o espaço em disco liberado :-)

ShrinkVhdx.ps1 .\hdd1.vhdx

Isso depende do sistema de arquivos, se for XFS, você não poderá usar o zerofree.
Brad

1

O processo parece ser

  • Faça backup do seu arquivo VHD atual.
  • Use o gerenciador de snapshots para excluir / mesclar todos os snapshots.
  • Zero preencher o espaço em disco não utilizado

viz

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

Isso cria um arquivo chamado oooooooo.ooopreenchido com 0s. Você deve repetir o comando sfill em todas as partições, eu acho.

Observe que isso também não é rápido; levará horas, se não dias, para ser concluído.

  • Compactar
  • Lucro

obrigado, mas eu não tenho a internet na máquina com hyper-v e vhd com linux. Então, eu não posso fazer "sudo apt-get install seguro-delete"
AmShegar


0

Eu tentei iniciar o Systemrescuecd em uma máquina de segunda geração. Mas não funcionou, então criei uma nova máquina de primeira geração e adicionei o VHDX a ela. systemrescuecd iniciado. Eu não fiz nenhuma operação. Removida a máquina de 1ª geração e coloque o VHDX de volta na máquina original. Então o Ubuntu não foi iniciado. Somente menu Grub.

Veja meu post aqui: Hyper-V Ubuntu vhdx scsi ide

Portanto, esteja ciente disso e faça backup (não fiz desta vez) ...


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.