Como eu paro essa perda constante de espaço livre?

15

Eu estava rodando o Ubuntu, como de costume, quando de repente eu recebi uma caixa de diálogo que dizia que eu só tinha 1.2 GB de espaço livre sobrando. Uma hora antes, eu tinha 30 GB de espaço livre.

Eu deletei algumas coisas e trouxe o espaço livre para até 25 GB. Mas continua a diminuir. Eu tentei remover arquivos de log antigos e truncar arquivos de log e tal, e continua a diminuir!

Eu tentei usar o Disk Analyzer para descobrir de onde vinha toda essa perda de espaço livre e isso não funcionou, pois mostrava tudo como deveria. Eu reiniciei e, eventualmente, o Ubuntu fez uma verificação de disco que de alguma forma trouxe o espaço livre de volta para 40 GB, mas ainda continua a diminuir cerca de 10 GB por dia. Eu continuo tentando encontrar novas maneiras de liberar espaço, mas é como um processo automatizado de diminuir o espaço em disco que não consigo parar.

Eu não sei o que fazer. Como posso encontrar a causa e impedir que meu espaço livre diminua?

Aqui está a saída de sudo du -sh /var/* ~/.xsession-errors :

13M /var/backups
204M    /var/cache
112M    /var/crash
4.0K    /var/games
503M    /var/lib
4.0K    /var/local
0       /var/lock
9.5G    /var/log
85M     /var/mail
4.0K    /var/metrics
24K     /var/opt
0       /var/run
1.7M    /var/spool
391M    /var/tmp
11G     /var/tvmobili
20K     /var/www
224K    /home/school/.xsession-errors
    
por askcompu 04.04.2013 / 02:14

3 respostas

26

Você tem alguns registros fora de controle. Em vez de deletar todos os dias, encontre arquivos ou arquivos em rápido crescimento, e olhe para investigar o que pode estar causando isso. Talvez algum programa esteja girando em um loop registrando alguma condição. Desabilite esse programa, desabilite seu registro ou tente consertar a condição de que está reclamando.

Se um arquivo está crescendo diante de seus olhos, e você não tem idéia de qual programa está escrevendo, você pode descobrir isso facilmente. Aqui está um exemplo. Quem tem /var/log/syslog aberto? Nós usamos o comando fuser :

# fuser /var/log/syslog
/var/log/syslog:      602

Apenas um processo tem /var/log/syslog aberto. É o processo 602. O que é isso? Não nos preocupemos com ps e grep , mas olhe diretamente para o sistema de arquivos /proc :

# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd

Aha, é rsyslogd . Não estamos surpresos que rsyslogd tenha /var/log/syslog/ open.

Não é garantido que este método funcione. A razão é que os programas não precisam manter arquivos abertos para escrever para eles. Suponha que você tenha um processo que abra um arquivo, anexe-o e feche-o. Você terá uma investigação um pouco mais difícil. Você pode executar fuser muitas vezes até que, por acaso, você perceba o processo "em flagrante". Esse processo em si pode entrar e sair da existência rapidamente. Outro problema é que vários processos podem ter o arquivo aberto, mas apenas um está aumentando. Nesse caso, você pode rastrear suas chamadas de sistema.

# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file:   1234 23459

Oops! Dois processos estão abertos: 1234 e 23459. Vamos ver o que eles estão fazendo:

# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}

Não está fazendo nada, apenas bloqueando uma chamada select . Ctrl-C para quebrar o traço:

select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>

Verifique o próximo:

# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C

Opa, esse está escrevendo constantemente. Deve ser o mal. Podemos até verificar que o descritor de arquivo 5 para o qual o processo está gravando é, na verdade, o arquivo grande:

# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr  3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file

Eu não suspeito que você tenha um sistema de arquivos corrompido, mas para forçar uma checagem completa, você não precisa inicializar um DVD.

Primeiramente, revise a configuração de contagem máxima de montagens do seu sistema de arquivos. Identifique sua partição usando o comando df. Exemplo em um sistema Ubuntu eu tenho aqui:

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18062108 5499320  11645284  33% /
udev              392152       4    392148   1% /dev
tmpfs             159768     768    159000   1% /run
none                5120       0      5120   0% /run/lock
none              399416     200    399216   1% /run/shm
/dev/sr0           43668   43668         0 100% /media/VBOXADDITIONS_4.1.4_74291

Você pode ver que o sistema de arquivos / está montado em /dev/sda1 . Então /dev/sda1 é o dispositivo de armazenamento da partição raiz (e a única partição neste sistema em particular).

Vamos dar uma olhada em alguns atributos desse sistema de arquivos. Isso é seguro, apesar de estar montado. O comando lança muita saída. Aqui está um trecho:

$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /
[ ... SNIP ... ]
Last mount time:          Fri Mar 29 17:45:18 2013
Last write time:          Tue Mar  5 09:08:03 2013
Mount count:              22
Maximum mount count:      22
[ ... SNIP ... ]

Hey, a contagem de montagens é igual à contagem máxima de montagens. Da próxima vez que eu reiniciar, haverá uma verificação do sistema de arquivos. O importante é que a contagem de montagens seja um valor positivo. Se o seu é zero, mude para algum valor positivo como 22 usando tune2fs -c 22 /dev/whatever . Zero significa que uma verificação nunca é forçada, independentemente de quantas vezes a partição é montada. Sistemas raramente reinicializados devem ter valores baixos aqui. Um servidor que desce uma vez por ano provavelmente usaria um fsck toda vez que for reinicializado. Você também pode definir intervalos de verificação baseados em data.

Agora, para forçar uma verificação, você pode substituir a contagem atual para que seja maior ou igual ao máximo e, em seguida, reinicialize. Isso é feito com capital C : tune2fs -C 1234 /dev/whatever . Agora a partição parece ter sido montada 1234 vezes sem uma verificação, que é maior que o máximo de um ou dois dígitos.

    
por Kaz 04.04.2013 / 08:52
3

Uma verificação de disco liberou parte do espaço, sugerindo que esse problema (ou parte dele) pode ser devido à corrupção do sistema de arquivos. Se for esse o caso, você deve ser capaz de liberar mais espaço digitalizando e reparando o sistema de arquivos. No entanto, se a corrupção está acontecendo constantemente (o que pode ou não ser o caso), isso geralmente significa que o disco rígido está morrendo. Se seus backups (de seus documentos e outros arquivos importantes que seriam difíceis de substituir) não estiverem completamente atualizados, faça backup de tudo que é importante agora!

Para verificar e reparar o disco, ele não pode ser montado (pelo menos não leitura-gravação). Então você deve executar o utilitário de reparo de um ambiente ao vivo (live CD / DVD ou USB). Primeiro, você terá que descobrir o nome do dispositivo da partição que contém seus arquivos.

Portanto, no sistema instalado , execute:

mount | grep ' on / '

(não se esqueça de incluir o espaço entre / e ' .)

Você terá algo como:

/dev/sda8 on / type ext4 (rw,errors=remount-ro)

O texto antes de on - no exemplo da minha máquina, /dev/sda8 - é o nome completo do dispositivo para sua partição raiz ( / ). Anote isso - você precisará disso.

Em seguida, inicialize seu computador a partir de um CD / DVD ou unidade flash USB do Ubuntu, como o que você usou para instalar o Ubuntu originalmente. (Se este for um sistema Wubi, instalado com o instalador do Windows, por favor nos avise. Eu não espero que, dado o que você relatou, mas se for esse o caso, o procedimento será diferente.)

Selecione Experimente o Ubuntu sem instalar (não Instalar o Ubuntu ). Quando você tiver uma área de trabalho funcional, pressione Ctrl + Alt + T para abrir uma janela do Terminal. Em seguida, execute este comando:

sudo e2fsck -fkccp /dev/sda8

Mas certifique-se de substituir /dev/sda8 pelo nome completo correto do dispositivo para a partição / , conforme obtido pelo método detalhado acima.

Isso pode demorar um pouco. As opções c incluídas nesse comando fazem com que ele varra a superfície do disco em busca de erros, bem como do sistema de arquivos (e para marcar áreas ruins como ruins, para que não sejam usadas). Você pode deixar cc fora se quiser (se você também pode deixar de fora k ), mas eu recomendo mantê-los.

Você pode ser solicitado a corrigir certos problemas, se e2fsck achar que há uma probabilidade significativa de que a tentativa de solucioná-los possa causar perda de dados. (O p faz com que ele conserte todos os problemas que tenha certeza de que pode consertar sem causar complicações.)

Eu recomendo que você seja strongmente inclinado a permitir que ele corrija o que quiser, já que você só deve fazer isso após garantir que seus backups sejam atuais , de qualquer forma. Se você quiser tentar correções potencialmente perigosas sem avisar, substitua o p por y .

Depois disso, inicialize novamente em seu sistema Ubuntu e veja se o espaço é liberado. Se não estiver, ou se o problema persistir, comente e edite sua pergunta para fornecer detalhes.

    
por Eliah Kagan 04.04.2013 / 02:42
0

este problema foi resolvido, foi o firewall escrevendo toneladas de logs e arquivos de codificação tvmobili

    
por askcompu 04.04.2013 / 09:15