Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati


Guida verificata con Ubuntu: 20.04 22.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Il TRIM è una funzionalità che consente al sistema operativo di segnalare al 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 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.

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 BTRFS .

Per sapere quale tipo di filesystem è in uso sulla partizione di sistema, digitare in un 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 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.

  1. Installare il pacchetto hdparm.

  2. Individuare il drive in uso (ad esempio /dev/sda, /dev/sdb ecc.).

  3. Digitare il comando nel terminale:

    sudo hdparm -I /dev/sdx | grep "TRIM supported"

    sostituendo «sdx» con il nome del disco, trovato precedentemente.

  4. 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 systemd.
È possibile ottenere informazioni utili tramite i comandi descritti di seguito.

Presenza del servizio

Digitare nel 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 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 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 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.

  1. Creare con i privilegi di amministrazione la cartella /etc/systemd/system/fstrim.timer.d.

  2. Creare con i privilegi di amministrazione e con un editor di testo il file /etc/systemd/system/fstrim.timer.d/override.conf.

  3. Inserire nel file il seguente testo:

    [Timer]
    OnCalendar=
    OnCalendar=daily
  4. Riavviare il sistema.

Per verificare che sia stato impostato il TRIM giornaliero digitare nel 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 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

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)

Questo metodo è alternativo a quello programmato con systemd. Se attivato uno si raccomanda di disattivare l'altro.

  1. Aprire con un editor di testo e i privilegi amministrativi il file /etc/cron.daily/trim.

  2. Incollare all'interno le seguenti righe:

    #!/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 partizione separata:

    fstrim -v /home >> $LOG
  3. Salvare le modifiche e rendere lo script eseguibile digitando nel terminale il seguente comando:

    sudo chmod +x /etc/cron.daily/trim

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.

Sono disponibili strumenti di terze parti come 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 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 questa guida.

TRIM all'avvio tramite /etc/rc.local (non raccomandato)

Consultare questa guida.

Partizioni criptate

Per motivi di sicurezza, con le impostazioni di default di LUKS, il TRIM non viene eseguito su partizioni criptate.

È possibile verificare questa situazione nel proprio sistema con lo strumento lsblk relativamente alla partizioni interessate, come descritto in questo paragrafo.

Occorre pertanto assicurarsi che sia opportunamente configurato il file in cui è riportata la tabella dei device criptati. Seguire le istruzioni seguenti:

  1. Aprire con un editor di testo e i privilegi di amministrazione il file /etc/crypttab.

  2. Il file sarà simile al seguente:

    #<target name>    <source device>            <key file>  <options>
    var  UUID=01234567-89ab-cdef-0123-456789abcdef  none  luks,discard
  3. 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.

  4. Aggiungere l'opzione «discard» come nell'esempio precedente, quindi salvare le modifiche e chiudere il file.

  5. Digitare nel terminale il seguente comando:

    sudo update-initramfs -u -k all

Ulteriori risorse


CategoryHardware CategoryAmministrazione