onde poderia estar meu espaço em disco se não fosse esparso, excluído ou oculto por um ponto de montagem

3

Parece que eu perdi um par de GB em um sistema de arquivos raiz do ext4 (sob llvm on centos 7.1 em um VMware ESX VM se isso for importante).

[someone@somewhere ~]$ sudo du -xsm /
4561    /

ainda:

[someone@somewhere ~]$ sudo df -m /
Filesystem                 1M-blocks  Used Available Use% Mounted on
/dev/mapper/vg_sys-lv_root      8944  7562       956  89% /

Eu pensei que talvez algo estivesse em um ponto de montagem, então tentei isso:

[someone@somewhere ~]$ sudo mount --bind / /vp
[someone@somewhere ~]$ sudo du -xsm /vp
4561    /vp

Talvez um arquivo excluído ainda esteja sendo usado por um processo:

sudo lsof | grep deleted

Não mostra nada significativo.

Nem procura por arquivos esparsos usando o seguinte comando como root (comando encontrado aqui ):

find / -type f ! -size 0 -exec perl -le 'for(@ARGV){open(A,"<",$_)or next;seek A,0,4;$p=tell A;seek A,0,2;print if$p!=tell A;close A}' {} +

Então, onde mais meus dados podem estar, o que df sabe que du não faz neste caso? Também verifiquei df -i e menos da metade dos inodes estão em uso.

    
por jankeir 04.03.2016 / 15:46

2 respostas

3

Outras explicações possíveis:

  • você está em um chroot ou no namespace de montagem e não tem acesso a todo o sistema de arquivos. Você poderia dizer, executando ls -id / , que dá 2 se você não estiver em um namespace chroot / mount.
  • O sistema de arquivos está corrompido.
  • O espaço está sendo usado por um dos inodes especiais . Você pode usar debugfs e emitir alguns stat <3> , stat <4> ... para verificar.
  • O espaço está sendo usado por um arquivo excluído, esse arquivo excluído é aberto por um processo em outro namespace pid (e você não está no namespace pid raiz).
  • O espaço está sendo usado por um arquivo excluído, esse arquivo excluído não está aberto por nenhum arquivo, mas está, por exemplo, conectado a um dispositivo de loop ( losetup -a a verificar).

Observe que não há motivos para que arquivos esparsos contribuam para a discrepância entre du e df .

    
por 04.03.2016 / 17:30
2

Há várias coisas para as quais o sistema de arquivos pode gastar espaço em disco, que não estão relacionadas ao conteúdo do arquivo.

df leva o número de blocos usados e disponíveis diretamente do sistema de arquivos, enquanto du apenas soma o tamanho dos blocos alocados a cada arquivo, portanto, quaisquer estruturas de dados FS não relacionadas não são contabilizadas.

É totalmente aceitável que du mostre menos espaço usado do que df . O estranho é que a diferença é tão grande, especialmente para uma partição raiz raramente modificada. Você ajustou seu FS de alguma forma? Você também tentou du --inodes para comparar com df -i ?

    
por 04.03.2016 / 17:15

Tags