du no disco virtual exibe 3 GB a menos que df

3

Eu entendo que muitas vezes há alguma discrepância entre du e df, mas quando eu du du my ramdisk ele ocupa 13G, enquanto o df mostra que ele está usando 16GB. Isso parece uma grande diferença. Isso é normal?

[root@zserver2 ramdisk]# du -h .
...
13G .

[root@zserver2 ramdisk]# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
none                   16G   16G     0 100% /home/stuff/ramdisk

O ramdisk é definido no fstab e é padronizado para 50% do meu ram de 32 GB:

# cat /etc/fstab
...
none             /home/stuff/ramdisk   tmpfs   mode=774,uid=500,gid=501  0     0
    
por Ian 19.11.2013 / 21:20

2 respostas

3

O mais provável é que alguns arquivos tenham sido excluídos do ramdisk enquanto alguns processos ainda possuem um manipulador de arquivos aberto. Uma maneira fácil de verificar isso é com lsof /home/stuff/ramdisk , arquivos que estão abertos, mas que não estão mais no sistema de arquivos, serão marcados com '(deleted)'.

Por exemplo, aqui eu apaguei o arquivo '/ dev / shm / test', enquanto ele ainda é aberto por um script python:

% df -h /dev/shm
Filesystem      Size  Used Avail Use% Mounted on
shm             512M  257M  256M  51% /dev/shm
% du -h /dev/shm
84K    /dev/shm
% lsof /dev/shm
COMMAND     PID     USER   FD   TYPE DEVICE  SIZE/OFF  NODE NAME
[...]
python    39756 adaephon    5r   REG   0,13 268435456 44790 /dev/shm/test (deleted)
    
por 19.11.2013 / 22:16
0

você poderia

  • possuem arquivos que foram excluídos no ramdisk, mas ainda são abertos por alguns processos ou threads? [uma vez que esses processos / threads saiam, o SO realmente libera esses inodes e, portanto, o df reportará 3gb a menos do que antes]

  • tem muitas coisas em um diretório / arquivo que não podem ser acessadas por du? [paranóico? poderia ser algum rootkit ou nastyness escondido ...]

e tenho certeza que haverá outras possibilidades surgindo na minha cabeça [metadados no sistema de arquivos? é journalled? você tem muitos arquivos? "du" ignora as coisas em um diretório "lost + found" ou seu equivalente em qualquer FS que você está usando? etc.]

    
por 19.11.2013 / 21:34