fstrim não parece aparar uma partição que usa lvm e dm-crypt

7

Eu tento configurar o Fedora 25 com o dm-crypt e o LVM, mas luto para fazer o TRIM funcionar.

$ sudo fstrim -av                                                                            
/boot: 28.6 MiB (30003200 bytes) trimmed
/: 56.5 GiB (60672704512 bytes) trimmed

$ sudo fstrim -av                                                                            
/boot: 0 B (0 bytes) trimmed
/: 56.5 GiB (60671877120 bytes) trimmed

Como você pode ver na saída acima, executar fstrim repetidamente funciona em ext4 /boot não criptografado, mas parece não ter efeito em / (que está no mesmo disco) .

A configuração é SSD - > dm-crypt - > LVM - > XFS

$ lsblk -D                                                                                                                                                                                     
NAME                                          DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda                                                  0      512B       2G         0
├─sda2                                               0      512B       2G         0
│ └─luks-dd5ce54a-34c9-540c-a4cf-2a712b8a3a5e        0      512B       2G         0
│   └─fedora-root                                    0      512B       2G         0
└─sda1                                               0      512B       2G         0

De acordo com esta pergunta, DISC-ZERO == 0 não deve ser o problema

# cat /etc/crypttab
luks-dd... UUID=dd.. none discard

# cat /etc/lvm/lvm.conf
devices {
...
     issue_discards = 1
...
}

Também adicionei a opção rd.luks.options=discard a /etc/default/grub e atualizei o initramfs e o grub.cfg:

# grub2-mkconfig -o /boot/grub2/grub.cfg
# dracut -f

A opção de descarte propaga-se corretamente:

# dmsetup table luks-d...                                                                                                                        
0 233385984 crypt aes-xts-plain64 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 8:2 4096 1 allow_discards

Eu tentei variações da configuração acima que podem ser encontradas na Web, mas isso parece seguir as páginas de manual. O que eu não tentei era usar um sistema de arquivos diferente, mas o XFS deveria ser suportado.

    
por NefariousOctopus 20.02.2017 / 00:38

1 resposta

4

Acho que seu teste não corresponde à documentação ( man fstrim ).

-v, --verbose

Verbose execution. With this option fstrim will output the number of bytes passed from the filesystem down the block stack to the device for potential discard. This number is a maximum discard amount from the storage device's perspective, because FITRIM ioctl called repeated will keep sending the same sectors for discard repeatedly.

fstrim will report the same potential discard bytes each time, but only sectors which had been written to between the discards would actually be discarded by the storage device. Further, the kernel block layer reserves the right to adjust the discard ranges to fit raid stripe geometry, non-trim capable devices in a LVM setup, etc. These reductions would not be reflected in fstrim_range.len (the --length option).

Sugiro procurar pedidos de descarte usando blktrace , ou seja, ao mesmo tempo em que você executa o fstrim. Espero que ele mostre se as solicitações de descarte estão sendo enviadas para o dispositivo de bloco na parte inferior da pilha. Você pode comparar os resultados entre sda1 e sda2 (após uma inicialização recente, para evitar o comportamento não documentado em sda1).

btrace -a discard $DEV
    
por 28.02.2017 / 00:18