Come Abilitare la Funzione Trim Dischi SSD su Ubuntu Linux


Dopo aver comprato un SSD Samsung, la prima cosa che ho fatto è installare da zero un nuovo sistema Ubuntu.
Non contento di questo sono passato ad ottimizzare il tutto aggiungendo il comando TRIM ed altre piccole operazioni per diminuire le scritture sul disco.

ssd 840 samsung

Il comando TRIM permette ad un sistema operativo di indicare quali blocchi non sono più in uso in un’unità a stato solido (come ad esempio i blocchi liberati dopo l’eliminazione di uno o più file).
L’ operazione di cancellazione eseguita da un Sistema Operativo, comporta che i blocchi dati vengano contrassegnati come non in uso; il TRIM permette al sistema operativo di passare questa informazione al controller dell’ SSD, il quale altrimenti non sarebbe in grado di sapere quali blocchi eliminare.

Lo scopo fondamentale di questa istruzione è quella di mantenere costante la velocità dell’ SSD per tutto il suo ciclo di vita, evitando il rallentamento che i primi modelli di SSD messi in produzione avevano una volta che tutte le celle erano state scritte, una alla volta.

Anche se gli strumenti erano già disponibili per resettare alcuni dispositivi ad uno stato aggiornato, essi eliminavano tutti i dati sul dispositivo i quali non consentivano il loro uso come un’ottimizzazione.
La causa principale del problema è che gli SSD non conoscono quali blocchi sono realmente in uso e quali sono liberi.
Mentre il file system su un SSD continuerà a mantenere una lista dei blocchi in uso, gli SSD non capiscono i file system e quindi non possono accedere a quella lista.

Ciò causa dei problemi in 2 punti:

  • Gli SSD possono scrivere blocchi di 4 KiB alla volta, ma, dato le limitazione dell’hardware, essi devono eliminare blocchi più grandi (es. 128 KiB – 512 KiB).
    Dal momento che il dispositivo non conosce quali blocchi sono ancora in uso, se sono stati scritti in precedenza, ogni scrittura richiederà un grande numero di ciclo di lettura/eliminazione/modifica/scrittura, assumendo che non ci siano altri blocchi disponibili sull’SSD (dopo tutto i blocchi sono almeno parzialmente pieni), il termine per questo fenomeno è Write Amplification.
  • Wear levelling: consente a un dispositivo di riorganizzare i suoi dati così che le scritture non vengano confinate a uno degli angoli del chip flash.
    Le celle flash tollerano solo un limitato numero di scritture prima che si rompano, così alcune SSD spostano i dati intorno all’SSD in modo tale che le celle vengano utilizzate in modo equo.
    Dato che il dispositivo non conosce quali blocchi sono realmente in uso, ogni blocco di dati scritti sul dispositivo richiederanno un scrittura aggiuntiva a causa del blocco spostato.

Dopo questa breve introduzione sul funzionamento del comando TRIM e prima di fare qualsiasi intervento sul vostro disco, bisogna verificare se il vostro disco supporta il TRIM.
Per assicurarsi che il TRIM sia supportato, aprite un terminale e digitate il seguente comando:

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

se viene supportato dovreste ottenere una risposta simile a questa:

* Data Set Management TRIM supported (limit 8 blocks)

A questo punto potete provare ad eseguire il comando TRIM su una partizione con il seguente comando:

sudo fstrim -v /

ed avrete un risultato simile a questo:

/: 198147174400 bytes were trimmed

Adesso che avete verificato che potete abilitare il TRIM sul vostro SSD andiamo a modificare il file fstab, aggiungendo delle opzioni a tutte le partizione EXT4 che avete.
Le opzioni che andremo ad aggiungere sono:

  • noatime: non aggiorna l’inode con i tempi di accesso al file system, grazie a noatime come opzione di mount, si ottiene un sistema più veloce, poiché i tempi di accesso non sono registrati
  • nodiratime: non aggiorna l’inode delle directory sui tempi di accesso al file system
  • discard: abilità il TRIM.

Procediamo in questo modo, prima di tutto diventiamo utenti root con il comando:

sudo su

e facciamo una copia di backup del file fstab per sicurezza:

cp /etc/fstab /etc/fstab.bak

apriamo il file fstab:

gedit /etc/fstab

ed andiamo ad aggiungere le 3 opzioni come nell’esempio seguente:

 # / was on /dev/sda1 during installation
