Este post é, de certa forma, uma continuação do post de ontem.

Depois que resolvi o problema do desfragmentador, descobri que ainda assim não conseguia diminuir meu VHD. Não importava o que eu fizesse, o tamanho continua em 127 GB.

Até que eu descobri a solução para o problema.

Mesmo desfragmentando o disco (rodando o Defrag dentro da VM), desligando a VM e usando o comando Compact do Hyper-V, não adiantava. O tamanho continuava o mesmo.

A solução é esquecer o Hyper-V e ir direto a quem resolve: a linha de comando Smile

Passo 1: Otimizar o disco virtual

Abra um prompt elevado e digite:

diskpart

select vdisk file="c:\seu\arquivo.vhd"
attach vdisk
list volume

Neste ponto, o DISKPART irá listar os volumes montados em seu computador. O VHD que você acabou de montar deve ser o último volume. Verifique no seu caso qual a letra atribuída ao seu VHD e anote-a.

Disco virtual montado no host. Note que neste exemplo o volume é o G:
Disco virtual montado no host. Note que neste exemplo o volume é o G:

Agora você precisa desfragmentar o disco. Primeiramente digite exit para sair do DISKPART. A seguir, digite o seguinte comando:

defrag G: /o /v

Onde G: corresponde ao drive que você anotou na etapa anterior.

Passo 2: Compactar o disco virtual

Agora vamos terminar o processo no DISKPART. Basicamente o que vamos fazer é:

  • Desmontar o VHD (que está em modo read-write);
  • Remontar o VHD em modo read-only;
  • Compactar o VHD;
  • Desmontar o VHD.

De volta ao nosso prompt elevado, digite:

diskpart

detach disk

select vdisk file="c:\seu\arquivo.vhd"
attach vdisk readonly
compact vdisk
exit

Presto! Agora nosso VHD, que antes se recusava a sair dos 127 GB, chegou no tamanho “correto”:

image

Um abraço,
Igor

(Cross-post de http://www.tshooter.com.br/2016/08/25/como-diminuir-o-tamanho-de-um-arquivo-vhd-vhdx/)