Entendendo onde o espaço em disco passou?

3

Estou usando o Debian. df -h mostra que estou usando cerca de 275 GB:

 Filesystem                 Size  Used Avail Use% Mounted on
rootfs                     315G  274G   26G  92% /
udev                        10M     0   10M   0% /dev
tmpfs                      6.4G  200K  6.4G   1% /run
/dev/disk/by-label/DOROOT  315G  274G   26G  92% /
tmpfs                      5.0M     0  5.0M   0% /run/lock
tmpfs                       13G  4.0K   13G   1% /run/shm

Eu quero descobrir onde foram os 274 GB. Seguindo as respostas aqui , eu posso ver que cerca de 50 GB estão sendo usados pelo sistema de arquivos:

$ du -h /  --max-depth 3
...
51G     /

Eu também sei que tenho um grande banco de dados do Postgres, então posso verificar quanto espaço ele está usando:

$ psql 
=> SELECT pg_database.datname, pg_database_size(pg_database.datname), pg_size_pretty(pg_database_size(pg_database.datname)) FROM pg_database ORDER BY pg_database_size DESC;
   datname   | pg_database_size | pg_size_pretty
-------------+------------------+----------------
 mydatabase  |     230809349908 | 215 GB
 postgres    |          6688532 | 6532 kB
 template1   |          6570500 | 6417 kB
 template0   |          6562308 | 6409 kB

Portanto, há cerca de 215 GB sendo usados pelo Postgres e cerca de 50 GB pelo sistema de arquivos.

Mas como posso verificar onde os 10 GB restantes foram?

Não é grande coisa, mas estou curioso para saber como alguém pode rastrear isso.

    
por Richard 11.06.2015 / 12:21

5 respostas

3

As chances são de que o espaço excedente seja alocado para arquivos abertos, mas já excluídos.

du mostrará apenas os arquivos que estão acessíveis através do sistema de arquivos (ou seja, possuem um nome de arquivo). Quando um arquivo é excluído, seu nome de arquivo é removido do diretório, mas os blocos de disco (e o inode) são liberados somente quando todos os processos fecham o arquivo aberto para esse arquivo. A maneira mais trivial de ter problemas com isso é excluir arquivos de logs abertos e esperar que o espaço seja liberado. Então você tem que coagir os processos de retenção para fechar suas alças de arquivo ou matar esses processos (um processo de saída sempre fecha todas as suas alças de arquivo). Existem outras maneiras de um processo estar usando um arquivo (executá-lo como um binário, carregando-o como um objeto compartilhado, mapeando-o no espaço da memória).

Para ver quais arquivos abertos, mas excluídos, são mantidos pelos processos em execução, você pode usar utilitários como lsof ou pode procurar em /proc/* . Lá, há um diretório para cada processo em execução, nomeado com seu PID (como: /proc/1 para PID número 1). Sob o diretório, um link simbólico chamado exe mostra o binário executando o como o processo, um arquivo chamado maps mostra os arquivos mapeados no espaço de memória do processo, e um diretório chamado fd lista todos os identificadores de arquivos abertos do processo. Se você ver (excluído), é isso.

    
por 11.06.2015 / 13:30
2

Para explorar de maneira interativa o uso de seu sistema de arquivos, você pode usar ferramentas como xdiskfree , kdiskfree ou baobab .

Você obtém basicamente as mesmas informações de du , mas você não precisa usá-las para cada subdiretório, mas basta clicar em um diretório para ver os detalhes.

    
por 11.06.2015 / 12:53
2

Como sugerido anteriormente, você pode usar o comando du -sh para identificar o uso total de espaço de qualquer pasta.

Você vai querer executar este comando com o sudo para ter certeza de que ele captura informações de tamanho de tudo na pasta.

A opção -s faz com que du verifique recursivamente o uso do disco.

A opção -h é tornar a saída legível para humanos. Quando você pegar o jeito, você pode tentar executar du com e sem opção -h e comparar a saída. Às vezes você pode encontrar a saída sem -h é útil.

Você também pode enviar curingas ao comando du para avaliar os usos de várias pastas. Então:

sudo du -sh /home/*

fornecerá o total de usos para cada pasta em / home

    
por 11.06.2015 / 13:19
1
    du -sh <directory>

fornece detalhes sobre o uso do disco no diretório.

    du -h <directory>

fornecerá o uso de disco de cada elemento no diretório. Você pode usar o acima para descobrir quais são os diretórios que estão ocupando espaço em disco.

    
por 11.06.2015 / 12:28