mercoledì 18 dicembre 2013

Come abilitare TRIM per migliorare le prestazioni del SSD in Debian / Ubuntu

Che cos'è TRIM e perché conviene abilitarlo?
Il comando TRIM comunica al controller del SSD quali sono i blocchi attualmente non in uso, ad esempio quelli liberati a seguito della cancellazione di un file. Il mancato utilizzo del comando TRIM causa, nel lungo periodo, una rilevante riduzione delle prestazioni del SSD.
E' recente la notizia che Ubuntu 14.04 "Trusty Tahr" uscirà con la funzione TRIM per gli SSD abilitata di default, vediamo come abilitarlo anche in Ubuntu 13.10.

Prima cosa da fare è verificare che il nostro SSD supporti il comando TRIM, apriamo il Terminale e digitiamo:

sudo hdparm -I /dev/sda | grep "TRIM supported"

Se questo comando genererà una risposta simile a questa:

* Data Set Management TRIM supported (limit 8 blocks)

allora potete procedere, se al contrario non otterrete alcuna risposta vorrà dire che il vostro SSD non supporta TRIM.

Eseguire TRIM manualmente:

Prima cosa da sapere è come eseguire TRIM da terminale:

sudo fstrim -v /

Questo comando eseguirà TRIM sull'intero disco di sistema, ci vorrà qualche minuto per il completamento, abbiate pazienza ed aspettate, anche se sembrerà non esserci alcuna attività sul SSD.
Se avete più partizioni sul vostro SSD dovrete eseguire questo comando per ciascuna partizione, non fatelo per la partizione di swap in quanto non ne ha bisogno.

Far eseguire automaticamente TRIM dal sistema:

Ci sono diversi modi per far eseguire TRIM dal sistema in modo automatico, vediamo quali:

1. aggiungere l'opzione "discard" in fstab (NON CONSIGLIATO)

Aggiungere l'opzione discard nel vostro file fstab farà in modo che TRIM venga eseguito ogni qualvolta si cancella un file. Questo metodo non è consigliabile perché nel caso in cui dovete cancellare molti file il vostro SSD rallenterà vistosamente, inoltre è inutile eseguire TRIM ad ogni cancellazione di file. Comunque, nonostante lo sconsiglio, vi spiegherò come fare.

sudo nano /etc/fstab

Con questo comando apriamo il file fstab con l'editor di testo nano.
All'interno del file ci sono tante righe quante sono le partizioni che vengono integrate nel file system principale, ogni riga ha il seguente formato:

<file system> <punto di mount> <tipo> <opzioni> <dump> <pass>

La prima partizione in elenco è quella del sistema operativo, individuabile dal fatto che il punto di mount è /.
Dopo l'indicazione del tipo di filesystem, nel nostro caso ext4, ci sono le opzioni. Dovreste trovare le seguenti opzioni sulla partizione del sistema operativo:
errors=remount-ro
Aggiungete discard alle opzioni separando con una virgola, in questo modo:
discard,errors=remount-ro

Se avete altre partizioni del SSD potete fare lo stesso anche per le altre, ma ricordatevi di non farlo per la partizione di Swap che non ne ha bisogno.
Successivamente possiamo salvare premendo i tasti Ctrl + o, confermare il salvataggio premendo Invio, quindi uscire dall'editor con Ctrl + x.
Riavviate il sistema e avrete il TRIM attivo.

2. eseguire all'avvio del sistema TRIM aggiungendolo al file /etc/rc.local

Questo metodo eseguirà TRIM durante l'avvio del sistema, il prezzo da pagare è il rallentamento del boot, altra nota negativa è che su un PC sempre acceso non verrà mai eseguito. Personalmente non ho applicato questo metodo sul mio PC perché lo spengo e lo riavvio più volte al giorno, ma è una scelta valida per molti, vediamo come fare.

sudo nano /etc/rc.local

Il file si presenta sostanzialmente così:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0

Aggiungete il comando per invocare TRIM prima di exit 0, per ottenere questo:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
fstrim -v /
exit 0

Salvate  premendo i tasti Ctrl + o, confermate il salvataggio premendo Invio, quindi uscite dall'editor con Ctrl + x.
Riavviate il PC, da ora in poi, ad ogni avvio, verrà eseguito TRIM.

3. eseguire TRIM automaticamente una volta al giorno tramite /etc/cron.daily

Questo è il metodo che preferisco, TRIM verrà eseguito una volta al giorno all'ora stabilita da cron. Se il PC dovesse essere spento nell'ora stabilita, allora verrà eseguito non appena sarà possibile farlo.
Bene, vediamo come fare:

sudo nano /etc/cron.daily/trim

Creiamo un nuovo file chiamato trim all'interno di /etc/cron.daily, adesso scriviamo le seguenti righe:

#!/bin/sh
fstrim -v /

Ora salvate  premendo i tasti Ctrl + o, confermate il salvataggio premendo Invio, quindi uscite dall'editor con Ctrl + x.
Ora bisogna rendere il file appena creato eseguibile con il comando:

sudo chmod a+x /etc/cron.daily/trim

Riavviate il PC, da ora in poi TRIM verrà eseguito automaticamente una volta al giorno.

Un piccolo trucco per limitare le scritture sul SSD allo scopo di allungarne la vita:

Probabilmente saprete già che la longevità del vostro SSD è legata al numero di scritture eseguite. Effettuare spesso operazioni in scrittura ne accorcerà sicuramente la vita, ad esempio, una cosa da evitare, se si utilizza Windows, è la deframmentazione del disco!
Tornando ai sistemi GNU/Linux, un piccolo trucco per limitare le scritture su SSD è quello di disabilitare la scrittura della data di accesso ad un file. Per default, ogni volta si apre un file, il sistema operativo scriverà la data di accesso al file, questo si può disabilitare aggiungendo l'opzione "noatime" in /etc/fstab.
Dal Terminale digitiamo:

sudo nano /etc/fstab

Ora aggiungiamo l'opzione noatime per ottenere qualcosa di simile:

noatime, errors=remount-ro

Salvate con le solite combinazioni di tasti Ctrl + o, confermate il salvataggio premendo Invio, quindi uscite dall'editor con Ctrl + x.

Riavviate e godetevi a lungo il vostro SSD.