Sugiro usar um método de teste diferente. hdparm
é um pouco estranho, pois fornece endereços de dispositivo em vez de endereços de sistemas de arquivos, e não diz a qual dispositivo esses endereços estão relacionados (por exemplo, resolve partições, mas não alvos de mapeador de dispositivo, etc.). Muito mais fácil de usar algo que fique com os endereços do sistema de arquivos, é consistente (talvez com exceção de sistemas de arquivos não tradicionais como zfs / btrfs).
Crie um arquivo de teste: (não aleatório de propósito)
# yes | dd iflag=fullblock bs=1M count=1 of=trim.test
Obtenha o endereço, o tamanho e o tamanho do bloco: (o comando exato depende do filefrag
version)
# filefrag -s -v trim.test
File size of trim.test is 1048576 (256 blocks, blocksize 4096)
ext logical physical expected length flags
0 0 34048 256 eof
trim.test: 1 extent found
Obtenha o dispositivo e o ponto de montagem:
# df trim.test
/dev/mapper/something 32896880 11722824 20838512 37% /mount/point
Com essa configuração, você tem um arquivo trim.test
preenchido com yes
-pattern em /dev/mapper/something
no endereço 34048
com comprimento de 256
blocos de 4096
bytes.
A leitura direta do dispositivo deve produzir o yes
-pattern:
# dd bs=4096 skip=34048 count=256 if=/dev/mapper/something | hexdump -C
00000000 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a |y.y.y.y.y.y.y.y.|
*
00100000
Se o TRIM estiver ativado, esse padrão deverá mudar quando você excluir o arquivo. Observe que os caches também precisam ser descartados, caso contrário, dd
não relerá os dados do disco.
# rm trim.test
# sync
# fstrim -v /mount/point/ # when not using 'discard' mount option
# echo 1 > /proc/sys/vm/drop_caches
# dd bs=4096 skip=34048 count=256 if=/dev/mapper/something | hexdump -C
Na maioria dos SSD, isso resultaria em um padrão zero:
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00100000
Se a criptografia estiver envolvida, você verá um padrão aleatório:
00000000 1f c9 55 7d 07 15 00 d1 4a 1c 41 1a 43 84 15 c0 |..U}....J.A.C...|
00000010 24 35 37 fe 05 f7 43 93 1e f4 3c cc d8 83 44 ad |$57...C...<...D.|
00000020 46 80 c2 26 13 06 dc 20 7e 22 e4 94 21 7c 8b 2c |F..&... ~"..!|.,|
Isso porque, fisicamente aparado, a camada criptográfica lê zeros e descriptografa esses zeros para dados "aleatórios".
Se o yes
-pattern persistir, muito provavelmente nenhum recorte foi feito.