TRIM em Servidores Linux: Guia Completo para NVMe, SSD e RAID

1. Conceito

TRIM em servidores Linux. O TRIM é um comando que permite ao SSD/NVMe saber quais blocos de dados não são mais usados, permitindo que ele os apague internamente. Isso evita degradação de desempenho em longo prazo.


2. Verificando suporte do SSD/NVMe

NVMe

lsblk -D
cat /sys/block/nvme0n1/queue/discard_max_bytes
  • discard_max_bytes > 0 → TRIM suportado.

SATA SSD

sudo hdparm -I /dev/sda | grep TRIM

3. Testando TRIM

  1. Crie arquivo grande:
dd if=/dev/zero of=/mnt/ssd/testfile bs=1G count=1
  1. Delete o arquivo:
rm /mnt/ssd/testfile
  1. Execute TRIM manualmente:
sudo fstrim -v /mnt/ssd
  • Deve retornar algo como: Discards 1073741824 bytes.

Se não descartar → TRIM não está ativo ou não suportado.


4. Modos de TRIM

4.1 TRIM Online (discard)

  • Ativado via mount:
sudo mount -o discard /dev/nvme0n1p1 /mnt/ssd
  • Prós: imediato, sem necessidade de agendamento.
  • Contras: impacto de performance em servidores com alta gravação.
  • Uso recomendado: baixa carga, não crítico para performance.

4.2 TRIM Agendado (fstrim)

  • Executa TRIM periodicamente (diário ou semanal).
  • Comando manual:
sudo fstrim -v /
  • Configuração automática (systemd timer):
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
systemctl status fstrim.timer
  • Recomendado para servidores de produção: segura a performance sem impacto de escrita.

5. TRIM em RAID

  • Nem todos os controladores RAID repassam TRIM.
  • Antes de habilitar, verifique:
sudo mdadm --detail /dev/md0
  • Se usar hardware RAID sem suporte TRIM → use apenas fstrim agendado (ou nada).
  • Soft RAID (Linux MD) normalmente suporta TRIM via fstrim.

6. TRIM e criptografia

  • Com LUKS/dm-crypt, TRIM não é habilitado por padrão.
  • Para habilitar:
sudo cryptsetup luksOpen --allow-discards /dev/sda1 cryptssd
  • Fica atento: isso permite que blocos vazios sejam descartados, impactando a possibilidade de recuperação forense.

7. Dicas para produção

  1. Sempre use fstrim agendado em servidores críticos.
  2. Frequência recomendada: semanal, exceto ambientes com altíssima rotatividade de dados (diário).
  3. Evite discard em montagem direta de bancos de dados com alta escrita, prefira TRIM agendado.
  4. Monitore o TRIM:
sudo fstrim -v /mnt/ssd
  1. Não dependa apenas do TRIM para limpeza de dados sensíveis — combine com ferramentas de segurança ou criptografia.

8. Exemplo de configuração de fstrim semanal (systemd)

Crie um timer customizado, caso queira mais controle:

/etc/systemd/system/fstrim-weekly.service

[Unit]
Description=TRIM SSDs semanal

[Service]
Type=oneshot
ExecStart=/usr/sbin/fstrim -av

/etc/systemd/system/fstrim-weekly.timer

[Unit]
Description=Executa TRIM semanalmente

[Timer]
OnCalendar=Sun 03:00
Persistent=true

[Install]
WantedBy=timers.target

Ative:

sudo systemctl daemon-reload
sudo systemctl enable --now fstrim-weekly.timer

9. Resumo prático

ModoPerformanceFrequênciaProdução
discardImpacto leveimediatobaixa carga
fstrim timerSem impactosemanal/diáriorecomendado
RAID sem suporte TRIMsomente fstrimobrigatório
LUKSTRIM opcionalagendadocuidado com segurança

FAQ

TRIM é obrigatório em servidores Linux?

Não é obrigatório, mas é altamente recomendado para SSD/NVMe em produção para manter performance consistente.

Posso usar discard em bancos de dados de alta carga?

Não é recomendado. Prefira TRIM agendado (fstrim) para evitar impacto em performance durante gravações intensas.

TRIM funciona em RAID?

Depende do tipo de RAID. Soft RAID do Linux geralmente funciona com fstrim, mas hardware RAID pode não suportar TRIM.

TRIM apaga dados importantes?

Não. Ele só informa ao SSD que blocos não usados podem ser apagados. Em sistemas criptografados, o comando precisa ser habilitado explicitamente.

Qual a frequência ideal do fstrim em servidores?

Semanal é suficiente na maioria dos casos, diário em sistemas com alta rotatividade de dados.