Como habilitar o TRIM?

189

Eu sei que o kernel do Linux suporta TRIM a partir da versão 2.6.33, então deve haver suporte ao TRIM no ubuntu.

O TRIM está ativado por padrão ou preciso alterar algumas configurações ou instalar software adicional para que ele funcione? Se sim, como?

Uli
fonte
Eu apenas segui estas instruções no webupd8, que oferece algumas opções realmente boas :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Tentei a opção de ajuste automático, conforme descrito acima em "Automatic TRIM", mas descobriu que a configuração de um cron diário funcionava muito melhor com a minha instalação.
bmbaker

Respostas:

197

Ubuntu 14.10 em diante

No Ubuntu 14.10 e 15.04, o TRIMming acontece automaticamente toda semana em todos os SSDs suportados pelo fstrim.

$ tail -n1 /etc/cron.weekly/fstrim 
/sbin/fstrim --all || true

Desde 15.04, o Ubuntu usa systemd e seu cronômetro ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

A partir do Ubuntu 14.04, o TRIM agendado é ativado por padrão para os SSDs Intel, SAMSUNG, OCZ, Patriot e Sandisk. Se você tiver outra marca, poderá desativar a verificação do fornecedor executando o seguinte comando:

sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim

(ou apenas edite o arquivo /etc/cron.weekly/fstrime adicione --no-model-check)

Ubuntu 13.10 e versões anteriores

Existem três maneiras de executar o TRIM, manual, programado e automático:

TRIM manual

No Ubuntu, isso pode ser realizado com fstrim:

sudo fstrim /

no entanto, não é necessário quando o TRIM agendado ou automático está ativado, conforme detalhado nas seções abaixo.

Nota: Para Ubuntu 11.04 e sistemas anteriores, fstrim não está disponível para que você tem que usar wiper.shfornecido com hdparmno/usr/share/doc/hdparm/contrib/wiper.sh.gz

TRIM agendado (recomendado)

Este é o método atualmente recomendado, e está planejado para ser ativado por padrão no Ubuntu 14.04 . Veja como ativá-lo manualmente em versões mais antigas do ubuntu (11.10 a 13.10):

Crie um arquivo de script de tarefa CRON semanal:

gksudo gedit /etc/cron.weekly/fstrim

Cole o seguinte código no arquivo, salve e feche o arquivo:

#! /bin/sh  

# By default we assume only / is on an SSD. 
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done

Observe que o acima pressupõe que apenas o seu sistema de arquivos raiz /está localizado em um SSD. Se você tiver mais pontos de montagem que residem em um ou mais SSDs, adicione-os SSD_MOUNT_POINTSconforme explicado no código.

Torne o script executável:

sudo chmod +x /etc/cron.weekly/fstrim

E finalmente teste:

sudo /etc/cron.weekly/fstrim

Se você não encontrar erros, seu trabalho cron deve estar funcionando bem.

TRIM automático (obsoleto, lento)

O TRIM automático é suportado desde o Ubuntu 10.10 (kernel 2.6.33) com o sistema de arquivos EXT4. No entanto, o envio de comandos TRIM para o SSD em tempo real - após cada exclusão - foi reconhecido para tornar a exclusão muito mais lenta do que o normal em algumas unidades. Portanto, um TRIM agendado semanalmente por meio de um trabalho cron (descrito acima) é recomendado.

Para habilitar TRIM automática em uma unidade ou partição, eles precisam ser montado com a discardopção fstab. Primeiro faça backup do seu fstab e abra-o para edição:

sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

Adicione discardà entrada de opções fstab (separada por vírgula) a unidade SSD ou cada partição.

UUID=00000000-0000-0000-0000-000000000000  /  ext4  discard,errors=remount-ro  0  1

Feche e salve o fstab, depois reinicie e o TRIM automático deve estar funcionando agora.

Testando o TRIM automático

Para testar se o TRIM está funcionando, execute os seguintes comandos ( fonte ):

cd  / # Replace with SSD file system
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile

Na saída, copie o número abaixo begin_LBAe verifique o nome do dispositivo do seu SSD: System->Administration->Disk Utilitypor exemplo , sda, sdb, sdc ...

Execute o seguinte, mas substitua [ADDRESS](begin_LBA) e sdX(nome do dispositivo SSD) pelos detalhes obtidos acima.

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

a saída deve ser uma longa sequência de caracteres para esses setores

sudo rm tempfile
sync

Repita o hdparmcomando acima:

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

