Come abilitare TRIM?

184

So che il kernel Linux supporta TRIM dalla versione 2.6.33, quindi dovrebbe esserci il supporto TRIM in ubuntu.

TRIM è abilitato di default o devo cambiare alcune impostazioni o installare software aggiuntivo perché funzioni? Se sì, come?

    
posta Uli 26.12.2010 - 13:44

2 risposte

195

Ubuntu 14.10 in poi

In Ubuntu 14.10 e 15.04, TRIMming si verifica automaticamente ogni settimana su tutti gli SSD supportati da fstrim .

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

Ubuntu 14.04

A partire da Ubuntu 14.04, il TRIM programmato è abilitato di default per Intel, SAMSUNG, OCZ, Patriot e Sandisk SSD. Se hai un'altra marca, puoi disabilitare il controllo del fornitore eseguendo il seguente comando :

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

(oppure modifica il file /etc/cron.weekly/fstrim e aggiungi --no-model-check )

Ubuntu 13.10 e precedenti

Ci sono tre modi per eseguire TRIM, manuale, programmato e automatico:

TRIM manuale

In Ubuntu questo può essere eseguito con fstrim :

sudo fstrim /

tuttavia non è necessario quando TRIM programmato o automatico sono abilitati, come descritto nelle sezioni seguenti.

Nota: per Ubuntu 11.04 e sistemi precedenti, fstrim non è disponibile, quindi devi usare wiper.sh fornito con hdparm in /usr/share/doc/hdparm/contrib/wiper.sh.gz

TRIM programmato (consigliato)

Questo è il metodo attualmente consigliato ed è pianificato per essere attivato per impostazione predefinita per Ubuntu 14.04 . Ecco come attivarlo manualmente nelle versioni precedenti di ubuntu (da 11.10 a 13.10):

Crea un file script di lavoro CRON settimanale:

gksudo gedit /etc/cron.weekly/fstrim

Incolla il seguente codice nel file, quindi salva e chiudi il file:

#! /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

Si noti che quanto sopra presuppone che solo il proprio filesystem di root / si trovi su un SSD. Se disponi di più punti di montaggio che risiedono su uno o più SSD, aggiungili a SSD_MOUNT_POINTS come spiegato nel codice.

Rendi eseguibile lo script:

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

E finalmente testalo:

sudo /etc/cron.weekly/fstrim

Se non vedi errori, il tuo cron job dovrebbe funzionare correttamente.

TRIM automatico (Obsoleto, lento)

TRIM automatico è stato supportato da Ubuntu 10.10 (kernel 2.6.33) con il file system EXT4. Tuttavia, l'invio di comandi TRIM all'SSD in tempo reale - dopo ogni eliminazione - è stato riconosciuto per rendere la cancellazione molto più lenta del solito su alcune unità. Pertanto un TRIM programmato settimanalmente tramite un cron job (descritto sopra) è raccomandato.

Per abilitare il TRIM automatico su un'unità o una partizione, è necessario montarlo con l'opzione discard in fstab . Per prima cosa fai il backup di fstab e aprilo per la modifica:

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

Aggiungi discard alla voce delle opzioni fstab (separate da virgola) per l'unità SSD o ciascuna partizione.

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

Chiudi e salva fstab, quindi riavvia e il TRIM automatico dovrebbe ora funzionare.

Test TRIM automatico

Per verificare se TRIM sta lavorando emettere i seguenti comandi ( fonte ):

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

Dalla copia di output il numero sotto begin_LBA e verifica il nome del dispositivo del tuo SSD: System->Administration->Disk Utility e.g. sda, sdb, sdc ...

Esegui quanto segue, ma sostituisci [ADDRESS] (begin_LBA) e sdX (nome dispositivo SSD) con i dettagli ottenuti sopra.

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

l'output dovrebbe essere una lunga stringa di caratteri per quei settori

sudo rm tempfile
sync

Ripeti il ​​comando hdparm dall'alto:

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

Se ottieni solo zeri, il TRIM automatico sta funzionando. Tuttavia se dopo aver rimosso il file i settori non sono ancora vuoti, attendi qualche istante ed esegui di nuovo il comando.

    
risposta data Uli 30.09.2015 - 23:58
26

Si noti che se si utilizza la crittografia le soluzioni pubblicate qui non saranno di aiuto, poiché è necessario abilitare il supporto TRIM anche nel livello di crittografia. Questo può essere fatto con le versioni del kernel 3.1+ e cryptsetup 1.4+, entrambe incluse in Ubuntu 12.04.

Trova la mia guida sull'impostazione di TRIM per le partizioni crittografate LUKS qui

Come attivare TRIM su LUKS Partizioni crittografate in Ubuntu & amp; Debian

Questa procedura dettagliata ti consentirà di sfruttare la tecnologia TRIM per le tue partizioni SSD crittografate per cryptsetup 1.4 o versioni successive e kernel 3.1 o versioni successive. Questo porta a un'esperienza SSD senza problemi perché

  

"TRIM abilita l'SSD a gestire l'overhead della raccolta di dati inutili   altrimenti rallenterebbe in modo significativo le operazioni di scrittura future verso il   blocchi coinvolti, in anticipo. "

Impostazione di esempio

Notebook con SSD come unità singola, Linux installato in partizione di root LVM singola ext4 con partizione di swap LVM, entrambi su partizione logica codificata in 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

HowTo

  1. Fai un backup di tutti i tuoi dati. Stai scherzando con il tuo file system quindi avere un backup è semplicemente una buona idea.
  2. Assicurati di avere le versioni richieste per kernel e cryptsetup (3.1 & Amp; 1.4, ad es. in Ubuntu 12.04, attenzione però, al momento della scrittura 12.04 è ancora beta).
  3. Aggiungi parametro scarto alle opzioni del file system della crittografia Volume / i LVM nel file / etc / fstab. Questo rende il file system di la partizione LVM è consapevole del fatto che si desidera utilizzare TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. L'ultimo passo non è abbastanza però. Finché LUKS non è a conoscenza che vuoi usare TRIM bloccherà efficacemente tutto il TRIM operazioni provenienti dal file system della partizione LVM, per motivi di sicurezza motivi. Aggiungi parametro scarto alle opzioni di cryptdevice in / etc / crypttab per fare in modo che LUKS accetti il ​​comportamento di eliminazione di LVM partizione.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Ricrea il tuo initramfs. Le opzioni di crypttab sono memorizzate lì e usato all'avvio.

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

  7. Controlla se TRIM è ora attivo.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Se l'ultimo comando mostra un risultato come questo (1 allow_discards alla fine), tutto è pronto.

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

Risultato

TRIM è attivato. Goditi il ​​tuo SSD senza problemi!

    
risposta data nem75 14.04.2012 - 17:00

Leggi altre domande sui tag