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 discard
e nonrotational
para cada disco no arquivo de configuração da VM. No momento, discard
nã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 discard
opçã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
. fstrim
usa 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