Não é possível encontrar porque os inodes se esgotam

0

Eu tenho um Xen VPS com o Debian Linux instalado com o sistema de arquivos ext4. Uma vez descobri que todos os inodes são usados. Eu verifiquei isso:

~# df -i
Filesystem      Inodes   IUsed IFree IUse% Mounted on
rootfs         3932160 3932160     0  100% /
udev             59227     262 58965    1% /dev
tmpfs            63251     215 63036    1% /run
/dev/xvda      3932160 3932160     0  100% /
tmpfs            63251       2 63249    1% /run/lock
tmpfs            63251       2 63249    1% /run/shm

Então eu tentei encontrar onde todos os inodes foram usados. Geralmente eles eram usados por arquivos de sessão PHP (bacause of cron task ou PHP cleaner interno foram quebrados). Mas não consigo encontrar qual diretório contém uma quantidade muito grande de arquivos. Eu tentei muitos métodos, existe um:

/# for i in /*; do echo $i; find $i |wc -l; done
/aquota.group
1
/aquota.user
1
/bin
124
/boot
9
/dev
264
/etc
1746
/home
1
/initrd.img
1
/lib
4002
/lib64
2
/lost+found
1
/media
1
/mnt
1
/opt
1
/proc
26590
/root
17
/run
214
/sbin
127
/selinux
1
/srv
3
/sys
3609
/tmp
1
/usr
37020
/var
8636
/vmlinuz
1

/# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=59227,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=50604k,mode=755)
/dev/xvda on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered,usrquota,grpquota)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=101200k)

Filesystem     Type     1K-blocks     Used Available Use% Mounted on
rootfs         rootfs    61927420 37390672  21391020  64% /
udev           devtmpfs     10240        0     10240   0% /dev
tmpfs          tmpfs        50604      120     50484   1% /run
/dev/xvda      ext4      61927420 37390672  21391020  64% /
tmpfs          tmpfs         5120        0      5120   0% /run/lock
tmpfs          tmpfs       101200        0    101200   0% /run/shm

/# find . | wc -l
78898

O que posso fazer em seguida?

    
por Ticksy 21.04.2016 / 00:48

1 resposta

0

Se você quiser que seu comando find exclua inodes pertencentes a outros pontos de montagem, inclua -xdev na linha de comando find. O 78898 no final da sua saída é provavelmente mais do que o número total de arquivos visíveis para encontrar na partição rootfs, porque inclui arquivos sob outros pontos de montagem. Isso não explica a discrepância que você perguntou; Significa apenas que a discrepância real é provavelmente um pouco maior.

A primeira coisa a verificar é se você tem arquivos abertos desvinculados. A saída do comando a seguir, executado como root, deve mostrar os seguintes:

lsof +L1

Um exemplo de porque você pode abrir arquivos não-vinculados é um processo que começou antes de atualizações de pacotes que os substituíram por arquivos mais novos (alguns processos sshd em um dos meus sistemas têm arquivos abertos não-vinculados). Outra possibilidade são processos que deliberadamente desvinculam arquivos abertos para ocultar seus conteúdos de outros processos.

Se isso não levar em conta a discrepância, outra possibilidade é que os arquivos que não foram excluídos ainda sejam invisíveis para o comando find, porque eles estão ocultos sob outros pontos de montagem. Existem várias maneiras de investigar essa possibilidade, mas provavelmente faz sentido contar os arquivos excluídos abertos primeiro.

    
por 21.04.2016 / 02:10