Centos 100% диска заполнен - ​​Как удалить файлы журнала, историю и т. д.?

8

mysqld не запускается, потому что дисковое пространство заполнено:

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

работает 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 *в /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

в /dev/sda5, есть файлы сайта в /var/www.

потому что это первый раз, я понятия не имею, какие файлы для удаления, кроме перемещения /var/wwwв другой раздел

И еще, как правильно удалить файлы журналов, историю и т. Д. /dev/sda5?

kopeklan
источник

Ответы:

2

Быстро и грязно: переместите /var/wwwк /home/www, затем сделайте символическую ссылку:

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

В долгосрочной перспективе: возможно, поместите ваши /var/wwwи /var/logкаталоги в свои собственные выделенные разделы. Вы могли бы, вероятно, уменьшить /homeи использовать освободившееся пространство для создания подходящих разделов.

Стивен Понедельник
источник
2
  1. я мог бы mv /var/log/*gz /var/log/*.0 /home/backup/var/log
  2. yum clean packages или apt-get clean для удаления содержимого из / var / cache
  3. Да переместить / var / www в eg / home
  4. возможно, удалите раздел / var.
Эрик Йоханссон
источник
FWIW: Мне не очень нравится использовать разделы, когда они не нужны. Если вы хотите использовать их в качестве административных границ, вам лучше использовать LVM / ZFS или какой-то простой способ их расширения.
Эрик Йоханссон,
Мне тоже не очень нравится использовать разделы ...
kopeklan
1

Что за срыв /var/lib? Если это похоже на мою систему, большая часть этого (скажем, 500 МБ) занята /var/lib/mysql?

Все остальные цифры выглядят вполне нормально и разумно, поэтому движущиеся /var/lib/mysqlи /var/wwwявляются единственными реалистичными долгосрочными решениями.

Для удаления старых файлов журналов, которые ваши журналы, вращаясь, например , у вас есть /var/log/messages, /var/log/messages.1, /var/log/messages.2.gzи т.д., или , может быть /var/log/messages-20101221, /var/log/messages-20101220.gzи т.д.?

Очевидный способ удалить их по возрасту, например

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

Кроме того, убедитесь, что ваши настройки logrotate /etc/logrotate.confсоответствуют вашим требованиям. Я бы сказал, что вы не должны их менять, так как они не являются вашей основной проблемой, но, возможно, вы хотите хранить только журналы за неделю, в этом случае попробуйте что-то вроде этого:

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

Затем существуют файлы для каждой службы, например, syslog, mysql, apache и т. Д., Для настройки ротации журналов для каждой из них. В системах Debian и Red Hat это уже должно быть настроено для вас.

Если у вас еще нет logrotate, то это немного сложнее. Я бы посмотрел на использование grep или tail, чтобы сохранить последние записи, затем удалить файл и перезапустить syslogd (например, service syslogd restartили pkill -HUP syslogd.

Наконец, сценарий, который я написал только для этой ситуации 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
источник