LinuxVPS/云主机建站系统

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

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

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

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

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

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

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

PS:当磁盘空间已经即将用尽时,这时候就要考虑扩容硬盘了:《VPS/云主机硬盘扩容大法》。

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

1.1  查看当前磁盘剩余空间

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

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

1.2  查找大文件

使用以下命令查找在大文件

#当目录下的大于1G、100MB、10MB的文件
find . -type f -size +1024M
find . -type f -size +100M
find . -type f -size +10M

使用以上命令就可以摸索出大文件了,如果你的VPS的文件多的话,你还需要进入某一个目录下执行上述命令。

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

1.3  查找大目录

使用以下命令找出大文件夹和目录:

sudo du -s * | sort -nr | head #显示前10个占用空间最大的文件或目录 
dudo du -hm --max-depth=2 | sort -nr | head -12 #显示前12个占用空间大的目录(包括二级目录) 

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

1.4  删除文件或者目录

具体使用规则:

rm -rf 目录名字

-r 向下递归,不管有多少级目录,一并删除。

-f 直接强行删除,没有任何提示。

实例:

删除文件夹实例:

rm -rf /var/log/httpd

这句代码的意思是:删除/var/log/httpd目录以及其下所有文件、文件夹

删除文件实例:

rm -f /var/log/httpd/access.log

这个将会强制删除/var/log/httpd/access.log这个文件

注意:在linux中是没有设置回收站的,因此在使用rm命令的时候一定要小心些,删除之后的文件是无法恢复的。

 

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

2.1  查看inode占用情况

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

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

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

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

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的目录了,然后上面的方法删除文件或者文件夹即可。

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

三、总结

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

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

如果不用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安装与使用-强大的服务器性能监控工具掌控服务器软硬件资源

解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

(END)

文章出自:挖站否 https://wzfou.com/disk-no-space/,版权所有。