centos 100% disco lleno - ¿Cómo eliminar archivos de registro, historial, etc.?

centos 100% disco lleno - ¿Cómo eliminar archivos de registro, historial, etc.?

mysqld no se inicia porque el espacio en disco está lleno:

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

correr 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 *en /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

En /dev/sda5, hay archivos del sitio web en /var/www.

Como es la primera vez, no tengo idea de qué archivos eliminar aparte de moverlos /var/wwwa otra partición.

Y uno más, ¿cuál es la forma correcta de eliminar archivos de registro, historial, etc. /dev/sda5?

Respuesta1

Rápido y sucio: mueve tu /var/wwwa /home/wwwy luego crea un enlace simbólico:

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

A más largo plazo: tal vez coloque sus directorios /var/wwwy /var/logen sus propias particiones dedicadas. Probablemente podrías reducir /homey utilizar el espacio liberado para crear particiones adecuadas.

Respuesta2

  1. me gustaríamv /var/log/*gz /var/log/*.0 /home/backup/var/log
  2. yum clean packageso apt-get clean para eliminar cosas de /var/cache
  3. Sí, mueva /var/www a, por ejemplo, /home
  4. tal vez elimine la partición /var.

Respuesta3

¿A qué se debe el desglose /var/lib? Si es como mi sistema, ¿la mayor parte (digamos 500 MB) está ocupada por /var/lib/mysql?

Todos los demás números parecen bastante normales y razonables, por lo que son conmovedores /var/lib/mysqly /var/wwwson las únicas soluciones realistas a largo plazo.

Para eliminar archivos de registro antiguos, ¿se están rotando sus registros? Por ejemplo, ¿tiene /var/log/messages, /var/log/messages.1, /var/log/messages.2.gz, etc, o tal vez /var/log/messages-20101221, /var/log/messages-20101220.gz, etc?

La forma obvia de eliminarlos es por edad, por ejemplo

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

Además, verifique que la configuración de logrotate /etc/logrotate.confsea la que desea. Yo diría que no deberías cambiarlos, ya que no son tu principal problema, pero tal vez solo quieras mantener los registros de una semana, en cuyo caso intenta algo como esto:

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

Luego hay archivos para cada servicio, por ejemplo, syslog, mysql, apache, etc. para configurar la rotación de registros para cada uno de ellos. En los sistemas Debian y Red Hat, esto ya debería estar configurado.

Si aún no tienes logrotate, entonces es un poco más difícil. Consideraría usar grep o tail para guardar las entradas recientes, luego eliminar el archivo y reiniciar syslogd (por ejemplo, service syslogd restarto pkill -HUP syslogd.

Finalmente, un guión que escribí precisamente para esta situación es 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

información relacionada