Confusione sull'utilizzo del disco: 10G mancante sulla partizione home Linux su SSD


15

Linux Mint mi dice che ho solo 622 MB di spazio libero su disco ma ci dovrebbero essere ancora alcuni gigabyte.

Guardando le partizioni mi viene detto che ci sono circa dieci gigabyte inutilizzati. Ho cercato su Google il problema e non ho trovato una soluzione, ma ho trovato il suggerimento che avrei dovuto controllare l'utilizzo del disco df -h.

sudo df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p8  189G  178G  622M 100% /home

L'output non ha alcun senso per me: la differenza tra Sizee Usedè di 11 GB, ma viene visualizzato solo 622Mcome Disponibile.

L'SSD non è vecchio, quindi non mi aspetto una tale discrepanza.

Cosa dovrei fare?


3
come ha commentato @Kusalananda, non dovresti solo chiederti perché non ottieni quei 10 GB (che spero di aver affrontato correttamente nella mia risposta), ma anche perché stai usando la maggior parte dello spazio in / home. Se sai perché (ad esempio: archivia molti file multimediali ecc.) Va bene, in caso contrario, dovresti preoccuparti, con una potenziale pulizia che restituisce più di 10 GB di spazio. Quindi cosa sarebbe?
AB

"Guardando le partizioni mi è stato detto che ci sono circa dieci gigabyte inutilizzati." - Dove ti è stato detto?
ctrl-alt-delor,

2
@ ctrl-alt-delor dfdall'output - Dimensione: 189G, Usato: 178G
billyjmc

@ ctrl-alt delor, ho ottenuto la cifra 10 GB da gparted - e successivamente 11G dall'output di df, come correttamente dedotto da billyjmc.
tobiornottobi,

Risposte:


22

Se il filesystem è ext4, ci sono blocchi riservati, principalmente per aiutare la gestione e aiutare ad evitare la frammentazione e disponibili solo per l'utente root. Per questa impostazione, può essere modificato dal vivo usando tune2fs (non tutte le impostazioni possono essere gestite in questo modo quando il filesystem è montato):

-m percentuale di blocchi riservati

Imposta la percentuale del filesystem che può essere allocata solo da processi privilegiati. La prenotazione di un certo numero di blocchi di filesystem per l'uso da parte di processi privilegiati viene eseguita per evitare la frammentazione del filesystem e per consentire ai demoni di sistema, come syslogd (8), di continuare a funzionare correttamente dopo che è stato impedito ai processi non privilegiati di scrivere sul filesystem. Normalmente, la percentuale predefinita di blocchi riservati è del 5%.

Quindi, se vuoi ridurre la prenotazione all'1% (~ 2GB) ottenendo così l'accesso a ~ 8GB di spazio non più riservato, puoi farlo:

sudo tune2fs -m 1 /dev/nvme0n1p8

Nota: l' -mopzione accetta effettivamente un numero decimale come parametro. È possibile utilizzare -m 0.1per prenotare solo circa ~ 200 MB (e accedere alla maggior parte di quelli precedentemente non disponibili da 10 GB). Puoi anche usare l' -ropzione invece per prenotare direttamente per blocchi. Probabilmente non è consigliabile avere 0 blocchi riservati.


3
L'utente non sta "tornando" 8 GB. Stanno guadagnando 8 GB in più da spendere. Sarebbe meglio rintracciare ciò che sta utilizzando tutto lo spazio su disco e quindi eventualmente pulirlo, se appropriato, oppure spostarlo altrove o espandere la partizione.
Kusalananda

1
@Kusalananda cambierò il vocabolario. Per quanto riguarda l'utilizzo, avrei bisogno del feedback di OP. La domanda non ha mai lasciato intendere che c'era un utilizzo elevato sconosciuto, mancando solo 10 GB.
AB

1
Una risposta molto buona e utile, grazie. Il 5% sembra corrispondere molto chiaramente ai 10 gigabyte mancanti. Non sono preoccupato di utilizzare così tanto spazio su disco nel complesso e posso ancora aumentare la mia partizione. :)
tobiornottobi,

4
La tua risposta è sicuramente corretta, ma potrebbe valere la pena notare che il valore dello spazio riservato alla radice in questo caso non è enorme. Questo è /home, e riservare spazio per root non è così importante come lo è per altre parti del file system (ad es. Per garantire che i log di sistema possano ancora essere scritti). Inoltre, poiché si tratta di un SSD, la prevenzione della frammentazione potrebbe non avere la priorità che ha sulla rotazione dei dischi di metallo.
marcelm

@marcelm Questo ha senso per me. Ma è ancora utile su una partizione / home su un SSD o è solo uno spreco di spazio? Consiglieresti di ridurre lo spazio riservato alla radice all'1%?
Tobiornottobi,

8

I file eliminati possono anche contribuire allo "spazio mancante"

lsof | grep deleted | grep /home

restituisce questo output per me

chrome    11181           criggie   15u      REG              254,0   
4194304  50651663 /home/criggie/.config/google-chrome/BrowserMetrics/BrowserMetrics-5D0236AF-2BAD.pma (deleted)

Il che mostra che Chrome in esecuzione come PID 11181 ha aperto il file BrowserMetrics, quindi lo ha eliminato e ha ancora aperto il filehandle. Ciò significa che il file è invisibile in un elenco di directory, ma occupa ancora spazio su disco.

Perché i programmi fanno questo? Al termine dell'esecuzione del file binario, il sistema operativo rilascerà l'handle del file aperto e il file sul disco sparirà, senza il rischio di lasciare in giro un file temporaneo non aggiornato.

Quello che non riesco a vedere è quanto è grande l'utilizzo del disco di quel file.


2
La maggior parte dei programmi ben scritti non dovrebbe farlo. È un bug, e dovrebbe essere segnalato, è solo che la maggior parte di questi bug oscuri non si presentano fino a quando non si è in una fase di ottimizzazione e, se è una tantum, potrebbe addirittura non essere rilevata durante i test. Si noti che potrebbe esserci un motivo specifico per cui lo stanno facendo, potrebbe esserci una logica di cui non sono a conoscenza qui per tenere la maniglia aperta così a lungo.
Drunken Code Monkey,

4
@DrunkenCodeMonkey Dude - è Chrome ... hai perfettamente ragione.
Criggie,

4
@DrunkenCodeMonkey, molti programmi ben scritti lo fanno. Il modello open-delete-close per la creazione di file temporanei su * nix è quasi universale, perché garantisce che il file verrà eliminato all'uscita dal programma, indipendentemente da come esce: terminazione normale, arresto anomalo, interruzione in caso di esaurimento della memoria, interruzione per mancanza di corrente, ecc.
Mark

3
@DrunkenCodeMonkey quindi, cosa succede se il programma non viene mai eseguito con esso?
leftaroundabout

3
@DrunkenCodeMonkey: il modello è open-delete- work -close. Se il programma sta ancora facendo qualcosa con il contenuto del file temporaneo (ad es. Utilizzandolo come cache su disco o registrando i dati di telemetria in esso), ovviamente deve tenerlo aperto. (Ovviamente, è anche possibile che si tratti di un handle di file non chiuso non aggiornato che il programma avrebbe dovuto chiudere ma non ha fatto. Ma dato che esiste un solo file di questo tipo e che non ci sono altre evidenti indicazioni di una perdita di risorse, Vorrei iniziare con l'ipotesi che il file sia probabilmente tenuto aperto di proposito.)
Ilmari Karonen,
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.