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

Answers:


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移至例如/ home
  4. 也许删除/ var分区。

FWIW:当分区没有实际用途时,我真的不喜欢使用分区。如果你想使用它们作为管理边界你最好有LVM / ZFS或某种简单的方法来扩展他们..
埃里克·约翰逊

我也不太喜欢使用分区...
kopeklan 2010年

1

发生什么了/var/lib?如果它像我的系统,那么大部分(例如500 MB)由/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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.