ATA TRIM com LUKS/LVM

Em volumes criptografados com LUKS, você precisa dizer para o subsistema dm-crypt do kernel (a partir do 3.1) para deixar passar os comandos TRIM para o dispositivo. Senão, terá:

# fstrim /
fstrim: /: FITRIM ioctl failed: Operação não suportada

Adicione a opção allow-discards (na quarta coluna) na linha referente ao volume em /etc/crypttab (man crypttab).

luks-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none allow-discards

(a partir do systemd 207, a opção discard passou a ser suportada como sinônimo de allow-discards)

Depois, é necessário reconstruir o initramfs. No Fedora, rode:

# dracut -f

Quem usa LVM/RAID, não precisa fazer nada. Os dispositivos virtuais /dev/mapper/<nome> e /dev/md/<nome>, desde os kernels 2.6.36 e 3.7, respectivamente, repassam o comando TRIM para o disco. Com LVM, existe a opção issue_discards=0/1 em /etc/lvm/lvm.conf (padrão é 0) que habilita ou não se as ferramentas lvremove, lvresize, lvreduce, etc, enviarão TRIM para o dispositivo de armazenamento quando os volumes forem manipulados. Isso no nível do dispositivo de bloco, desconsiderando o sistema de arquivos que estiver dentro.

Feito isso, escolha entre montar o sistema de arquivos com a opção discard (/etc/fstab) ou rodar o fstrim manualmente, como comentado no post Suporte ao comando ATA TRIM no Linux. É melhor rodar o fstrim enquanto NCQ TRIM não se popularizar.

Para automatizar a execução, habilite fstrim.timer, disponível desde a versão 2.25 da suíte util-linux. Rodará fstrim -a uma vez por semana.

# systemctl enable --now fstrim.timer

Este post baseia-se em distribuições que usem o systemd (inclusive no initramfs).

Comentários