由于磁盘空间已满,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 * in /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删除日志文件,历史logging等的正确方法是什么?
快速和肮脏:将/var/www移动到/home/www ,然后创build一个符号链接:
rsync -a /var/www /home && rm -r /var/www && ln -s /home/www /var/www
更长期:可能把你的/var/www和/var/log目录放到他们自己的专用分区中。 您可以缩小/home放置,并使用释放的空间来创build合适的分区。
mv /var/log/*gz /var/log/*.0 /home/backup/var/log yum clean packages或者apt-get clean从/ var / cache中删除东西 什么是/var/lib的故障? 如果它像我的系统,大部分(比如500 MB)被/var/lib/mysql占用?
其他数字看起来都很正常合理,所以移动/var/lib/mysql和/var/www是唯一现实的长期解决scheme。
为了移除旧的日志文件,你的日志是否被轮换,例如你有/var/log/messages , /var/log/messages , /var/log/messages等,或者/var/log/messages-20101221 , /var/log/messages-20101221等?
去除这些问题的显而易见的方法是年龄,例如
# find /var/log -type f -mtime +14 -print # find /var/log -type f -mtime +14 -exec rm '{}' \;
另外,请检查/etc/logrotate.conf中的logrotate设置是否是您想要的。 我会说你不应该改变他们,因为他们不是你的主要问题,但也许你只想保留一个星期的日志,在这种情况下尝试这样的事情:
daily rotate 7 create compress include /etc/logrotate.d
然后有每个服务的文件,例如syslog,mysql,apache等来为每个服务configuration日志轮转。 在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