centos 100% disco cheio - Como remover arquivos de log, histórico, etc?

8

o mysqld não inicia porque o espaço em disco está cheio:

101221 14:06:50 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
101221 14:06:50 [ERROR] Can't start server: can't create PID file: No space left on device

executando df -h :

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              16G  3.2G   12G  23% /
/dev/sda5             4.8G  4.6G     0 100% /var
/dev/sda3             430G  855M  407G   1% /home
/dev/sda1              76M   24M   49M  33% /boot
tmpfs                 956M     0  956M   0% /dev/shm

du -sh * em /var :

12K     account
56M     cache
24K     db
32K     empty
8.0K    games
1.5G    lib
8.0K    local
32K     lock
221M    log
16K     lost+found
0       mail
24K     named
8.0K    nis
8.0K    opt
8.0K    preserve
8.0K    racoon
292K    run
70M     spool
8.0K    tmp
76K     webmin
2.6G    www
20K     yp

em /dev/sda5 , há arquivos de site em /var/www .

porque esta é a primeira vez, não tenho idéia de quais arquivos remover além de mover /var/www para outra partição

E mais uma, qual é o caminho certo para remover arquivos de log, históricos, etc. em /dev/sda5 ?

    
por kopeklan 22.12.2010 / 07:25

3 respostas

2

Rápido e sujo: mova seu /var/www para /home/www e, em seguida, crie um link simbólico:

rsync -a /var/www /home &&
rm -r /var/www &&
ln -s /home/www /var/www

Maior prazo: talvez coloque seus diretórios /var/www e /var/log em suas próprias partições dedicadas. Você provavelmente poderia reduzir /home e usar o espaço liberado para criar partições adequadas.

    
por 22.12.2010 / 07:50
2
  1. Eu gostaria de mv /var/log/*gz /var/log/*.0 /home/backup/var/log
  2. yum clean packages ou apt-get clean para remover coisas do / var / cache
  3. Sim, mova / var / www para, por exemplo / home
  4. talvez remova a partição / var.
por 22.12.2010 / 07:49
1

Qual é a divisão em /var/lib ? Se for como o meu sistema, a maior parte (digamos 500 MB) é ocupada por /var/lib/mysql ?

Os outros números parecem bastante normais e razoáveis, por isso mover /var/lib/mysql e /var/www são as únicas soluções realistas a longo prazo.

Para remover arquivos de log antigos, seus registros estão sendo rotacionados, por exemplo, você tem /var/log/messages , /var/log/messages.1 , /var/log/messages.2.gz , etc, ou talvez /var/log/messages-20101221 , /var/log/messages-20101220.gz , etc?

A maneira óbvia de removê-los é por idade, por exemplo

# find /var/log -type f -mtime +14 -print
# find /var/log -type f -mtime +14 -exec rm '{}' \;

Além disso, verifique se suas configurações de logrotate em /etc/logrotate.conf são o que você deseja. Eu diria que você não deve mudá-los, já que eles não são o seu principal problema, mas talvez você só queira manter os registros de uma semana, caso em que tente algo assim:

daily
rotate 7
create
compress
include /etc/logrotate.d

Depois, há arquivos para cada serviço, por exemplo, syslog, mysql, apache, etc para configurar a rotação de log para cada um deles. Nos sistemas Debian e Red Hat, isso já deve estar configurado para você.

Se você ainda não tem logrotate, então é um pouco mais difícil. Eu olharia para o grep ou tail para salvar as entradas recentes e, em seguida, excluir o arquivo e reiniciar o syslogd (por exemplo, service syslogd restart ou pkill -HUP syslogd .

Por fim, um script que escrevi exatamente para essa situação é diskuse .

# test -d ~/bin || mkdir ~/bin
# svn cat http://svn.mikelward.com/svn/scripts/diskuse > ~/bin/diskuse
# chmod +x ~/bin/diskuse
# ~/bin/diskuse -A /var > ~/biggest-files-in-var.txt
# head ~/biggest-files-in-var.txt
# ~/bin/diskuse -T -A /var > ~/biggest-dirs-in-var.txt
# head ~/biggest-dirs-in-var.txt
# ~/bin/diskuse -a 1d /var > ~/biggest-files-in-var-that-changed-today.txt
# head ~/biggest-files-in-var-that-changed-today.txt
    
por 22.12.2010 / 08:24