Se você obtiver apenas zeros, o TRIM automático estará funcionando. No entanto, se após a remoção do arquivo os setores ainda não estiverem vazios, aguarde um pouco e execute o comando novamente.

Uli
fonte
5
Testar o TRIM pode não funcionar da seguinte maneira: serverfault.com/a/401506/60525
chrishiestand
11
@Li Por favor, alguém me ajude. Parece que não funciona para mim. Eu tenho 4 partições no meu ssd / /boot /usre /opte eu usei uma outra HDD para o meu /home. Vou cd / #sdce continuo com as instruções, mas nunca recebo zeros. Desde já, obrigado!
BugShotGG 27/03
11
@lightrush: Ótima edição! Obrigado por manter a resposta atualizada.
quer
11
Você pode adicionar um syncapós o ddcomando, pois pelo menos no meu sistema o tempfile não é criado imediatamente, portanto o hdparm não informa nada.
Andreas J.
2
O systemd lida com isso agora. status do sudo systemctl fstrim.timer
balloons
28

Observe que, se você estiver usando criptografia, as soluções postadas aqui até agora não o ajudarão, porque você também precisa ativar o suporte TRIM na camada de criptografia. Isso pode ser feito com as versões do kernel 3.1+ e cryptsetup versões 1.4+, ambas incluídas no Ubuntu 12.04.

Encontre meu guia sobre como configurar o TRIM para partições criptografadas LUKS aqui


Como ativar o TRIM em partições criptografadas LUKS no Ubuntu e Debian


Este passo a passo permitirá que você aproveite a tecnologia TRIM para suas partições SSD criptografadas para o cryptsetup 1.4 ou superior e o kernel 3.1 ou superior. Isso leva a uma experiência SSD sem complicações, porque

"O TRIM permite que o SSD lide com a sobrecarga da coleta de lixo, o que reduziria significativamente significativamente as operações futuras de gravação nos blocos envolvidos, com antecedência".

Exemplo de configuração

Notebook com SSD como unidade única, o Linux instalado em uma única partição raiz ext4 LVM com uma partição swap LVM, ambas na partição lógica criptografada LUKS.

SSD: / dev / sda

sudo fdisk -l /dev/sda
/dev/sda1               # boot partition (83) (unencrypted, ext4)
/dev/sda2               # extended partition
/dev/sda5               # logical partition (83) with LUKS encryption

ls /dev/mapper
/dev/mapper/sda5_crypt         # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root   # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap   # swap partition sda5_crypt

Como

  1. Faça um backup de todos os seus dados. Você está mexendo com seu sistema de arquivos, portanto, fazer um backup é simplesmente uma boa ideia.
  2. Verifique se você possui as versões necessárias do kernel e do cryptsetup (3.1 e 1.4, por exemplo, no Ubuntu 12.04, tenha cuidado, no momento em que escrevo o 12.04 ainda é beta).
  3. Inclua o parâmetro descarte nas opções do sistema de arquivos dos volumes LVM criptografados em seu arquivo / etc / fstab. Isso torna o sistema de arquivos da sua partição LVM ciente de que você deseja usar o TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. O último passo não é suficiente. Desde que LUKS não saiba que deseja usar o TRIM, ele bloqueará efetivamente todas as operações do TRIM provenientes do sistema de arquivos da partição LVM, por motivos de segurança. Inclua o parâmetro descarte nas opções de cryptdevice em / etc / crypttab para fazer LUKS aceitar o comportamento de descarte da partição LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Reconstrua o seu initramfs. As opções do crypttab são armazenadas lá e usadas na inicialização.

    sudo update-initramfs -c -k all
    
  6. Reinicie.

  7. Verifique se o TRIM está agora ativo.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Se o último comando mostrar um resultado como esse (1 allow_discards no final), você estará pronto.

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

Resultado

TRIM está ativado. Aproveite o seu SSD sem complicações!

nem75
fonte
@Marco Ceppi alguma razão específica para a edição, algo que eu esqueci?
75
Apenas arrume a remarcação e remova a linha "assinatura" (presume-se que você receberá feedback por meio de comentários e votação no site.
Marco Ceppi
7
O guia deve ser incluído aqui caso o site / página não esteja disponível.
Cas
Além disso, essa é efetivamente uma resposta apenas de link, não está funcionando. A maioria de vocês usará o LVM com LUKS, que não é capaz de propagar o TRIM na versão 12.04. Veja esta resposta para mais informações.
Gtvdijk
11
Depois de seguir estas instruções, ainda é necessário configurar uma tarefa cron para aparar o disco no 14.04?
21915