O TRIM é um recurso fundamental para quem tem uma unidade SSD no seu sistema e deseja garantir o máximo de eficiência deste tipo de dispositivo.
O recurso já vem incluído nas versões do kernel Linux superiores a 2.6.33. No Ubuntu, a partir da versão 14.04 LTS Trusty Tahr, ele já é padrão do sistema.
Contudo, se você deseja verificar se o recurso está em funcionamento ou se você usa outro sabor do Linux, vou mostrar como dominar este recurso neste artigo.
Já expliquei anteriormente o principal motivo de um drive SSD apresentar problemas acentuados de lentidão — o que pode comprometer o desempenho de todo o sistema.
O que é o TRIM
Quando um arquivo é removido de uma mídia, quase todos os sistemas operacionais removem as referências a ele e não os blocos de dados do arquivo na mídia.
Para as unidades SSD, isto acaba por deixar blocos de dados supérfluos na mídia que, eventualmente precisarão ser sobrescritos.
O SSD TRIM é um função da interface SATA, que diz à interface SSD para esvaziar definitivamente os blocos sem uso.
O TRIM é um comando SATA que habilita o sistema operacional a informar à unidade SSD quais blocos de dados gravados não são mais necessários, como resultado de terem sido apagados — com um “delete” ou com um “format”.
O resultado da execução do TRIM é que o dispositivo de estado sólido ganha mais espaço livre, o que melhora a performance de sua escrita.
O comando TRIM precisa ser suportado pela controladora SSD — caso contrário, os LBAs (endereçamento lógico de blocos ou Logical Block Address) que receberem o comando não irão ser marcados como inválidos e o drive irá continuar a coleta de lixo de dados, como se ainda fosse válidos.
Possíveis problemas
Apenas quando o sistema operacional gravar novos dados nestes LBAs, é que a unidade SSD irá saber que eles são inválidos — e aí, o problema, descrito aqui, já estará criado: o processo de gravação se torna progressivamente mais lento.
Se a sua controladora não tem suporte ao TRIM, há 2 formas de solucionar o problema — se disponível, fazer atualização do firmware da controladora SSD. Se não, executar periodicamente um aplicativo utilitário, que realize o TRIM na unidade.
No Linux, o comando que realiza o TRIM é o fstrim
.
Ainda que a controladora da unidade SSD suporte o comando TRIM, isto não significa que ela voltará à sua velocidade máxima imediatamente.
O espaço a ser liberado pelo TRIM está espalhado aleatoriamente na unidade — serão necessárias algumas execuções até que o processo se consolide e a performance seja restabelecida.
Limitações do TRIM
Há algumas limitações, mais ou menos, óbvias.
Se você tem um espaço total de 100 Gb no seu SSD e já ocupou 95 Gb — O TRIM não vai lhe adicionar espaço significativo ao drive.
Eu sugiro que você leia este texto, para entender por que.
Unidades SSD mais antigas podem não ser muito eficientes com recursos de coletar lixo ou suporte ao TRIM.
A Kingston oferece, para as suas unidades mais antigas alguns aplicativos que melhoram a performance dos drives SSD.
As versões atuais do Linux, tem suporte automático a unidades SSD Intel e Samsung.
Mas é possível executar o comando TRIM em unidades SSD de outras marcas também — veja, no próximo tópico como fazer isto.
Como obter informações sobre o seu drive SSD
Há várias formas de obter informações sobre o seu dispositivo.
Se quiser se certificar de que ele é um SSD, use o comando SMARTCTL:
sudo smartctl -a /dev/sdb | grep -i rotation
Rotation Rate: Solid State Device
Para saber a marca, tente isto:
sudo smartctl -a /dev/sdb | grep -i device
Repare na linha em destaque (no meu resultado):
Device Model: SanDisk SSD i100 24GB LU WWN Device Id: 5 001b44 7bae1fb91 Rotation Rate: Solid State Device Device is: Not in smartctl database [for details use: -P showall] SMART support is: Available - device has SMART capability.
O comando LSHW, também pode dar informações mais detalhadas sobre o seu sistema:
sudo lshw | less
Com um pouco mais de pesquisa, você vai descobrir que, no Linux, há inúmeras outras formas de obter informações sobre o seu drive.
Como executar o TRIM no Linux
O comando fstrim-all
é um frontend pro fstrim
. O primeiro, executa o TRIM em todos os dispositivos SSD presentes no seu sistema — o segundo precisa que você indique o diretório em que você quer que o TRIM seja aplicado.
É necessário que os dispositivos estejam montados, para que o fstrim funcione.
Veja como rodar o fstrim em um diretório local, montado em uma unidade de estado sólido:
sudo fstrim -v /usr/
Se tudo der certo, você vai obter uma mensagem semelhante a esta:
/usr/: 20903276544 bytes were trimmed
Com o uso da opção ‘-v’ o fstrim vai exibir o número de bytes fornecidos pelo sistema de arquivos para descarte.
Este número é o máximo a ser descartado, na perspectiva do dispositivo de armazenamento.
Se você repetir o comando, em seguida, obterá o mesmo número.
Acontece que o fstrim irá mostrar a mesma quantidade de bytes, em potencial, a ser descartada no dispositivo. Este valor ainda poderá sofrer ajustes pelo kernel, mais a frente, antes que o TRIM seja efetivamente aplicado.
Se quiser, use o fstrim-all — o aplicativo detecta sozinho quais unidades são SSD.
Você pode usar a opção ‘–no-model’ para executá-lo em drives de outras marcas, mas pode sofrer perda de dados, ao rodar o fstrim em um sistema com alta carga de entrada/saída de dados — mantenha o seu backup atualizado e espere o sistema ficar ocioso, antes de realizar a operação.
sudo fstrim-all --no-model
O fstrim-all não costuma dar retorno de suas atividades ao usuário —. Lembre-se: estes aplicativos são feitos para rodar em silêncio, nos bastidores.
Veja como inserir o comando TRIM no cron, para que ele seja realizado periodicamente no seu sistema, sem verificar o modelo do seu drive:
sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim
Mais opções de uso do fstrim
O site Askubuntu recomenda 3 formas de uso do fstrim:
- manual — esta é a forma mais fácil e pode ser executada diretamente no terminal (como já foi visto, acima):
sudo fstrim /nome_diretório
Contudo, ela é desnecessária, se você estiver usando o comando agendado ou automatizado;
- agendada e
- automatizada (não recomendada nos sistemas atuais e, portanto, não será abordada neste texto).
Como agendar a execução do fstrim
Este é o método recomendado e, nas versões atuais do Ubuntu, já ocorre por padrão.
Ao agendar a tarefa, você não precisa mais se preocupar com o problema — o sistema se encarregará de cuidar dele periodicamente.
Veja como agendar uma tarefa para execução semanal do fstrim no cron:
sudo nano gedit /etc/cron.weekly/fstrim
No exemplo, acima, usei o nano. Se você preferir, pode usar outro editor de textos — mas precisa executá-lo com privilégios administrativos.
Copie e cole o seguinte código no arquivo:
#! /bin/sh # Este script pressupoe que o diretório /usr está em uma unidade SSD. # Altere o ponto de montagem de acordo com sua realidade # Voce pode adicionar outros pontos de montagem, separados por espacos. # Certifique-se de que todos os pontos de montagem estejam entre as aspas # simples, conforme o exemplo abaixo: # SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd' SSD_MOUNT_POINTS='/usr' for mount_point in $SSD_MOUNT_POINTS do fstrim $mount_point done
Agora, torne o script executável:
sudo chmod +x /etc/cron.weekly/fstrim
Agora, teste-o:
sudo /etc/cron.weekly/fstrim
Se você não obtiver mensagens de erro, o seu cron job estará funcionando bem.
Referências
en.wikipedia.org/wiki/Write_amplification
http://askubuntu.com/questions/18903/how-to-enable-trim
http://www.kingston.com/us/support/technical/products?model=sv300s3
4 replies on “Como ativar o TRIM no Linux para sua unidade SSD”
Artigo de 2014. Note que a Kingston hoje em dia (agosto de 2019) não recomenda fazer trim nem desfragmentar seus SSDs, porque o trim já é feito pelo firmware e defrag não serve para nada em SSDs. A empresa até afirma que trim e defrag diminuem a vida útil do drive. Creio que isso também se aplique a muitos outros fabricantes hoje em dia.
Fonte: https://www.kingston.com/br/ssd/ssd-faq
Muito obrigado pela sua contribuição.
Bom dia, Elias!
Minha dúvida é a seguinte, se eu usar o comando sudo fstrim -v /usr/ uma única vez, ele automaticamente vai ativar o temporizador para fazer a execução semanal? Ou seja, sem a necessidade de executar o comando manualmente?
Acredito que você precisa colocar o comando dentro do cron, para obter esta periodicidade.
Note que o manual do programa alerta para o fato de que a execução repetida (mais de uma vez por semana) do trim pode reduzir a vida útil de SSDs de baixa qualidade.