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/www
para 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/www
para /home/www
e 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/www
e /var/log
em suas próprias partições dedicadas. Você provavelmente poderia diminuir /home
e usar o espaço liberado para criar partições adequadas.
Responder2
- Eu poderia
mv /var/log/*gz /var/log/*.0 /home/backup/var/log
yum clean packages
ou apt-get clean para remover coisas de /var/cache- Sim, mova /var/www para, por exemplo, /home
- 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/mysql
e /var/www
sã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.conf
sã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 restart
ou 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