centos 100% disk full - Comment supprimer les fichiers journaux, l'historique, etc.?

8

mysqld ne démarre pas car l'espace disque est plein:

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

en cours d'exécution 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 *dans /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

dans /dev/sda5, il y a des fichiers de site Web dans /var/www.

car c'est la première fois, je n'ai aucune idée des fichiers à supprimer à part le déplacement /var/wwwvers une autre partition

Et encore une fois, quelle est la bonne façon de supprimer les fichiers journaux, l'historique, etc. /dev/sda5?

kopeklan
la source

Réponses:

2

Rapide et sale: déplacez votre /var/wwwvers /home/www, puis créez un lien symbolique:

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

À plus long terme: placez peut-être vos répertoires /var/wwwet /var/logdans leurs propres partitions dédiées. Vous pourriez probablement réduire /homeet utiliser l'espace libéré pour créer des partitions appropriées.

Steven Monday
la source
2
  1. je voudrais mv /var/log/*gz /var/log/*.0 /home/backup/var/log
  2. yum clean packages ou apt-get clean pour supprimer des éléments de / var / cache
  3. Oui, déplacez / var / www vers eg / home
  4. peut-être supprimer la partition / var ..
Erik Johansson
la source
FWIW: Je n'aime pas vraiment utiliser la partition quand il n'y a pas vraiment d'utilisation pour eux. Si vous voulez les utiliser comme limites administratives, il vaut mieux avoir LVM / ZFS ou une sorte de moyen facile de les étendre.
Erik Johansson
Je n'aime pas trop utiliser la partition aussi ...
kopeklan
1

Quelle est la ventilation /var/lib? Si c'est comme mon système, la majeure partie (disons 500 Mo) est occupée par /var/lib/mysql?

Les autres chiffres semblent tous assez normaux et raisonnables, donc émouvants /var/lib/mysqlet /var/wwwsont les seules solutions réalistes à long terme.

Pour enlever les anciens fichiers journaux, sont vos journaux étant mis en rotation, par exemple vous avez /var/log/messages, /var/log/messages.1, /var/log/messages.2.gz, etc, ou peut - être /var/log/messages-20101221, /var/log/messages-20101220.gzetc?

La manière évidente de les supprimer est par âge, par exemple

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

Vérifiez également que vos paramètres de rotation de journal /etc/logrotate.confsont ceux que vous souhaitez. Je dirais que vous ne devriez pas les changer, car ce n'est pas votre problème principal, mais peut-être que vous ne souhaitez conserver que les journaux d'une semaine, auquel cas essayez quelque chose comme ceci:

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

Ensuite, il y a des fichiers pour chaque service, par exemple syslog, mysql, apache, etc. pour configurer la rotation des journaux pour chacun d'eux. Sur les systèmes Debian et Red Hat, cela devrait déjà être configuré pour vous.

Si vous n'avez pas encore logrotate, c'est un peu plus difficile. Je chercherais à utiliser grep ou tail pour enregistrer les entrées récentes, puis à supprimer le fichier et à redémarrer syslogd (par exemple, service syslogd restartou pkill -HUP syslogd.

Enfin, un script que j'ai écrit pour cette situation est 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
Mikel
la source