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

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

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

correndo 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 sites em /var/www.

porque esta é a primeira vez, não tenho ideia de quais arquivos remover além de mover /var/wwwpara outra partição

E mais uma, qual é a maneira correta de remover arquivos de log, histórico, etc. /dev/sda5?

Responder1

Rápido e sujo: mova seu /var/wwwpara /home/wwwe crie um link simbólico:

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

Longo prazo: talvez coloque seus diretórios /var/wwwe /var/logem suas próprias partições dedicadas. Você provavelmente poderia diminuir /homee usar o espaço liberado para criar partições adequadas.

Responder2

  1. Eu poderiamv /var/log/*gz /var/log/*.0 /home/backup/var/log
  2. yum clean packagesou apt-get clean para remover coisas de /var/cache
  3. Sim, mova /var/www para, por exemplo, /home
  4. talvez remova a partição /var.

Responder3

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

Todos os outros números parecem bastante normais e razoáveis, tão comoventes /var/lib/mysqle /var/wwwsão as únicas soluções realistas a longo prazo.

Para remover arquivos de log antigos, seus logs 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 as configurações do logrotate /etc/logrotate.confsão as desejadas. Eu diria que você não deveria alterá-los, pois eles não são o seu problema principal, mas talvez você queira manter apenas os registros de uma semana; nesse caso, 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 possui o logrotate, é um pouco mais difícil. Eu consideraria usar grep ou tail para salvar as entradas recentes, excluir o arquivo e reiniciar o syslogd (por exemplo, service syslogd restartou pkill -HUP syslogd.

Finalmente, um script que escrevi exatamente para esta 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

informação relacionada