Como posso encontrar o uso do armazenamento fantasma?

3

Eu tenho um servidor de arquivos do Mac OS X 10.6.4 Snow Leopard Server (AFP) que está ficando sem espaço de armazenamento no volume de inicialização nas últimas semanas. Demora cerca de dois dias para os restantes 42 GB no volume de arranque de 80 GB serem consumidos, mesmo que sudo du -chsx -I dev / ainda mostre apenas 29 GB utilizados.

Já corri para isso no passado com um servidor Linux cujos logs do Apache foram excluídos após N dias, mas o log ainda era mantido aberto pelo Apache, fazendo com que o armazenamento não fosse liberado. Eu tinha sido capaz de rastreá-lo com relativa facilidade nesse caso w / a sudo lsof , mas eu não estou encontrando facilmente o culpado neste caso (sendo um servidor de arquivos, há uma tonelada de arquivos abertos e soquetes). Como posso classificar lsof output por tamanho de arquivo (e mostrar o tamanho em um formato amigável para humanos) para que eu possa encontrar o culpado?

O servidor tem 3 GB de RAM. Depois de 4 horas, o Activity Monitor mostra 700 MB livres, 1,5 GB inativos e 200 GB de VM. mds tem o maior uso de VM em 1,8 GB, AppleFileServer em 2º lugar com 500 MB e tudo o mais está usando 10 MB-75 MB de VM. Dito isto, / private / var / vm é apenas 128MB.

A reinicialização do sistema elimina o problema, por isso acredito que é um espaço de armazenamento gratuito que ainda está sendo mantido aberto por algum processo ou processo.

Qualquer outra hipótese, sugestões, etc., muito apreciada.

    
por morgant 29.11.2010 / 20:54

3 respostas

13

Você pode encontrar os maiores arquivos abertos com:

sudo lsof -s | awk '$5 == "REG"' | sort -n -r -k 7,7 | head -n 50

Isto irá listar os arquivos regulares (não pipes, sockets, etc) ordenados por tamanho em ordem decrescente, e tomar o top 50.

Você também pode ver quais processos têm mais arquivos abertos, com algo como

sudo lsof | awk '$5 == "REG" {freq[$2]++ ; names[$2] = $1 ;} END {for (pid in freq) print freq[pid], names[pid], pid ; }' | sort -n -r -k 1,1
    
por 29.11.2010 / 22:17
0

Eu olharia para sudo lsof | grep deleted

    
por 29.11.2010 / 23:06
0

sudo lsof +L1 mostrará arquivos excluídos. Para velocidade, combine isso com -Pn .

por exemplo. lsof -Pn +L1

    
por 21.01.2016 / 12:36