## 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:{{{
#