Visualizza lo spazio libero del filesystem disponibile per l'utente root


12

Per impostazione predefinita, Linux riserva una parte di un filesystem per l'utente root, almeno su ext4 (per impedire agli utenti ordinari di riempire completamente l'unità e arrestare il sistema in modo anomalo, e di ridurre la frammentazione). Tuttavia, dfvisualizza solo lo spazio libero apparente agli utenti regolari (anche quando eseguito come root). Come si visualizza lo spazio "reale" libero, accessibile alla radice?

Risposte:


6

Non sono sicuro che ci sia uno strumento integrato, ma supponendo che tu abbia lasciato il riservato al 5% predefinito, questo ti dirà:

df / | grep dev | cut -f 3,6 -d\  | awk '{print ($1*.05)+$2}'

dfil root, grepper la riga con dev al suo interno (per rimuovere l'intestazione), cutla dimensione e i campi disponibili, quindi usa uno awkscript per calcolare il 5% della dimensione del disco aggiunta a quella disponibile.

È possibile estrarre la prenotazione effettiva tune2fs -l <device>e combinarla con la precedente in uno script.


2
A destra, quindi il seguente comando ci dirà la quantità di spazio di partizione riservata agli utenti privilegied: tune2fs -l /dev/DEVICE | egrep "Block count|Reserved block count". Ad esempio per la mia partizione "buffer multimediale": Block count: 2621440e Reserved block count: 128449: 4,9% dei blocchi disponibili (impostazione conservativa per aiutare a prevenire la frammentazione).
tuk0z,

Non è necessario utilizzare il cutcomando: è possibile selezionare awkdirettamente i campi . In effetti il cutcomando non ha funzionato per me come previsto. Comunque, ho dato un'altra risposta che dovrebbe dare una risposta più precisa.
jarno,

1
Eseguire tune2fs -m <percentage> <device-name>per modificare lo spazio su disco riservato solo per l'utilizzo root.
luka5z,

1
Ispirato da quanto sopra, ho sudo tune2fs -l $(df | grep -E '/$' | cut -d\ -f 1) | egrep "Reserved block count|Block size" | paste -sd\ | awk '{print ($4 * $7 / ( 1024 * 1024 ) ), "MB"}'
pensato

Questa non è una risposta portatile. Controlla di seguito la risposta di cui hai bisogno (spoiler: tune2fs /dev/sda1o anche megliostat -f -c '%a blocks free and %f blocks free for root (%S bytes per block)' /
trs

17

Usando il comando tune2fs (che si trova in / sbin / tune2fs ), puoi facilmente determinare lo spazio riservato : (e altro!)

tune2fs -l /dev/sda1

Fornirò le informazioni del mio sistema per riferimento, rimuoverò le linee estranee non importanti per questa domanda:

L'intestazione ... e il nome del volume, etichetta tutte le mie unità, le rendono facili da identificare se necessario.

tune2fs 1.42.4 (12-Jun-2012)
Filesystem volume name:   xenon
Last mounted on:          /
...

VOGLIAMO VERAMENTE che questo sia "pulito" mentre il sistema è in esecuzione. Onesto!

Filesystem state:         clean

È qui che iniziano le informazioni sulla capacità di archiviazione dei dati:

Qui puoi vedere che ho 121.179.648 blocchi in totale ... con una dimensione di blocco di 4K (4096), che si moltiplica per un numero elevato (462-ish GB). (La dimensione del blocco è indicata di seguito)

Block count:              121179648

E i blocchi riservati ... guardando il numero sopra e il numero sotto .. dovresti essere in grado di capire relativamente rapidamente che ho riservato l'1%. In questo caso (4.62 GB)

Reserved block count:     1211796

Quanto spazio libero è attualmente disponibile? Giusto qui!

Free blocks:              104090586
...

E tutte le dimensioni del blocco importanti. Utile per moltiplicarsi.

Block size:               4096
...

Queste righe dicono CHI i blocchi sono riservati per ... utente 0, root, in questo caso

Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
...

Ci sono molte più informazioni disponibili qui, ma questo dovrebbe darti la possibilità di accertare rapidamente quanto è disponibile e quanto più è riservato per root. Matematica semplice.

Spero che sia di aiuto. Ricorda ... le pagine man sono i tuoi amici.


2

Questo visualizza lo spazio libero in byte nella partizione relativa a "/ percorso"

printf '%s' $(($(stat -f --format='%f*%S' /path)))

Non è necessario essere superutente per eseguirlo.

A proposito, non capisco bene qual è la differenza tra

% s dimensione del blocco (per trasferimenti più veloci)

% S dimensione del blocco fondamentale (per il conteggio dei blocchi)

in uso di stat.


Fantastico: questo account per lo spazio riservato a root?
Paul,

@Paul sì, è incluso
jarno

L'output è effettivamente una somma, quindi è possibile reindirizzare l'output bcper ottenere il conteggio dei byte o persino utilizzare --format='%f*%S/1024/1024/1024' | bcper ottenere kilobyte / megabyte / gigabyte a seconda di quante divisioni si scelgono.
Paolo,

@Paul, lo definirei un prodotto. I prefissi binari sono chiamati kibibyte, mebibytes e gibibytes, rispettivamente. L' espansione aritmetica circostante $(( ... ))esegue il calcolo, ma risulta solo la parte intera del quoziente (se si aggiunge la divisione). O vuoi dire che la tua shell non supporta l'espansione aritmetica?
jarno,

@Paul Ma, se usi bc, invece, potresti ottenere il quoziente con precisione arbitraria, se ne hai bisogno.
jarno,
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.