ssd sandisk memory disk

Como ativar o TRIM no Linux para sua unidade SSD

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 e, no Ubuntu 14.04 LTS Trusty Tahr, ele é padrão do sistema — ou seja, você não precisa fazer nada.
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.
sandisk ssd issd 128 gbEu 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.
O Ubuntu 14.04 LTS, 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 você 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

No Linux, há inúmeras outras formas de obter informações sobre o seu drive. Se quiser, sinta-se à vontade para dar sua contribuição nos comentários.

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.
O desenvolvedor alerta para o fato de que ele só tem suporte a drives Intel e Samsung.
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.

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 oficial 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, no Ubuntu 14.04, ele 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

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia. Fã de séries, como "Rick and Morty" e "BoJack Horseman". Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *