Come abilitare TRIM per SSD in Ubuntu

Una fotografia di due schede SSD NVMe.

Se stai usando un’unità a stato solido (SSD), dovresti sapere che non dovresti eseguire alcun software di deframmentazione o consolidamento dello spazio libero su di essa. Allora come pulire il tuo SSD e liberare lo spazio vuoto? TRIM è il comando che usiamo per informare il sistema operativo di eseguire l’operazione di pulizia. Windows 11 ti consente di eseguire manualmente TRIM attraverso il comando fsutil. Ma che dire di Ubuntu? Come puoi abilitare TRIM per SSD in Ubuntu?

Nota: I seguenti passaggi non funzioneranno se hai crittografato la tua partizione.

Indice dei contenuti

  • Creare un lavoro cron TRIM per il tuo SSD
  • Utilizzare l’opzione Discard in fstab
  • Domande frequenti

Creare un lavoro cron TRIM per il tuo SSD

  1. Per assicurarti che l’SSD nel tuo computer supporti TRIM, apri un terminale e digita:
sudo hdparm -I/dev/sda

Una finestra del terminale che mostra l'output del comando hdparm.

Se Ubuntu non è installato nella prima partizione dell’SSD, cambia sda per riflettere la partizione in cui si trova Ubuntu. Puoi farlo eseguendo lsblk.

Una finestra del terminale che mostra tutti i dischi collegati alla macchina.

  1. Scorri verso il basso nella lista fino a vedere la sezione “Enabled Supported”. Scorri ulteriormente e se vedi qualcosa come “Data Set Management TRIM supported (limit 8 blocks)“, allora TRIM è supportato per il tuo SSD.

Una finestra del terminale che mostra il flag TRIM disponibile per l'SSD di dimostrazione.

  1. Testa se la funzione TRIM sta funzionando in Ubuntu. Nel terminale, digita:
sudo fstrim -v/

Questo pulirà la partizione principale dell’SSD. Se ha successo, dovresti vedere qualcosa che somiglia alla seguente immagine.

Una finestra del terminale che mostra il primo comando fstrim per l'SSD.

  1. Imposta un lavoro cron affinché il sistema operativo invii il comando TRIM una volta al giorno.
sudonano/etc/cron.daily/trim
  1. Incolla il seguente codice nell’area vuota:
#!/bin/sh  
fstrim -v/
  1. Se la tua directory HOME si trova su un’altra partizione, puoi aggiungere una linea aggiuntiva alla fine del codice sopra:
fstrim -v/home >>$LOG
  1. Se desideri salvare l’output in un file di log, utilizza il seguente codice invece:
#!/bin/sh  
LOG=/var/log/trim.log  
echo"* $(date -R) *">>$LOG  
fstrim -v/>>$LOG  
fstrim -v/home >>$LOG

Una finestra del terminale che mostra uno script cron completo per fstrim.

  1. Salva (Ctrl + O) ed esci (Ctrl + X).

  2. Rendi eseguibile il lavoro cron:

sudochmod a+x /etc/cron.daily/trim

Una finestra del terminale che mostra lo script di trim con i permessi corretti.

Buono a sapere: cron è un’ottima utility che può aiutarti ad automatizzare le attività in Linux. Scopri come funziona e come puoi utilizzarla per i tuoi programmi.

Utilizzare l’opzione Discard in fstab

Oltre a invocare manualmente fstrim, puoi anche configurare il tuo sistema per “scartare” continuamente qualsiasi spazio vuoto non utilizzato sul tuo disco. Questo può essere utile se stai usando un laptop e non vuoi lasciare il computer acceso tutto il tempo.

  1. Controlla il valore UUID della tua partizione principale:
ls-l/dev/disk/by-uuid

Una finestra del terminale che mostra il link simbolico tra UUID e le partizioni dell'SSD.

  1. Apri il file “/etc/fstab” utilizzando il tuo editor di testo preferito. Nel mio caso, sto usando GNU Nano:
sudonano/etc/fstab
  1. Trova l’entry della tua partizione principale nel file “/etc/fstab” premendo Ctrl + W e poi digitando il suo valore UUID.

Una finestra del terminale che mostra il file /etc/fstab predefinito per il sistema di dimostrazione.

  1. Vai all’entry della tua partizione principale e digita discard,noatime, prima dell’opzione “errors=remount-ro”. Ad esempio, il mio file “/etc/fstab” ha la seguente entry per la partizione principale:
#   
UUID=xxx    /    ext4    discard,noatime,errors=remount-ro    01  
[...]

Una finestra del terminale che mostra il file /etc/fstab modificato.

  1. Salva il tuo nuovo file “/etc/fstab” premendo Ctrl + O, poi Ctrl + X.

Una finestra del terminale che mostra il prompt di salvataggio per GNU Nano.

  1. Infine, riavvia la tua macchina per applicare le nuove impostazioni.

Una finestra del terminale che mostra il comando di riavvio per il sistema di dimostrazione.

FYI: mentre TRIM eliminerà qualsiasi spazio libero sul tuo SSD, questo da solo non ti proteggerà dai programmi di recupero dati. Scopri come puoi eliminare in modo sicuro i tuoi dati utilizzando solo semplici strumenti da riga di comando.

Domande frequenti

Posso usare sia fstrim che discard sul mio SSD contemporaneamente?

Sì. Tuttavia, fare ciò non comporterà alcun miglioramento evidente né estenderà la vita del tuo SSD, poiché sia fstrim che discard utilizzano routine TRIM simili quando eliminano blocchi inutilizzati e liberi.

Sapendo questo, fstrim e discard differiscono in un punto chiave: la frequenza. Il primo accumula tutti i blocchi inutilizzati prima di “liberarli”, mentre il secondo “libera” un blocco non appena diventa non utilizzato. Questo significa che discard consumerà sempre più risorse di sistema e IO del disco rispetto a fstrim.

Il mio file /etc/fstab non ha un UUID per la sua partizione principale.

Questo è molto probabilmente dovuto al fatto che il tuo sistema sta utilizzando una scheda RAID hardware o un’utilità di gestione dei volumi logici (LVM). Per impostazione predefinita, TRIM funzionerà solo su sistemi che utilizzano partizioni disco tradizionali e file system come ext4.

Tuttavia, alcuni programmi LVM forniscono un’opzione utile per eseguire TRIM. In Ubuntu, puoi aggiungere issue_discards = 1 al tuo file “/etc/lvm/lvm.conf” per eseguire automaticamente TRIM su eventuali blocchi inutilizzati e liberi.

È possibile cambiare la frequenza del mio comando fstrim?

Sì. Per impostazione predefinita, Linux fornisce più file timer che ti permettono di regolare finemente quando desideri utilizzare fstrim. Ad esempio, puoi eseguire sudo mv /etc/cron.daily/trim /etc/cron.weekly/trim per cambiare la frequenza di TRIM da ogni giorno a ogni settimana.