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系统磁盘空间占满的解决办法,主要还是记录一下查找磁盘空间命令的使用方法,以备日后不时之需。更多的Linux命令使用方法,这里还有:
- 三个命令工具Rsync,SCP,Tar-快速解决VPS远程网站搬家与数据同步
- Linux系统监控命令整理汇总-掌握CPU,内存,磁盘IO等找出性能瓶颈
- Linux Crontab命令定时任务基本语法与操作教程-VPS/服务器自动化
PS:2019年2月22日更新,当磁盘空间已经即将用尽时,这时候就要考虑扩容硬盘了:Linux VPS主机硬盘扩容方法-VPS新硬盘分区挂载和硬盘动态扩容。
一、解决磁盘空间占用100%问题
1.1 查看当前磁盘剩余空间
命令:df -h
,使用这个命令可以看到当前VPS主机的磁盘空间还有多少了,如果看到占用达到90%以上,这时你就要清理一下空间了。
1.2 查找大文件
使用以下命令查找在大文件
#当目录下的大于1G、100MB、10MB的文件
find . -type f -size +1024M
find . -type f -size +100M
find . -type f -size +10M
使用以上命令就可以摸索出大文件了,如果你的VPS的文件多的话,你还需要进入某一个目录下执行上述命令。
1.3 查找大目录
使用以下命令找出大文件夹和目录:
sudo du -s * | sort -nr | head #显示前10个占用空间最大的文件或目录
dudo du -hm --max-depth=2 | sort -nr | head -12 #显示前12个占用空间大的目录(包括二级目录)
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与数据存储对应关系如下:
inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
使用命令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安装与使用-强大的服务器性能监控工具掌控服务器软硬件资源。
文章出自:挖站否 https://wzfou.com/disk-no-space/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
- SolusVM从入门到精通-安装、使用和技巧
- Linux独立服务器和VPS主机硬盘动态扩容-LVM逻辑卷扩大缩小方法
- Linux VPS主机硬盘扩容方法-VPS新硬盘分区挂载和硬盘动态扩容
- VPS主机和独立服务器网络配置方法-Linux手动设置IPv4和IPv6地址
- Linux系统磁盘空间占满的解决方法-No Space Left on Device错误
- SolusVM常见问题:SolusVM迁移搬家,SolusVM VNC和SolusVM SSL证书安装续期
好实用啊 今天刚好在打理已经荒废的站,,登陆linode看了下磁盘使用满了 正在发愁怎么清理。。。不过linode很慷慨的给我免费升级到25G的空间了。。