Convidado Debian no host do Windows usando o descarte / TRIM.
Esta não é uma resposta direta em si, já que estou abordando o problema, não a questão. Em vez de compactar periodicamente a imagem, essa solução usa o descarte para remover automaticamente os blocos não utilizados da imagem de disco da VM do host.
Esta solução requer um sistema de arquivos guest que suporte o TRIM contínuo.
O wiki do Arch Linux tem uma lista de sistemas de arquivos que suportam as operações do TRIM .
FDE e cryptoroot não são especificamente abordados, pois há preocupações de segurança e nenhuma das outras soluções para essa questão permitiria a compactação também. O wiki do Arch Linux tem informações sobre dispositivos TRIM e dm-crypt .
Em teoria, isso funcionará para todos os convidados do Linux em hosts VBox usando o armazenamento VDI.
Configuração do host
Com o VBox encerrado e nenhuma VM em execução, adicione o suporte ao descarte aos seus discos definindo discard
e nonrotational
para cada disco no arquivo de configuração da VM. No momento, discard
não está na GUI, mas nonrotational
está exposto como a caixa de seleção "Solid State Drive". (ref: fóruns do vbox, descarte o suporte )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Inicialize a VM e verifique se o suporte a TRIM está ativado:
sudo hdparm -I /dev/sda | grep TRIM
Configuração de convidado
Se o LVM estiver em uso, altere a configuração de descarte em /etc/lvm/lvm.conf
. (ref: wiki do debian, exemplo do lvm.conf )
devices {
...
issue_discards = 1
}
Em fstab, adicione a opção discard
aos sistemas de arquivos que você deseja descartar automaticamente (ref: debian wiki exemplo de 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
Ajuste manualmente os 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 em fstab
, isso poderia ser feito em um cron semanal. (O cron semanal é recomendado para SSDs físicos que podem ter suporte questionável para TRIM, mas isso não é relevante aqui, pois os SSDs subjacentes são manipulados pelo sistema operacional host. Consulte: aviso de corte ssd ).
fstrim /
fstrim /build
Neste ponto, o tamanho dos sistemas de arquivos dentro da VM e o tamanho das imagens da VM devem ser muito próximos em valor.
Testado com:
- Guest1: 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