Negli ultimi dieci anni, le unità a stato solido (SSD) hanno introdotto un nuovo modo di gestire lo storage. Gli SSD hanno vantaggi come un funzionamento silenzioso e più fresco e specifiche di interfaccia più veloci, rispetto ai loro predecessori rotanti. Naturalmente, la nuova tecnologia porta con sé nuovi metodi di manutenzione e gestione. Gli SSD hanno una funzione chiamata TRIM. Questo è essenzialmente un metodo per recuperare i blocchi inutilizzati sul dispositivo, che potrebbero essere stati scritti in precedenza, ma non contengono più dati validi e, pertanto, possono essere restituiti allo storage pool generale per il riutilizzo. Don Watkins di Opensource.com ha scritto per la prima volta di TRIM nel suo articolo del 2017 "Unità a stato solido in Linux:abilitazione di TRIM per SSD".
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Se hai utilizzato questa funzione sul tuo sistema Linux, probabilmente hai familiarità con i due metodi descritti di seguito.
I vecchi metodi
Scarta
Inizialmente l'ho abilitato con l'opzione di eliminazione del comando mount. La configurazione viene inserita in /etc/fstab file per ogni file system.
# cat /etc/fstab
UUID=3453g54-6628-2346-8123435f /home xfs defaults,discard 0 0
L'opzione di scarto abilita il TRIM online automatico. Di recente si è discusso se questo sia il metodo migliore a causa di possibili impatti negativi sulle prestazioni. L'utilizzo di questa opzione provoca l'avvio di un TRIM ogni volta che vengono scritti nuovi dati sull'azionamento. Ciò potrebbe introdurre attività aggiuntiva che interferisce con le prestazioni di archiviazione.
Cron
Ho rimosso l'opzione di eliminazione da fstab file. Quindi ho creato un lavoro cron per chiamare il comando su base pianificata.
# crontab -l
@midnight /usr/bin/trim
Questo è il metodo che ho usato più di recente sui miei sistemi Ubuntu Linux fino a quando non ho scoperto un altro modo.
Un nuovo servizio TRIM
Di recente ho scoperto che esiste un servizio systemd per TRIM. Fedora lo ha introdotto nella sua distribuzione nella versione 30 e, sebbene non sia abilitato per impostazione predefinita nelle versioni 30 e 31, dovrebbe essere nella versione 32. Se stai lavorando su Fedora Workstation 31 e vuoi iniziare a usarlo funzione, puoi abilitarla molto facilmente. Ti mostrerò anche come testarlo di seguito. Questo servizio non è esclusivo di Fedora. L'esistenza e lo stato dipenderanno da una base di distribuzione individuale.
Test
Mi piace prima testare, per capire meglio cosa sta succedendo dietro le quinte. Lo faccio aprendo un terminale ed emettendo il comando che il servizio è configurato per chiamare.
/usr/sbin/fstrim --fstab --verbose --quiet
Il –aiuto argomento a fstrim descriverà questi e altri argomenti.
$ sudo /usr/sbin/fstrim --help
Usage:
fstrim [options] <mount point>
Discard unused blocks on a mounted filesystem.
Options:
-a, --all trim all supported mounted filesystems
-A, --fstab trim all supported mounted filesystems from /etc/fstab
-o, --offset <num> the offset in bytes to start discarding from
-l, --length <num> the number of bytes to discard
-m, --minimum <num> the minimum extent length to discard
-v, --verbose print number of discarded bytes
--quiet suppress error messages
-n, --dry-run does everything, but trim
-h, --help display this help
-V, --version display version
Quindi, ora posso vedere che il servizio systemd è configurato per eseguire il trim su tutti i filesystem montati supportati nel mio /etc/fstab file –fstab e stampa il numero di byte scartati –verbose ma elimina tutti i messaggi di errore che potrebbero verificarsi –silenzioso . Conoscere queste opzioni è utile per il test. Ad esempio, posso iniziare con quella più sicura, che è la corsa a secco. Lascerò anche l'argomento tranquillo in modo da poter determinare se si verificheranno errori con la configurazione dell'unità.
$ sudo /usr/sbin/fstrim --fstab --verbose --dry-run
Questo mostrerà semplicemente cosa è il fstrim il comando funzionerà in base ai file system che trova configurati nel tuo /etc/fstab file.
$ sudo /usr/sbin/fstrim --fstab --verbose
Questo ora invierà l'operazione TRIM all'unità e riporterà il numero di byte scartati da ciascun file system. Di seguito è riportato un esempio dopo la mia recente installazione di Fedora su un nuovo SSD NVME.
/home: 291.5 GiB (313011310592 bytes) trimmed on /dev/mapper/wkst-home
/boot/efi: 579.2 MiB (607301632 bytes) trimmed on /dev/nvme0n1p1
/boot: 787.5 MiB (825778176 bytes) trimmed on /dev/nvme0n1p2
/: 60.7 GiB (65154805760 bytes) trimmed on /dev/mapper/wkst-root
Abilita
Fedora Linux implementa il servizio timer di sistema, programmato per l'esecuzione su base settimanale. Per verificare l'esistenza e lo stato attuale, esegui systemctl status .
$ sudo systemctl status fstrim.timer
Ora abilita il servizio.
$ sudo systemctl enable fstrim.timer
Verifica
Quindi puoi verificare che il timer sia abilitato elencando tutti i timer.
$ sudo systemctl list-timers --all
La riga seguente si riferisce a fstrim.timer apparirà. Nota che il timer attiva effettivamente fstrim.service . Questo è da dove viene l'effettivo fstrim è chiamato. I campi relativi al tempo mostrano n/d perché il servizio è stato appena abilitato e non è ancora stato eseguito.
NEXT LEFT LAST PASSED UNIT ACTIVATES
n/a n/a n/a n/a fstrim.timer fstrim.service
Conclusione
Questo servizio sembra il modo migliore per eseguire TRIM sulle tue unità. È molto più semplice che dover creare la propria voce crontab per chiamare il fstrim comando. È anche più sicuro non dover modificare fstab file. È stato interessante osservare l'evoluzione della tecnologia di archiviazione a stato solido ed è bello sapere che sembra che Linux si stia muovendo verso un modo standard e sicuro per implementarlo.