As versões recentes do libvirt / kvm suportam a opção discard vdisc (somente para o tipo SCSI vdisk). Com esta opção ativada, você pode emitir fstrim / no painel de arquivos convidado e os blocos não utilizados serão imediatamente descartados pela imagem de host vm, compactando / reduzindo-a através de perfuração.
Veja aqui (seção de drivers, procure por 'descarte') e aqui para mais informações.
Se você não puder usar o método de aparar / descartar, poderá continuar usando seu método de zeragem atual ( dd de /dev/zero ), com uma diferença: emita dois dd passes , cada um com pouco mais de metade do espaço livre em disco, espaçado por um comando fsync; rm BIG.txt . Isso deve ser suficiente para recuperar quase todo o espaço livre, sem preencher tudo de uma vez.