## page was renamed from AmministrazioneSistema/Trim ## page was renamed from LucaGambardella/Prove6 #format wiki #LANGUAGE it <
> <> <> = Introduzione = Il '''[[http://it.wikipedia.org/wiki/TRIM | TRIM]]''' è una funzionalità che consente al sistema operativo di segnalare al [[https://it.wikipedia.org/wiki/Unit%C3%A0_a_stato_solido|drive a stato solido (SSD)]] che blocchi di dati non sono più considerati in uso e che, quindi, possono essere liberati definitivamente.<
> Lo scopo è di evitare inutili cicli di scrittura che tendono a logorare le celle del drive (chiamato anche impropriamente disco). Se non si utilizza il '''TRIM''', con il tempo, la velocità del disco diminuisce e le celle del drive vengono sovrascritte in modo disomogeneo. Nella maggior parte dei casi, __non__ è necessaria alcuna modifica al sistema per attivare il '''TRIM''', poiché è pre-abilitato in '''Ubuntu 14.04 LTS''' e versioni successive (con cadenza settimanale). Inoltre in molti SSD viene preimpostato a livello hardware (ad esempio nei modelli recenti di marca Intel e Samsung). Pertanto questa guida è rivolta principalmente: * alla verifica della presenza del servizio e al suo monitoraggio; * in presenza di vecchi SSD o di modelli specifici, all'attivazione del TRIM con particolari accorgimenti; * ad altri casi vari (esigenze particolari del sistema o di eventuali software o dell'utente, per scopi di test ecc.). <> = Requisiti hardware e software = Per conoscere la capacità di esecuzione del TRIM digitare in un [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ lsblk -D }}} L'output sarà simile al seguente:{{{ NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO sda 0 512B 2G 0 ├─sda1 0 512B 2G 0 ├─sda2 0 512B 2G 0 └─sda3 0 512B 2G 0 sdb 0 4K 128M 0 ├─sdb1 0 4K 128M 0 └─sdb2 0 4K 128M 0 }}} Se i valori nelle colonne `DISC-GRAN` e `DISC-MAX` sono diversi da zero, allora il TRIM è supportato per quel drive e/o partizione. {{{#!wiki note Attualmente la maggior parte degli SSD in commercio e dei sistemi supportati rispettano i requisiti per eseguire il '''TRIM'''. Qualora lo si ritenga necessario, è comunque possibile verificare tutti i requisiti tramite le istruzioni riportate di seguito. }}} == Filesystem == Linux supporta il '''TRIM''' su diversi tipi di filesystem, fra cui Ext4 (di default su Ubuntu) e [[Hardware/DispositiviPartizioni/Btrfs|BTRFS]] . Per sapere quale tipo di filesystem è in uso sulla partizione di sistema, digitare in un [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ cat /etc/mtab | grep -E 'ext4|btrfs' }}} Se non sono presenti partizioni nei suddetti filesystem, non verrà restituito alcun output. == Kernel == Il '''TRIM''' può essere abilitato su tutte le versioni del kernel Linux attualmente supportate. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{ uname -r }}} Se la versione è pari o successiva alla 2.6.33, allora il TRIM potrà essere abilitato. == Supporto hardware == Per gli SSD SATA è disponibile il programma '''hdparm'''. 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://hdparm|hdparm]]. 0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni|Individuare il drive]] in uso (ad esempio `/dev/sda`, `/dev/sdb` ecc.). 0. Digitare il comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo hdparm -I /dev/sdx | grep "TRIM supported" }}} sostituendo «`sdx`» con il nome del disco, trovato precedentemente. 0. L'output restituito sarà simile al seguente:{{{ Data Set Management TRIM supported (limit 8 blocks) }}} Al contrario, se il '''TRIM''' non è supportato, non verrà restituito alcun output. = TRIM settimanale (verifica e monitoraggio) = L'esecuzione automatica del '''TRIM''' con cadenza settimanale è affidata dal sistema a '''[[AmministrazioneSistema/Systemd|systemd]]'''.<
> È possibile ottenere informazioni utili tramite i comandi descritti di seguito. == Presenza del servizio == Digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ systemctl list-timers --all }}} Se presente il servizio relativo al TRIM, l'output restituirà una lista di cui una riga sarà simile alla seguente:{{{ Mon 2022-07-11 00:00:00 CEST 2 days left Mon 2022-07-04 00:00:25 CEST 4 days ago fstrim.timer fstrim.service }}} == Abilitare il servizio == Digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ systemctl is-enabled fstrim.timer }}} Se il servizio è abilitato l'output sarà il seguente:{{{ enabled }}} In caso contrario è possibile abilitarlo con il comando:{{{ sudo systemctl enable fstrim.timer }}} oppure aggiungendo l'opzione `--now` per anticiparne la partenza:{{{ sudo systemctl enable --now fstrim.timer }}} == Stato del servizio == Digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ systemctl status fstrim.timer }}} L'output conterrà al suo interno diverse informazioni e sarà simile al seguente:{{{ ● fstrim.timer - Discard unused blocks once a week Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled) Active: active (waiting) since Fri 2022-07-08 10:02:29 CEST; 1h 48min ago Trigger: Mon 2022-07-11 00:00:00 CEST; 2 days left Triggers: ● fstrim.service Docs: man:fstrim }}} == Visualizzare il log == Digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo journalctl -u fstrim.service }}} L'output restituirà informazioni relative alle ultime esecuzioni del TRIM (tra cui data e ora di esecuzione, partizioni coinvolte, quantità di dati). = TRIM giornaliero = In alcuni casi potrebbe tornare utile eseguire il TRIM giornalmente anziché ogni settimana. A tal fine eseguire i passaggi descritti di seguito. 0. [[https://wiki.ubuntu-it.org/AmministrazioneSistema/ComandiBase#mkdir|Creare]] con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] la cartella `/etc/systemd/system/fstrim.timer.d`. 0. Creare con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/systemd/system/fstrim.timer.d/override.conf`. 0. Inserire nel file il seguente testo:{{{ [Timer] OnCalendar= OnCalendar=daily }}} 0. Riavviare il sistema. Per verificare che sia stato impostato il TRIM giornaliero digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ systemctl cat fstrim.timer }}} L'output sarà simile al seguente:{{{ # /lib/systemd/system/fstrim.timer [Unit] Description=Discard unused blocks once a week Documentation=man:fstrim ConditionVirtualization=!container [Timer] OnCalendar=weekly AccuracySec=1h Persistent=true [Install] WantedBy=timers.target # /etc/systemd/system/fstrim.timer.d/override.conf [Timer] OnCalendar= OnCalendar=daily }}} dove nelle ultime righe dovrebbero comparire le nuove impostazioni. Per ripristinare il TRIM settimanale sarà sufficiente [[AmministrazioneSistema/ComandiBase#rm_e_rmdir|eliminare]] il file creato in precedenza con il comando:{{{ sudo rm -v /etc/systemd/system/fstrim.timer.d/override.conf }}} infine riavviare il sistema. = TRIM manuale = È inoltre possibile lanciare il comando relativo al '''TRIM''' manualmente. Può tornare utile in alcuni casi (SSD esterni, qualora non si sia certi che il TRIM venga eseguito regolarmente, a scopo di test, ecc.). È possibile eseguire il comando '''ftrim''' sulla partizione di sistema digitando il seguente comando:{{{ sudo fstrim -v / }}} In alternativa è possibile eseguirlo su tutte le partizioni montate, e che lo supportano, digitando:{{{ sudo fstrim -av }}} L'output sarà simile al seguente:{{{ /: 8,9 GiB (9603432448 bytes) trimmed }}} {{{#!wiki important Attendere il termine dell'operazione (a volte potrebbe impiegare diverso tempo). }}} Per conoscere nel dettaglio la sintassi del comando e tutte le altre opzioni digitare:{{{ man fstrim }}} = TRIM giornaliero tramite cron (facoltativo) = {{{#!wiki important Questo metodo è alternativo a quello programmato con systemd. Se attivato uno si raccomanda di disattivare l'altro. }}} 0. Aprire con un [[Ufficio/EditorDiTesto| editor di testo]] e i [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|privilegi amministrativi]] il file `/etc/cron.daily/trim`. 0. Incollare all'interno le seguenti righe:{{{ #!/bin/sh #!/bin/sh LOG=/var/log/trim.log echo "*** $(date -R) ***" >> $LOG fstrim -v / >> $LOG }}} Se presenti altre partizioni occorre aggiungere ulteriori righe seguendo la sintassi:{{{ fstrim -v /punto_di_mount >> $LOG }}} Ad esempio se per `/home` è dedicata una [[Hardware/DispositiviPartizioni/SpostareHomePartizioneSeparata|partizione separata]]:{{{ fstrim -v /home >> $LOG }}} 0. Salvare le modifiche e rendere lo script eseguibile digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ sudo chmod +x /etc/cron.daily/trim }}} {{{#!wiki note Nelle vecchie versioni di Ubuntu con TRIM abilitato nativamente (es: Ubuntu 14.04 su filesystem ext4), lo script che lo esegue settimanalmente tramite '''crontab''' è presente nel file `/etc/cron.weekly/fstrim`.<
> Anche se tecnicamente possibile, in generale, si sconsiglia di eseguire lo script giornalmente spostando il file in questione nella cartella `/etc/cron.daily`. }}} {{{#!wiki tip Sono disponibili strumenti di terze parti come [[https://chmatse.github.io/SSDcronTRIM/|SSDcronTRIM]]. Quest'ultimo è uno script che controlla lo stato del drive ed esegue il TRIM solo quando necessario. Per maggiori informazioni consultare il sito del progetto. }}} = TRIM tramite opzione discard in fstab (non raccomandato) = Questo metodo, molto utilizzato in passato, attualmente non è più raccomandato poiché potrebbe comportare un calo delle prestazioni. Per maggiori informazioni consultare [[Hardware/DispositiviPartizioni/OttimizzareSSD#Opzione_discard_in_.2Fetc.2Ffstab|questa guida]]. Se l'opzione fosse già in uso si raccomanda di disabilitarla. Per maggiori informazioni sulla gestione del file di configurazione `/etc/fstab` consultare [[AmministrazioneSistema/Fstab|questa guida]]. = TRIM all'avvio tramite /etc/rc.local (non raccomandato) = Consultare [[Hardware/DispositiviPartizioni/OttimizzareSSD#TRIM_in_.2Fetc.2Frc.local|questa guida]]. = Partizioni criptate = Per motivi di sicurezza, con le impostazioni di default di [[https://it.wikipedia.org/wiki/Linux_Unified_Key_Setup|LUKS]], il '''TRIM''' non viene eseguito su partizioni criptate. {{{#!wiki tip È possibile verificare questa situazione nel proprio sistema con lo strumento '''lsblk''' relativamente alla partizioni interessate, come descritto in questo [[#requisiti|paragrafo]]. }}} Occorre pertanto assicurarsi che sia opportunamente configurato il file in cui è riportata la tabella dei device criptati. Seguire le istruzioni seguenti: ##0. Aprire con un [[Ufficio/EditorDiTesto| editor di testo]] e i [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|privilegi amministrativi]] il file `/etc/default/grub`. ## 0. Modificare la riga:{{{ ##GRUB_CMDLINE_LINUX="" ##}}} in {{{ ##GRUB_CMDLINE_LINUX="allow-discards root_trim=yes" ##}}} ## 0. Salvare il file e [[AmministrazioneSistema/Grub#Comandi|aggiornare]] '''Grub''' con il comando:{{{ ##sudo update-grub ##}}} 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e i [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|privilegi di amministrazione]] il file `/etc/crypttab`. 0. Il file sarà simile al seguente:{{{ # var UUID=01234567-89ab-cdef-0123-456789abcdef none luks,discard }}} 0. Qualora sia già presente l'opzione «`discard`», non occorre eseguire alcuna operazione e si potrà chiudere l'editor. Se al contrario l'opzione fosse assente, continuare con i passaggi successivi. 0. Aggiungere l'opzione «`discard`» come nell'esempio precedente, quindi salvare le modifiche e chiudere il file. 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ sudo update-initramfs -u -k all }}} = Ulteriori risorse = * [[https://en.wikipedia.org/wiki/Trim_%28computing%29|Pagina enciclopedica]] * [[https://wiki.archlinux.org/title/Solid_state_drive#TRIM | Wiki Arch]] * [[https://en.opensuse.org/SDB:SSD_discard_(trim)_support| Wiki openSUSE]] * [[Hardware/DispositiviPartizioni/OttimizzareSSD|Ottimizzare SSD]] * [[https://askubuntu.com/questions/1034169/is-trim-enabled-on-my-ubuntu-18-04-installation|TRIM su askubuntu]] ---- CategoryHardware CategoryAmministrazione