UUID=xxxxxxx-xxxxxx-xxxxx-xxxxx-xxxxxxxx / ext4    noatime,nodiratime,discard,errors=remount-ro 0       1
# swap was on /dev/sda2 during installation
UUID=xxxxxxx-xxxxxx-xxxxx-xxxxx-xxxxxxxx none swap sw 0 0

Fate molta attenzione ad aggiungerle separandole dalle altre opzioni con la virgola e senza spazi.
Per chi vuole si può anche disattivare lo swap mettendo un # davanti alla riga UUID relativa allo swap, ma io ve lo sconsiglio.
Salvate e chiudete il file, al prossimo riavvio del sistema il comando TRIM sarà attivo sul vostro SSD.

Vi consiglio inoltre di applicare anche delle altre ottimizzazioni al vostro sistema in modo da utilizzare il meno possibile le scritture sul disco, per fare questo apriamo il file:

sudo gedit /etc/sysctl.conf

ed aggiungiamo alla fine del file queste due righe di codice:

vm.swappiness=1
vm.vfs_cache_pressure=50

Il primo comando vm.swappiness che di default è 60 indica la cache da mettere in swap oppure nella RAM, in questo modo portandolo ad 1 abbassiamo la probabilità di utilizzare lo Swap, invece il comando vm.vfs_cache_pressure indica ogni quanto tempo il kernel dovrà liberare la RAM.

Gli accorgimenti adottati miglioreranno il livello delle prestazioni e le manteranno più costanti nel passare dei mesi.


10 pensieri su “Come Abilitare la Funzione Trim Dischi SSD su Ubuntu Linux

  1. Se ho un ssd samsung evo su un nas che non gestisce il trim, posso dal pc eseguire il trim verso il ssd ?
    Si trova una iso bootable con questa funzione ?

    1. Dunque non avendo mai provato non so se è possibile, gli unici NAS che conosco che gestiscono correttamente e in cui funziona il TRIM sono i Synology.
      Comunque puoi provare dal tuo pc ad eseguire i primi due comandi dell’articolo sopra (sostituendo /sda con la partizione del nas e il secondo sudo fstrim -v /partizioneNAS). Ciao

      1. Ho un nas Synology che però purtroppo non dispone della funzione trim ….
        Uso Windows 7; c’è modo di mandare quei comandi da una iso linux bootabile ?

        1. Teoricamente si, basta anche una ubuntu 14.04 caricata su penna usb, il problema è che il comando va eseguito con regolarità e quindi dovresti ogni volta lanciare il comando, per curiosità quale modello è il tuo NAS Synology?

        2. Uso Synology DS414; sembra che il trim venga gestito solo dai modelli di classe superiore anche se poi questi utilizzano lo stesso sistema operativo del mio.
          Dove trovo la iso di Ubuntu per CD o DVD e soprattutto come faccio per inviare i comandi al Nas ?
          Grazie

        3. è sicuramente una questione di controller del nas non del sistema operativo installato, Ubuntu lo puoi scaricare da ubuntu.com, e una volta lanciato provi ad eseguire i primi due comandi della guida per vedere se funziona.
          Ma ho qualche dubbio sulla riuscita, essendo un nas con un suo sistema operativo penso che non ti permetta di fare niente. ciao

        4. Scusa il ancora il disturbo … Ma se non trimmo il ssd che succede ? Si rovina o solo rallenta ?

        5. tutte e due con il passare del tempo, le celle hanno una possibilità limitata di cancellazione e scrittura e a lunga andare la cella diventa più lenta e alla fine non riesce più ad essere scritta.
          con il comando trim si rallenta questo processo (che è inevitabile) facendo in modo che tutte le celle vengono cancellate e scritte lo stesso numero di volte (invece di utilizzare sempre una determinata sezione del disco ssd).
          Inoltre se hai il Samsung 840 evo aggiorna il firmware dal sito ufficiale samsung che già di suo con il passare del tempo presenta un notevole decadimento delle prestazione a causa di un bug. ciao

  2. ciao, ho seguito la tua guida passo passo ma quando riavvio il pc mi appare questo avviso:
    Si è verificato un errore nel mount di 0.
    premere S per saltare ……
    Cosa significa? ho forse sbagliato qualcosa e fatto danni?

    1. niente di grave, hai installato un sistema dual boot linux, windows? se si ha windows 8 sull’altra partizione?
      inoltre mi posti il file fstab per vedere se è tutto corretto? aprilo utilizzando: sudo gedit /etc/fstab

Lascia un commento!