df diz que tenho 20G mais espaço em disco usado que du. Por quê? [duplicado]

3

Eu usei du para listar todas as pastas e classificar por tamanho, os resultados simplesmente não somam quanto espaço em disco é usado (usando df). Há cerca de 20G em discrepância, por quê?

[root@xxx lib]# du --max-depth=1 -h /| sort -n -r
310M    /lib
123M    /root
96K /dev
88M /etc
75G /
73G /var
30M /sbin
20M /boot
20K /tmp
18M /lib64
16K /mnt
16K /lost+found
12K /home
8.0K    /srv
8.0K    /selinux
8.0K    /opt
8.0K    /misc
8.0K    /media
7.0M    /bin
1.2G    /usr
0   /sys
0   /proc
[root@xxx lib]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      298G   94G  189G  34% /
/dev/sda1              99M   26M   69M  28% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm
    
por strugee 26.05.2011 / 10:04

2 respostas

10

Isso porque du e df medem coisas diferentes.

man du diz:

du - estimate file space usage (...) Summarize disk usage of each FILE, recursively for directories.

e man df :

df - report file system disk space usage

Os sistemas de arquivos possuem tabelas de inodes, periódicos, etc., que não são resumidos por du . Não é apenas específico do Linux, mas específico do UNIX (ou até mesmo específico do sistema de arquivos UNIX). Como os processos do UNIX usam arquivos para tudo (estou simplificando), ou seja, escrevendo para arquivos de log, também pode haver um problema do descritor de arquivo aberto , neste caso, causando diferentes saídas du e df .

    
por 26.05.2011 / 13:39
4

A tabela inode (bem como algumas coisas muito menores) está incluída no espaço usado. Parece que você tem cerca de 18 GB de inodes. Isso é cerca de 6% do espaço, que está no esperado ballpark para ext2 / ext3 / ext4 (sistemas de arquivos que não têm uma tabela de inode provavelmente terão entradas de diretório maiores se nada mais). Você pode encontrar o tamanho exato usado para inodes executando tune2fs -l /dev/mapper/VolGroup00-LogVol00 , por exemplo. aqui estão as linhas relevantes para um dos meus 20GB sistemas de arquivos ext3:

Inode count:              2622368
Inode size:               128

Essa partição tem 2622368 × 128 B × 320 MB de inodes.

Nota adicional: a maneira como você chamou du , verá o espaçamento usado por todos os arquivos, mesmo em montagens remotas e outros sistemas de arquivos não armazenados diretamente em discos. Execute du -x / para ver exatamente o que está armazenado no sistema de arquivos raiz.

    
por 26.05.2011 / 23:54

Tags