TRIM su SSD: cosa è e come abilitarlo su Ubuntu 12.04
Avete comprato un nuovo computer con un bel disco a stato solido (SSD) al suo interno, avete letto e sentito parlare di trimming o di trim ma… non avete idea di cosa sia né di che benefici apporti? Non avete ancora un SSD ma volete capirci qualcosa in più in vista di un futuro acquisto o semplicemente per cultura personale?
Bene, questa potrebbe essere la guida che potrebbe dare risposta a tutte le domande precedenti. Ovviamente ve ne consiglio caldamente la lettura e, per eventuali dubbi o domande, non esitate a chiedere con un commento.
IMPORTANTE: Ubuntu 14.04 e i suoi flavors (così come succederà con le distribuzioni successive) hanno il comando trim abilitato di default, quindi non c’è necessità di altri interventi manuali.
Cosa è il “TRIM”?
Trim è un comando quasi fondamentale per deteriorare il meno possibile le prestazioni di un dispositivo di archiviazione a stato solido – altresì noto come SSD – durante il tempo. C’è tuttavia bisogno di un accenno di teoria per capire qualcosa in più.
Prendiamo ad esempio un disco meccanico, il classico “disco rigido” col quale ognuno di voi avrà avuto a che fare almeno una volta nella vita.
Un classico hard disk meccanico
Immaginate di eliminare un file con la classica procedura tasto destro > elimina. Il vostro sistema operativo non vi permetterà di visualizzare più quel file una volta eliminato, ma cosa succede in realtà sul disco rigido? Che fine fanno i dati?
In sostanza, nel momento in cui voi confermate l’eliminazione di un file, impartite al sistema operativo l’ordine di contrassegnare lo spazio precedentemente occupato dal file come spazio libero ed utilizzabile dall’utente per memorizzare altra roba; questa operazione, in gergo, viene definita de-indicizzazione.
In realtà i dati contenuti nel file eliminato restano ancora sul disco rigido in attesa di essere sovrascritti da nuovi dati (ecco perché in alcuni casi è possibile recuperare completamente il contenuto di un file eliminato accidentalmente), per cui il sistema operativo non dovrà preoccuparsi di eliminarli materialmente dal disco per rendere lo spazio disponibile anche fisicamente. Si limiterà invece a de-indicizzarli e renderli praticamente invisibili all’utente.
La procedura di eliminazione è differente quando si parla di SSD.
Un dispositivo SSD
Per scelta progettuale, affinché lo spazio su SSD possa essere riutilizzato c’è bisogno che sia anche materialmente vuoto, per cui la semplice de-indicizzazione non basta più. Per porre rimedio a questo è possibile agire in due modi:
- liberare fisicamente lo spazio immediatamente dopo la de-indicizzazione;
- liberare fisicamente lo spazio soltanto nel momento in cui questo è richiesto.
Il comando TRIM serve proprio a liberare fisicamente lo spazio su SSD immediatamente dopo la de-indicizzazione da parte del sistema operativo (caso 1). In pratica, grazie al Trim la sequenza di eliminazione diverrebbe la seguente:
- l’utente seleziona un file e dà tasto destro > elimina;
- il sistema operativo invocherà il comando (in pseudocodice) trim(spazio occupato dal file, SSD);
- il comando trim provvederà a deindicizzare lo spazio e a liberarlo materialmente, senza essere interrotto da altri comandi di sistema (in gergo, “atomicamente”);
- lo spazio sarà materialmente a disposizione del sistema operativo.
Potreste pensare che in termini di prestazioni agire senza il trim (rientrando nel caso 2) sarebbe la stessa cosa, tuttavia – senza dilungarmi nel discorso su atomicità, letture, scritture e tempi di esecuzione – posticipare la “pulizia” dello spazio intacca, a lungo andare, sulle prestazioni dello stesso SSD.
Anche il trim, se non ottimizzato, può rallentare notevolmente l’operazione di eliminazione di un file. D’altra parte, il sistema operativo Windows (da 7 in poi) ed il sistema operativo Mac OS X dispongono di un’implementazione di trim decisamente buona, che rende quasi impercettibile il leggero ritardo di risposta dovuto alla ri-scrittura in fase di eliminazione.
….E Linux?
Un’implementazione di Trim è presente nel kernel Linux e si “abilita” montando in fstab il nostro SSD con l’opzione “discard”; d’altra parte, per molti dispositivi SSD, il trim offerto da Linux finisce per una serie di motivi con l’essere troppo lento, peggiorando di conseguenza in maniera sensibile le prestazioni del dispositivo. In parole povere, il disco a stato solido potrebbe risultare meno reattivo col trim che senza.
E’ per questo motivo che in Ubuntu ed in molte altre distribuzioni Linux si è deciso di non abilitare trim di default, nonostante il non-trimming potrebbe portare ad un deterioramento precoce del nostro SSD.
Abbandonare l’idea di trim? No, grazie ad un piccolo workaround potremo usare la cosiddetta via di mezzo: basterà semplicemente programmare l’esecuzione del trim sullo spazio occupato da un’intero filesystem – grazie al comando fstrim – una volta al giorno. Certo non sarà come il trimming offerto da Windows e Mac ma aiuterà, e molto, a mantenere stabili ed alte le prestazioni del nostro SSD su Linux.
Come abilitare TRIM su Ubuntu 12.04 (e su tutte le altre distribuzioni in cui è assente di default)
Prima di procedere
Per abilitare il trimming su Ubuntu (su Linux) c’è bisogno di soddisfare tutti i requisiti seguenti:
1 – Il disco a stato solido – o meglio, la partizione o le partizioni – su cui volete abilitare trim deve essere formattato in ext4. Per verificare, da terminale, digitate il comando
df -T
e verificate tramite la colonna “Tipo” (o “Type”) che le partizioni che vi interessano siano formattate in ext4 (nel mio caso, / e /home lo sono).
2 – Il disco a stato solido su cui risiede il sistema (ed eventualmente gli altri dischi contenenti le partizioni supplementari per cui abilitare il trimming) deve essere compatibile con il trimming
Per verificare, digitate da terminale
sudo hdparm -I /dev/sdx | grep TRIM
(dove /dev/sdx è il vostro disco).
Se l’output è qualcosa di simile a
Data Set Management TRIM supported
allora il trimming è supportato dal disco.
3 – Il trimming non deve essere effettivamente abilitato in fstab tramite l’opzione “discard”
Per procedere, da terminale, digitate
sudo gedit /etc/fstab
(sostituendo gedit con il vostro editor di testi preferito, all’occorrenza) e verificate che l’opzione discard (evidenziata nell’immagine in basso) NON sia presente.
In caso contrario, eliminate dalle partizioni per cui volete abilitare il nostro workaround sia la parola discard che la virgola immediatamente successiva.
4 – Il comando fstrim deve funzionare correttamente
Se avete soddisfatto tutti i requisiti precedenti, questo è il momento della verità: da terminale, per eseguire la pulizia dello spazio inutilizzato tramite fstrim, digitate
sudo fstrim -v /
ed attendete il completamento dell’operazione. Se l’output dovesse essere simile a
/: numero_byte byes were trimmed
allora potrete impostare senza problemi un cron che esegua fstrim al posto vostro una volta al giorno, abilitando così il nostro workaround.
Creare un cron giornaliero per abilitare il TRIM su Ubuntu
L’operazione è piuttosto semplice. Useremo Ubuntu come sistema di riferimento, è possibile comunque replicare il procedimento anche su altre distribuzioni di Linux.
Da terminale, digitiamo
sudo gedit /etc/cron.daily/trim
(anche questa volta, sostituite gedit con il vostro editor preferito)
e scrivete al suo interno
#!/bin/sh LOG=/var/log/trim.log echo "*** $(date -R) ***" >> $LOG fstrim -v / >> $LOG
Con queste righe di script, andrete a:
- impostare un file di log (consultabile in /var/log/trim.log);
- definire come l’output dovrà essere scritto nel file di log
- invocare fstrim sulla partizione radice (/), scrivendo l’output nel file di log
A questo punto non dovrete far altro che salvare il file e chiudere l’editor. Fatto ciò, sempre da terminale, diamo i permessi di esecuzione allo script con il comando
sudo chmod a+x /etc/cron.daily/trim
Fatto, a questo punto il nostro filesystem Linux sarà trimmato una volta al giorno per mantenerne inalterate le prestazioni il più a lungo possibile!
Per esperti: Se volete abilitare il trimming giornaliero anche sulla vostra directory /home (qualora questa risieda su una partizione separata) o su qualsiasi altra directory separata di sistema su cui lo riteniate opportuno, lo script precedente diventa
#!/bin/sh LOG=/var/log/trim.log echo "*** $(date -R) ***" >> $LOG fstrim -v / >> $LOG fstrim -v /home >> $LOG
L’articolo TRIM su SSD: cosa è e come abilitarlo su Ubuntu 12.04 appare per la prima volta su Chimera Revo – News, guide e recensioni sul Mondo della tecnologia.
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.