Eu tenho uma LUKS
partição /dev/sda1
que eu luksOpen com --allow-discards
:
cryptsetup --allow-discards luksOpen /dev/sda1 root
Em seguida, montei o ext4
sistema de arquivos com a discard
opção:
grep /dev/mapper/root /proc/mounts
/dev/mapper/root / ext4 ro,relatime,block_validity,discard,delalloc,barrier,user_xattr,acl 0 0
Depois aparei o espaço livre na partição montada:
fstrim -v /
com df
, vejo que /
tem 80% de espaço livre. Isso significa que /dev/sda1
80% do disco são zeros binários.
Se eu clonar a imagem com cat
cat /dev/sda1 > sda1.img
e comprima a imagem xz
, eu esperaria que todos os zeros no disco fossem compactados. Como os 20% dos dados no disco são criptografados, eles devem parecer aleatórios e não compactáveis. Portanto, a imagem compactada em xz deve ser aprox. 20% do tamanho bruto.
No entanto, a imagem compactada xz resultante é aproximadamente do mesmo tamanho que o original bruto.
Meu raciocínio está correto?
Por que minha teoria não se traduz em prática?
dmsetup table | grep allow_discards
Respostas:
Sua lógica não está incorreta. Mas isso só é válido se algumas condições forem atendidas.
O comando TRIM , conforme especificado no conjunto de comandos ATA , pode ou não zerar os setores nos quais é emitido.
Na verdade, o padrão se concentra em quais dados devem ser retornados após a emissão do TRIM 1 :
Assim, o que o seu dispositivo retorna depois
fstrim
depende dos recursos implementados. A menos que ele suporte RZAT, a suposição de que os dados lidos de um dispositivo aparado serão apenas zeros não é válida.Você pode usar
hdparm
para verificar isso:Eu realizei alguns testes usando dois SSDs
sda
esdb
. Mesmo fabricante, modelos diferentes, com conformidade ATA diferente:Os dois SSDs têm suporte diferente para TRIM:
Posso confirmar que, após a emissão
fstrim
, a unidade que suporta "ZEROs de leitura determinística após TRIM" (RZAT) parece realmente zerar a partição em questão quase inteiramente. Por outro lado, a outra unidade parece ter zerado (ou substituído por algum padrão altamente compressível) apenas uma parte menor do espaço liberado.1 Fonte online: INCITS 529: Tecnologia da informação - Conjunto de comandos ATA / ATAPI - 4 (ACS-4)
Nota sobre o teste:
Conforme indicado por frostschutz nos comentários, uma leitura posterior
fstrim
pode retornar dados do cache do sistema operacional e não do dispositivo aparado. É, por exemplo, o que aconteceu nesta pergunta .(Eu também apontaria essa resposta para a mesma pergunta, para um método alternativo para testar o TRIM).
Entre
fstrim
e uma leitura subsequente, pode ser necessário descartar o cache, por exemplo, com:Dependendo do tamanho da partição com a qual você está reproduzindo, não soltar o cache pode ser suficiente para que seus testes falhem.
Nota sobre sua configuração:
A
discard
opção de montagem ativa o TRIM contínuo, ou seja, quando os arquivos são excluídos. Não é exigido porfstrim
. De fato, o TRIM sob demanda e o TRIM contínuo são duas maneiras distintas de gerenciar as operações do TRIM. Para mais informações, aponto para a unidade de estado sólido no Arch Linux Wiki, que possui uma cobertura detalhada desse assunto.fonte
O SSD possui uma camada de criptografia de hardware integrada? Se houver um, os blocos TRIMmed podem ser todos os zeros (ou possivelmente todos) no nível de hardware bruto, mas, como o computador os vê através da camada de criptografia, eles aparecerão como uma tagarelice pseudo-aleatória depois de passar o -zeroes bloco bruto através do processo de descriptografia.
Essa camada de criptografia de hardware teria algumas vantagens:
fonte
Descartar não é o mesmo que Zero.
Se você quiser zerar com o cryptsetup, poderá reduzir o fs, o bloco de criptografia e o espaço de volume não utilizado.
Se você deseja saber se o acabamento funcionou ao fazer um teste de velocidade, deve ser um indicador após uso pesado.
https://linux.die.net/man/8/fstrim https://en.m.wikipedia.org/wiki/Trim_(computing)
fonte
df
relatar espaço livre não implica espaço zero.trim
informa ao dispositivo de armazenamento que os blocos não são usados. Eu não acho que isso os zere.fonte