Apr 262011
 

hard-diskCome amministratore di sistema, ma anche come utente comune sul mio PC, uno dei problemi più comuni è il riempimento al 100% di un filesystem.
Quindi, in questo articolo vedremo due comandi che ci possono aiutare a tenere sotto controllo o controllare lo spazio utilizzato in tutti i filesystem e nelle sue directory.

df : riporta lo spazio disco usato dal file system

du: stima l’uso dello spazio occupato da ogni elemento specificato


DF

Uso base

df [OPZIONE...] [NOME_FILE...]

descrizione

Se [NOME_FILE...] non viene dato df visualizza le seguenti informazioni per ogni filesystem che è stato attivato con mount: spazio complessivo, spazio occupato, spazio libero ed uso in %.

Se invece è presente [NOME_FILE...] le stesse informazioni vengono fornite per i filesystem contenenti i file specificati.

Opzioni :

Le opzioni più utilizzate per df sono -k che mostra i valori di uscita in kilobyte (questo di solito è l’impostazione predefinita), -h che stampa le dimensioni in formato leggibile (per esempio, 1K 234M 2G) e -i che da informazioni sugli inode.

Esempi:

#df
 
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/root_vg-root_lv
                       4128448    400936   3517800  11% /
/dev/mapper/root_vg-home_lv
                        516040     17568    472260   4% /home
/dev/mapper/root_vg-tmp_lv
                       4128448    164316   3754420   5% /tmp
/dev/mapper/root_vg-usr_lv
                       8256952   1240372   6597152  16% /usr
/dev/mapper/root_vg-var_lv
                       4128448    490632   3428104  13% /var
/dev/mapper/root_vg-var_log_lv
                       8256952    320836   7516740   5% /var/log

Stessa macchina ma con l’opzione -h:

#df -h
 
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/root_vg-root_lv
                      4.0G  392M  3.4G  11% /
/dev/mapper/root_vg-home_lv
                      504M   18M  462M   4% /home
/dev/mapper/root_vg-tmp_lv
                      4.0G  161M  3.6G   5% /tmp
/dev/mapper/root_vg-usr_lv
                      7.9G  1.2G  6.3G  16% /usr
/dev/mapper/root_vg-var_lv
                      4.0G  480M  3.3G  13% /var
/dev/mapper/root_vg-var_log_lv
                      7.9G  314M  7.2G   5% /var/log

Stessa macchina con l’opzione -1:

#df -i
 
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/root_vg-root_lv
                        256K    7.0K    250K    3% /
/dev/mapper/root_vg-home_lv
                         32K      55     32K    1% /home
/dev/mapper/root_vg-tmp_lv
                        256K      27    256K    1% /tmp
/dev/mapper/root_vg-usr_lv
                        512K     51K    462K   10% /usr
/dev/mapper/root_vg-var_lv
                        256K    4.0K    253K    2% /var
/dev/mapper/root_vg-var_log_lv
                        512K     473    512K    1% /var/log

Un esempio un po più interessante, facciamo un df e poi usiamo l’ouput per verificare quando sarà il prossimo check del filesystem (funziona su ext3/4) :

#df  | awk '{print $1}' | grep dev/ | xargs -i tune2fs -l {}| egrep "mounted|Next"
 
Last mounted on:          /
Next check after:         Sat Oct  1 19:05:57 2011
Last mounted on:          /home
Next check after:         Sat Oct  1 12:33:16 2011
Last mounted on:          /tmp
Next check after:         Sat Oct  1 19:06:00 2011
Last mounted on:          /usr
Next check after:         Sat Oct  1 19:06:04 2011
Last mounted on:          /var
Next check after:         Sat Oct  1 19:06:07 2011
Last mounted on:          /var/log
Next check after:         Sat Oct  1 12:33:22 2011


DU

Uso base

du [OPZIONE...] [NOME_FILE...]

descrizione

Il comando du serve a restituire la dimensione sia di un intero file system o una cartella o file, ecc.
il comando du restituisce la dimensione di ogni file e directory che si trova all’interno di quella directory. Se [NOME_FILE ...] non è dato du stamperà le dimensioni di ogni file della directory corrente e di tutte le subdir.

Opzioni

È possibile utilizzare l’opzione -a , che dice al comando du di restituire la dimensione dei singoli file e directory, mentre -s mostra solo il totale per ogni argomento.
Un altro parametro importante è -h che rende l’ouput del comando du, più leggibile per l’occhio umano ad esempio con 18M, invece di visualizzare 17.532 (lo stesso numero indicato in byte senza arrotondamenti).
Un’altra impostazione consigliata è -c che restituisce la dimensione totale di tutti i file analizzati.

Esempi

Mostra lo spazio occupato da /var

# du -hs /var/
481M	/var/

Mostra in dettaglio lo spazio occupato da ogni directory in /var e stampa il totale

# du -hsc /var/*
5.3M	/var/backups
188M	/var/cache
112M	/var/lib
4.0K	/var/local
16K	/var/lock
177M	/var/log
16K	/var/lost+found
12K	/var/mail
4.0K	/var/opt
100K	/var/run
604K	/var/spool
4.0K	/var/tmp
120K	/var/www
481M	total

Ottieni la lista dei 10 files/directory che occupano più spazio in /var/:

# du -s /var/* | sort -nr |head
191676	/var/cache
180760	/var/log
113712	/var/lib
5332	/var/backups
604	/var/spool
120	/var/www
100	/var/run
16	/var/lost+found
16	/var/lock
12	/var/mail

Conclusioni

Con questi due semplici comandi potrete tenere sotto controllo la crescita del vostro filesystem e verificare velocemente se è finito lo spazio, se ci sono problemi sugli Inode e quali directory stanno consumando tutto il vostro disco.

perchè i comandi du e df danno risultati diversi ?

Risposta veloce: Questo è dovuto ai file aperti e come essi vengono conteggiati da 2 comandi.
Risposta lunga: Leggete questo articolo

Popular Posts:

flattr this!

  2 Responses to “Verifica l’utilizzo del disco con df e du”

  1. Su gnome è possibile vedere l’utilizzo in lettura e scrittura momentaneo del disco tramite applet System Monitor. Quale comando posso usare per avere tale informazione tramite linea di comando?

    Grazie

    • Ciao Stefano,
      Puoi usare il comando iostat, normalmente fornsice in output il numero di blocchi scritti/letti al secondo ma puoi usare -k (kilobytes) o -m (megabytes).

      Come parametro prende l’intervallo in secondi di campionamento, quindi un:

      iostat 2 -m

      Ti da un campionamento a 2 secondi e stampa i valori in MB.

      Ciao

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>