Caroline… Carolzinha… ou simplesmente Carol!

Comece pelo simples e não pare de tentar.

du x df

Postado por Carol Souza 0 Comentários

Sabe aqueles problemas que ocorrem de tempos em tempos, você dá aquele “tapinha” no ambiente e tudo volta ao normal? Então, um dia resolvi parar para analisar e entender que raio de problema era esse.

Era uma vez um servidor de arquivos com mapeamento SMB… que de tempos em tempos tínhamos uma diferença interessante entre o que era apresentado na saída do df e do du.

Vejam a diferença…

image_du-df1
Bem, antes de continuar, temos que ter em mente a maneira como esses comandos fazem a leitura do disco e informam o espaço utilizado.

du - Summarize disk usage of each FILE, recursively for directories.

df - This  manual  page  documents  the  GNU version of df.  df displays the
       amount of disk space available on the file system containing each  file
       name  argument.   If  no file name is given, the space available on all
       currently mounted file systems is shown.  Disk space  is  shown  in  1K
       blocks  by  default, unless the environment variable POSIXLY_CORRECT is
       set, in which case 512-byte blocks are used.

Obs.: Descrição obtida na man page de cada comando.

Tendo isso em mente, achei alguns materiais na internet que explicavam que uma possível causa de divergência ocorria no evento de deleção, caso esses arquivos ainda estivessem em uso por outro processo.

E executei o comando a seguir para validar esse teoria:

# lsof | grep ‘(deleted)’ 

image_du-df2

É possível ver na última coluna que o lsof retornou que o status destes e muitos outros arquivos era de deletado.

Fui checar esses arquivos, mas não consegui nem chegar nos diretórios, nem era mais possível encontrá-los. Como assim “eles que não existiam mais”?

image_du-df3

Isso mesmo, maaaaass eles ainda são blocos alocados por vários pids do SMB e que estão populando o disco de maneira desnecessária.

E como resolver sem interromper o ambiente e liberar em definitivo esses 7TB de diferença? Fácil, vamos encerrar esses pids.

Só que nessa brincadeira descobri que eram mais de 600 arquivos nessas condição, tudo bem que tem muito pid repetido e tal, mas confesso que sou preguiçosa e adoro montar umas linhas marotas no shell Linux para facilitar meu dia-a-dia. (apaixonada por um for hehe)

for i in `lsof | grep ‘(deleted)’ | grep discomontado | awk ‘{print $2}’ | sort -n | uniq`; do kill $i; done

E voilà… espaço liberado com sucesso.

image_du-df4

Depois foi só manter isso na cron pra rodar de tempos e tempos e partir para outra atividade.

Vlw!

Categorias: Linux

Sobre Carol Souza

Caroline de Souza Vieira, mais conhecida como Carol Souza, formada em Análise de Sistemas, administradora de redes Linux, incentivadora do uso de Software Livre e usuária OpenSuse. Membro atuante da Comunidade Software Livre no Rio de Janeiro, colaboradora voluntária de eventos como Hack’n Rio 2011, IV FSLDC e DFDRJ, blogueira em sites como Cotidiano Linux, Gmigos, Mulheres na Tecnologia e CooperaTI além de manter o próprio blog Carolinux. Sonhadora, amiga, determinada, criativa e movida à desafios. Uma “padawan” amante de tecnologia, aspirante a corredora, ritmista e blogueira.

Posts Populares

Remote Desktop via W

Recentemente precisei usar o Remote Desktop do Windows para acessar ...

Extraindo textos a p

Realizando um atendimento (quem lê até pensa que sou médica ...

À caça de um Malwa

Escrevendo novos posts até tarde da noite, divulgando e acompanhando ...

Erro no "apt-get upd

Essa é mais uma daquelas histórias em que a simples ...

Mulheres em moviment

Neste último domingo consegui realizar um grande desejo, participar de ...