df reporta espaço livre incorreto para um sistema de arquivos (ext4)

4

Estou enfrentando um problema com espaço incorreto de fs relatado por df .

Estamos falando do servidor Ubuntu metal 14.04, com a partição / gerenciada pelo LVM.

O tamanho relatado por df é diferente do tamanho informado pelo super-bloco fs. Também calcular o tamanho de du -skh (em diretórios relacionados à partição / ) prova que df está mostrando resultados incorretos.

Isso é o que relatou por df :

Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_root   20G   16G  2.8G  86% /

Isso é o que o superbloco reporta (3616906*4096/1024**2=14128 MB free) :

Last mounted on:          /
Filesystem magic number:  0xEF53
Filesystem state:         clean
Filesystem OS type:       Linux
Inode count:              1290240
Block count:              5242880 << exactly 20 GB
Reserved block count:     227170
Free blocks:              3616906 << around 14 GB free
Free inodes:              1201391
First block:              0
Block size:               4096
Fragment size:            4096

Eu fiz um strace para df e descobri que ele usa o statfs syscall para obter informações sobre um determinado fs (962132*4096/1024**2=3758 MB free) :

statfs("/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=5129119, f_bfree=**962132**, f_bavail=730866, f_files=1290240, f_ffree=1091851, f_fsid={-456623966, 1549023591}, f_namelen=255, f_frsize=4096}) = 0

Provavelmente, o problema com statfs ou de alguma forma como é obtida a informação fs.

Para resolvê-lo, tentei remontar / partition ( mount / -orw,remount ), mas isso não ajudou.

Minha pergunta - como posso corrigir df informações sem reiniciar ou perturbar o funcionamento normal deste servidor?

P.S.

  • existem não fd em espera pelo processo ( lsof +L1 | grep deleted )
  • Estou ciente de que 883 MB estão reservados para o usuário com UID 0
  • Este não é um problema de mascaramento de ponto de montagem (quando arquivos fs 'hide' montados no diretório de ponto de montagem)
por Tom Lime 07.08.2016 / 13:02

1 resposta

1

em causa de colegas que ficaram com o mesmo problema:

eu resolvi isso emitindo unmount /dev/mapper/rootvg-lv_root . me deu um erro, mas depois df reportou corretamente.

parece que umount atualizou algumas estruturas internas.

espero que ajude alguém.

    
por 06.03.2017 / 11:10

Tags