fstrim ritaglia oltre la metà della dimensione della partizione anche se la partizione è montata con scarto


8

Quando ho installato il mio SSD ho appena montato discarde non ho sudato. Tuttavia oggi stavo leggendo i pro e i contro dell'utilizzo di fstriminvece e ho deciso di eseguire il programma per farmi un'idea di quanto tempo sarebbe effettivamente necessario (sempre con le mie partizioni montate discard). Il comando ha richiesto diversi minuti sia sulla mia partizione radice che su quella domestica. Per la mia partizione home ho usato -ve ottenuto questo:

$ sudo fstrim -v /home
/home: 137494052864 bytes were trimmed

Questo è più della quantità di spazio libero sulla partizione!

$ df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       206G   78G  118G  40% /home

Le esecuzioni successive terminano in meno di un secondo, ad esempio:

$ sudo fstrim -v /home
/home: 0 bytes were trimmed

Sicuramente se ho sempre avuto la partizione montata discard, fstrimnon dovrei tagliare una grande quantità di dati del genere? L' discardopzione è definitivamente abilitata, ecco le fstabrighe pertinenti :

UUID=xxxxxxxx...    /          ext4   noatime,discard,errors=remount-ro  0      1
UUID=xxxxxxxx...    /home      ext4   noatime,discard,errors=remount-ro  0      2

E mountlinee di uscita:

/dev/disk/by-uuid/xxxxxxxx... on / type ext4 (rw,noatime,discard,errors=remount-ro,stripe=128,data=ordered)
/dev/sda2 on /home type ext4 (rw,noatime,discard,errors=remount-ro,stripe=128,data=ordered)

L'SSD è un TOSHIBA THNSNS256GMCP. Perché succede?

Risposte:


12

Due cose qui:

  1. fstrimtaglia tutti i dati non allocati nel filesystem (beh, non proprio tutti i dati, solo i blocchi di dati che non sono allocati, non penso che le parti inutilizzate della tabella degli inode o le parti dei blocchi non completamente utilizzati siano tagliato), indipendentemente dal fatto che discardsia utilizzato o meno. fstrimnon può sapere quale di questi blocchi non allocati sia stato "tagliato" o non già in passato, ma (in realtà il kernel, tutto il fstrimlavoro è svolto nel FITRIM ioctl) tiene comunque traccia di quale gruppo di blocchi sono stati tagliati e non li ritaglieranno di nuovo se da allora non c'è stata alcuna allocazione in quel gruppo di blocchi, a meno che tu non stia richiedendo un FITRIM con una lunghezza minima minima (dal controllo del codice ext4, potrebbe essere diverso per altri file system) che spiega perché ottieni 0 alla prossima esecuzione.

    Nota che non è dannoso tagliare un blocco che è già stato tagliato. Questo è solo dire nuovamente all'SSD che può fare tutto ciò che vuole con esso (come cancellarlo in modo che possa essere pronto per essere riutilizzato per qualcos'altro).

  2. In dfuscita, il valore "disponibile" non prende in considerazione lo spazio che è "riservato" per root, si noterà che 206-76 è 130G, non è 118g. 12G (circa il 5%) sono riservati. Vedi tunefs -mper cambiare quanto è riservato.

1
Quindi se fstrimnon sa cosa è già stato tagliato, perché riporta 0 byte la seconda volta? Sicuramente questo deve provenire dal disco, ma allora perché dovrebbe segnalare un trim così grande la prima volta? Sicuramente il disco sarebbe indipendente dal fatto discardche trimfosse o fosse stato usato.
Graeme,

1
@Graeme, argh, buon punto. fstrim, usa lo ioctl FITRIM, ed è il kernel che fa tutto il lavoro e riporta il risultato a fstrim. Suppongo che il kernel tenga traccia di ciò che è già stato tagliato, ma può farlo solo da quando è stato avviato. Investigherà e aggiornerà la risposta.
Stéphane Chazelas,

1
Ok, sì, il kernel deve tenere traccia di ciò che è stato tagliato dopo l'avvio. Se riavvio e ne faccio un altro fstrim, ottengo all'incirca lo stesso output.
Graeme,

@Graeme, vedi la mia modifica.
Stéphane Chazelas,

1
fstrimemette solo l'appropriato ioctl, tutto il resto è una decisione del filesystem e i filesystem si comportano in modo molto diverso. ext4cerca di evitare di tagliare le stesse cose più e più volte, xfsnon gli importa e taglia tutto ciò che è gratuito, altri possono fare altre cose - se addirittura lo supportano ... se è imprevedibile, lamentati del filesystem.
frostschutz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.