Linux系统磁盘空间占满的解决方法-No Space Left on Device错误

关于Linux磁盘被占满的问题,之前在使用WDCP面板时有遇到过,因为在面板后台开启了网站日志,但是日志没有定期删除,长此以往导致了VPS主机的磁盘空间被日志占满了。当磁盘空间达到100%时,网站就会出现一些莫名的错误,例如后台无法登录,无法评论以及页面空白等等。

不过最近在维护网络监控平台ping.wzfou.com时,发现磁盘空间还有不少,但是日志中依然报No Space Left on Device错误。经过排查,终于发现是Linux磁盘的inode被用完了,导致网站无法继续写入新的数据,最终的后台就是Smokeping也运行不正常,报表都无法显示。

不管是磁盘空间还有磁盘的inode空间,只要是被占用满了都会造成网站的不稳定。有时候我们可能没有怀疑到这一点,可能还会去寻找其它的问题。磁盘被占满最严重可能还会导致S#S¥H也无法进入,这时需要我们从VPS面板中执行释放磁盘空间的相关操作了。

Linux系统磁盘空间占满的解决办法-No Space Left on Device错误

这篇文章就来分享一下Linux系统磁盘空间占满的解决办法,主要还是记录一下查找磁盘空间命令的使用方法,以备日后不时之需。更多的Linux命令使用方法,这里还有:

  1. 三个命令工具Rsync,SCP,Tar-快速解决VPS远程网站搬家与数据同步
  2. Linux系统监控命令整理汇总-掌握CPU,内存,磁盘IO等找出性能瓶颈
  3. Linux Crontab命令定时任务基本语法与操作教程-VPS/服务器自动化

PS:2019年2月22日更新,当磁盘空间已经即将用尽时,这时候就要考虑扩容硬盘了:Linux VPS主机硬盘扩容方法-VPS新硬盘分区挂载和硬盘动态扩容

一、解决磁盘空间占用100%问题

1.1  查看当前磁盘剩余空间

命令:df -h,使用这个命令可以看到当前VPS主机的磁盘空间还有多少了,如果看到占用达到90%以上,这时你就要清理一下空间了。

二、 解决磁盘inode占用100%问题

2.1  查看inode占用情况

硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。每个inode节点的大小,一般是128字节或256字节。inode与数据存储对应关系如下:

使用命令df -ia可以查询当前inode占用情况:

2.2  查出inode占用大的目录

使用以下命令计算出当前目录下各个文件夹占用inode情况:


#当前各大文件夹占用inode情况
for i in /var/*; do echo $i; find $i |wc -l; done
#排序
sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

多次使用以上命令就可以查出具体的占用大inode的目录了,然后上面的方法删除文件或者文件夹即可。

三、总结

inode一般来说是用不完的,除非是程序产生大量的日志,例如本次wzfou.com遇到的问题是/var/spool/postfix/maildrop/ 中有大量的文件,这是因为postfix运行不正常导致的。当然如果sendmail或者postfix正常运行,则会在/var/mail目录下也会堆积大量的邮件。

如果不用sendmail或者postfix的话,建议直接删除或者卸载它们:

apt-get remove sendmail*
yum remove sendmail
或者
yum remove postfix
sudo apt-get remove postfix
sudo apt-get remove --auto-remove postfix

有些朋友想到可以用脚本来监控VPS主机的inode使用情况,其实挖站否之前介绍的Zabbix可以实现服务器的inode监控,详细见:Zabbix安装与使用-强大的服务器性能监控工具掌控服务器软硬件资源

发表评论