Crie um novo VHD, coloque um novo sistema de arquivos e copie os arquivos de um para o outro. Isso criará a representação mais compacta.
E, sim, é claro que isso pode ser feito com o PowerShell. Veja "new-vhd" e "mount-vhd."
Eu já vi (e tentei) muitas maneiras de esfolar esse gato, mas nenhum deles é tão eficaz quanto eu pensava e requeria várias etapas manuais. Aqui está o meu cenário:
1) Eu instalei um sistema operacional em um disco rígido virtual dinâmico via Hyper-V ou Boot to VHD no Windows Server 2012 ou Windows 8, digamos que ele tenha ~ 30Gb. 2) Eu uso o VHD, adiciono muitos arquivos e os removo. Isso expande o VHD para dizer, ~ 100Gb.
Eu quero uma operação suave, simples e confiável que não requeira desfragmentação prévia (a menos que seja uma operação de uma etapa), que recuperará todo o espaço livre na VM.
Minha experiência em tempos passados é que desfragmentar, talvez zerar e depois compactar um VHD não recupera todo o espaço e é uma operação bastante confusa.
Como uma opção final, posso talvez 'clonar' meu disco dinâmico existente (com o espaço liberado) para um novo VHD Dinâmico?
Eu ficaria ainda mais satisfeito se todo o processo pudesse ser roteirizado via PowerShell.
Crie um novo VHD, coloque um novo sistema de arquivos e copie os arquivos de um para o outro. Isso criará a representação mais compacta.
E, sim, é claro que isso pode ser feito com o PowerShell. Veja "new-vhd" e "mount-vhd."