Convidado Debian no host do Windows usando descarte / TRIM.
Esta não é uma resposta direta, pois estou abordando o problema, não a pergunta. Em vez de compactar periodicamente a imagem, essa solução usa o descarte para remover automaticamente blocos não utilizados na imagem de disco da VM do host.
Esta solução requer um sistema de arquivos convidado que suporte o TRIM contínuo. O wiki do Arch Linux possui uma lista de sistemas de arquivos que suportam operações TRIM .
O FDE e o cryptoroot especificamente não são cobertos, pois existem preocupações com a segurança e nenhuma das outras soluções para essa pergunta permitiria a compactação. O wiki do Arch Linux possui informações sobre dispositivos TRIM e dm-crypt .
Em teoria, isso funcionará para todos os convidados do Linux nos hosts VBox usando armazenamento VDI.
Configuração do host
Com o VBox encerrado e sem VMs em execução, adicione suporte de descarte aos discos, definindo ambos discarde nonrotationalpara cada disco no arquivo de configuração da VM. No momento, discardnão está na GUI, mas nonrotationalé exposto como a caixa de seleção "Solid-state Drive". (ref: fóruns vbox, suporte para descarte )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Inicialize a VM e verifique se o suporte ao TRIM está ativado:
sudo hdparm -I /dev/sda | grep TRIM
Configuração do convidado
Se o LVM estiver em uso, altere a configuração de descarte em /etc/lvm/lvm.conf. (ref: wiki debian, exemplo lvm.conf )
devices {
...
issue_discards = 1
}
No fstab, adicione a discardopção aos sistemas de arquivos que você deseja descartar automaticamente (ref: debian wiki, exemplo do fstab )
UUID=8db6787f-1e82-42d8-b39f-8b7491a0523c / ext4 discard,errors=remount-ro 0 1
UUID=70bfca92-8454-4777-9d87-a7face32b7e7 /build ext4 discard,errors=remount-ro,noatime 0 1
Remonte os sistemas de arquivos para que eles escolham suas novas opções.
sudo mount -o remount /
sudo mount -o remount /build
Corte manualmente blocos livres agora com fstrim. fstrimusa o sistema de arquivos montado, não o dispositivo de bloco que o suporta. Em vez de definir o descarte contínuo fstab, isso pode ser feito em um cron semanal. (O cron semanalmente é recomendado para SSDs físicas que podem ter suporte questionável para TRIM, mas isso não é relevante aqui desde SSDs subjacentes são tratados pelo sistema operacional hospedeiro ver:. Aviso guarnição ssd ).
fstrim /
fstrim /build
Nesse ponto, o tamanho dos sistemas de arquivos dentro da VM e o tamanho das imagens da VM devem ter um valor bastante próximo.
Testado com:
- Convidado1: Debian 8.7, kernel: linux 4.8 grsec de backports, sistema de arquivos: ext4
- Guest2: Debian 9 RC2, kernel: linux 4.9, sistema de arquivos: ext4
- Host1: VBox 5.1.14, Win7, imagem fmt: VDI
- Host2: VBox 5.1.14, Win8.1, imagem fmt: VDI