Come abilitare TRIM?


189

So che il kernel Linux supporta TRIM dalla versione 2.6.33, quindi ci dovrebbe essere il supporto TRIM in Ubuntu.

TRIM è abilitato per impostazione predefinita o devo modificare alcune impostazioni o installare software aggiuntivo affinché funzioni? Se é cosi, come?


Ho appena seguito queste istruzioni su webupd8 che offre alcune opzioni davvero buone :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Ho provato l'opzione per il trim automatico come descritto sopra in "TRIM automatico", ma ho scoperto che l'impostazione di un cron giornaliero ha funzionato molto meglio con la mia configurazione.
bmbaker,

Risposte:


197

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

Dal 15.04 Ubuntu utilizza systemd e il suo timer ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

A partire da Ubuntu 14.04, TRIM pianificato è abilitato per impostazione predefinita per SSD Intel, SAMSUNG, OCZ, Patriot e Sandisk. Se si dispone di un altro marchio, è possibile disabilitare il controllo del fornitore eseguendo il comando seguente:

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

(o semplicemente modifica il file /etc/cron.weekly/fstrime aggiungi --no-model-check)

Ubuntu 13.10 e precedenti

Esistono 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 sono abilitati i TRIM programmati o automatici, come dettagliato nelle sezioni seguenti.

Nota: per Ubuntu 11.04 e sistemi precedenti, fstrim non è disponibile, quindi è necessario utilizzare wiper.shfornito con hdparmin/usr/share/doc/hdparm/contrib/wiper.sh.gz

TRIM programmato (consigliato)

Questo è il metodo attualmente raccomandato ed è pianificato per essere attivato di default per Ubuntu 14.04 . Ecco come attivarlo manualmente nelle versioni precedenti di Ubuntu (dall'11.10 al 13.10):

Creare un file di 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 hai più punti di montaggio che risiedono su uno o più SSD, aggiungili SSD_MOUNT_POINTScome spiegato nel codice.

Rendi eseguibile lo script:

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

E infine testalo:

sudo /etc/cron.weekly/fstrim

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

TRIM automatico (obsoleto, lento)

Il TRIM automatico è 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 si consiglia un TRIM programmato settimanalmente tramite un processo cron (descritto sopra).

Per abilitare il TRIM automatico su un'unità o partizione, devono essere montati con l' discardopzione in fstab. Per prima cosa esegui il backup di fstab, quindi aprilo per la modifica:

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

Aggiungi discardalla voce delle opzioni fstab (separata da virgola) per l'unità SSD o ogni partizione.

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

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

Test del TRIM automatico

Per verificare se TRIM funziona emettere i seguenti comandi ( sorgente ):

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

Dall'output copia il numero sotto begin_LBAe verifica il nome del dispositivo del tuo SSD: System->Administration->Disk Utilityes. Sda, sdb, sdc ...

Eseguire quanto segue ma sostituire [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 serie di caratteri per quei settori

sudo rm tempfile
sync

Ripeti il hdparmcomando dall'alto:

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

Se ottieni solo zeri, allora TRIM automatico funziona. Tuttavia, se dopo aver rimosso il file i settori non sono ancora vuoti, attendere qualche istante ed eseguire nuovamente il comando.


5
Test TRIM potrebbe non funzionare in questo modo: serverfault.com/a/401506/60525
chrishiestand

1
@Uli Per favore qualcuno mi aiuti. Non sembra funzionare per me. Ho 4 partizioni nel mio SSD / /boot /usre /opte ho usato un altro HDD per il mio /home. Vado a cd / #sdce continuo con le istruzioni ma non ottengo mai zeri. Grazie in anticipo!
BugShotGG

1
@lightrush: grande modifica! Grazie per aver aggiornato la risposta.
Uli,

1
Potresti voler aggiungere un syncdopo il ddcomando, poiché almeno sul mio sistema il tempfile non è stato creato immediatamente, quindi hdparm non riporta nulla.
Andreas J.

2
systemd ora gestisce questo. sudo systemctl status fstrim.timer
palloncini

28

Nota che se stai utilizzando la crittografia, le soluzioni pubblicate finora non ti aiuteranno, perché devi abilitare il supporto TRIM anche nel livello di crittografia. Questo può essere fatto con le versioni del kernel 3.1+ e cryptsetup versioni 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 partizioni crittografate LUKS in Ubuntu e 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 consente all'SSD di gestire l'overhead della garbage collection, che altrimenti rallenterebbe in modo significativo future operazioni di scrittura sui blocchi interessati, in anticipo."

Esempio di installazione

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

Come

  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 del kernel e del cryptsetup (3.1 e 1.4, ad esempio in Ubuntu 12.04, attenzione però, al momento in cui scrivo 12.04 è ancora beta).
  3. Aggiungi il parametro discard alle opzioni del file system dei volumi crittografati LVM nel tuo file / etc / fstab. Questo rende il file system della partizione LVM consapevole 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 del fatto che si desidera utilizzare TRIM, bloccherà efficacemente tutte le operazioni TRIM provenienti dal file system della partizione LVM, per motivi di sicurezza. Aggiungi il parametro discard alle opzioni cryptdevice in / etc / crypttab per fare in modo che LUKS accetti il ​​comportamento di scarto della partizione LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Ricostruisci i tuoi initramfs. Le opzioni di crypttab sono memorizzate lì e utilizzate 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) sei 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!


@Marco Ceppi qualche motivo specifico per la modifica, qualcosa che ho trascurato?
nem75,

Basta mettere in ordine il mark-down e rimosso la linea di "firma" (si presume che si otterrà un feedback attraverso i commenti e le votazioni sul sito.
Marco Ceppi

7
La guida deve essere inclusa qui nel caso in cui il sito / la pagina non siano disponibili.
Cas

Oltre a ciò, questa è effettivamente una risposta solo link, non funziona affatto. La maggior parte di voi utilizzerà LVM con LUKS, che non è in grado di propagare TRIM in 12.04. Vedi questa risposta per maggiori informazioni.
gertvdijk,

1
Dopo aver seguito queste istruzioni, è ancora necessario impostare un processo cron per tagliare il disco su 14.04?
ajn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.