/ tmp foi de 1,8 Gb; remover arquivos com mais de 8 dias excluiu apenas ~ 300mb .. o que está usando tanto espaço?

2

Estou executando um servidor web no CentOS.

Hoje não consegui executar nenhuma consulta SQL. Na investigação, error 28 , meu diretório /tmp não pôde ser gravado.

Eu corri du /tmp e foi 1.8Gb. Eu então corri o find /tmp -type f -mtime +8 -exec rm -f {} \; que liberou 300Mb de espaço.

Por enquanto, isso fez o trabalho - o MySQL pode operar novamente.

No entanto, estou curioso para saber por que o servidor tem tantos arquivos em seu diretório /tmp . Eu reiniciei o servidor duas vezes e o tamanho do diretório permaneceu o mesmo. A maioria das distribuições Linux não limpa os arquivos temporários na reinicialização?

Se eu executar ls /tmp , obtenho uma lista enorme desse tipo de arquivo:

tempCaa7Nw                             tempk7uZU4  temps3GaF1  tempzzWWjV
tempcAbH5o                             tempK7VCdu  temps3hRWv  tempZzXHPM
tempCabZXR                             tempk7VwjK  temps3IdYj  tempzzxZWw
tempcAcQtu                             tempk7W0SI  tempS3IGMF  tempzZy7FM
tempCaCTkx                             tempk7xrzw  tempS3iMfj  tempzZy8L6
tempcAcur7                             tempk7yX3J  tempS3izd5  tempZZYKXr
tempcaCwnz                             tempk81EIE  tempS3JU5s  tempzZyQLO
tempcAdpAk                             tempk81Qpo  tempS3kaNx  tempzZZos7
tempCaeFae                             tempk81ZLV  tempS3KYOx
tempcaEGmt                             tempk83VVy  tempS3LI1u

Lista completa aqui .

Preciso descobrir o que está causando tantos arquivos temporários? Ou eu simplesmente preciso aumentar o tamanho (ou algo assim) do meu diretório /tmp ? Isso está em algum arquivo de configuração?

Sou um mau administrador de linux, então, por favor, desculpe minha ignorância.

EDITAR para @JeffFerland

Aqui estão os resultados de grep /tmp no arquivo de saída lsof .

mysqld     4649   mysql    4u      REG                7,0         0     103774 /                                          tmp/ib4mpAJ8 (deleted)
mysqld     4649   mysql    5u      REG                7,0         0     103775 /                                          tmp/ibvE7FxN (deleted)
mysqld     4649   mysql    6u      REG                7,0         0     103776 /                                          tmp/ibPe3Lls (deleted)
mysqld     4649   mysql    7u      REG                7,0         0     103777 /                                          tmp/ib656Kb7 (deleted)
mysqld     4649   mysql   11u      REG                7,0         0     103778 /                                          tmp/ibpptQzP (deleted)
cp         7997    root    3r      REG                7,0     18897      28260 /                                          tmp/tempF091j1
cp         7997    root    4w      REG                9,1         0     297690 /                                          tmp_bu/tmp/tempF091j1 (deleted)

EDIÇÃO ADICIONAL Tendo deletado ~ 300Mb de arquivos ontem, meu diretório /tmp está de volta ao seu tamanho original de 1.8Gb e, mais uma vez, o MySQL não está funcionando corretamente.

Por favor, ajude!

    
por dunc 09.02.2013 / 00:02

4 respostas

3

A maioria desses arquivos tem o mesmo tamanho. Verifique o que está em um deles. Meu primeiro palpite é que seu servidor aceita uploads de arquivos e não limpa se você não usar os arquivos enviados.

    
por 09.02.2013 / 22:43
4

Uma coisa que você pode tentar é usar o comando lsof para listar todos os arquivos atualmente em uso pelo sistema operacional. Isso pode lhe dar uma idéia de quais processos estão criando / usando esses arquivos /temp.*/. A partir daí, supondo que você descubra qual processo é o culpado, eu detalharia e veria quais opções de configuração poderiam estar disponíveis para reduzir o spam do arquivo.

    
por 09.02.2013 / 00:10
0

Sistemas diferentes fazem coisas diferentes. Eu trabalhei em sistemas que limparam / tmp na reinicialização (sequent mini's), mas a maioria das distribuições de linux que eu encontrei tem um cron job tmpwatch que limpa / tmp.

Alguns programas criam um arquivo tmp e o excluem, mantendo o identificador de arquivo aberto, de modo que, se o programa terminar ou morrer por qualquer motivo, o espaço será recuperado. Você pode fazer

lsof|grep deleted

para ver quais arquivos estão abertos, mas excluídos. Você pode então olhar para / proc // fd e ver quais arquivos são os maiores e qual processo eles abrem.

    
por 09.02.2013 / 02:00
0

Talvez seja útil criar um volume dedicado para o MySQL, / tmp-mysql, e apontar o MySQL para esse caminho, definindo TMP = / tmp-mysql para o script de início. Dessa forma, o MySQL deve manter-se operacional mesmo quando o / tmp for preenchido.

    
por 09.02.2013 / 22:56