• linux No space left on device 由索引节点(inode)爆满引发500问题


    inode是什么?
    
    理解inode,要从文件储存说起。
    文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
    
    操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。
    这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。 文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。
    这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

    最近网站编辑反应上传图片失败,网站页面也经常500错误

    常规500错误查找http://www.cnblogs.com/hiit/p/8568480.html找了一圈发现配置没问题。

    查看了nginx error错误日志发现磁盘空间满了

    用df -h命令查看了一下磁盘使用情况,发现空间还有剩余。

    发现问题后来用df -i查看了一下索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。

    解决方法:删除无用的临时文件,释放inode。

    可以查看 /tmp 目录下有很多临时文件。

    也可以选择/var/spool/目录

    输入一下命令查看/var/spool/下的文件个数

    for i in /var/spool/; do echo $i; find $i |wc -l|sort -nr; done  

    看到有200多万文件

     cd /var/spool/clientmqueue/  进入这个目录,删掉这些没用的文件,查看一下,60万文件吧,文件太多,

    于是就用到了这个命令:

    1

    ls | xargs rm -rf

    2或者这个命令

    find . -name "*" | xargs rm -rf   

    可以分批的处理删除文件,如下图是删除后的效果:inode使用21%。好了

    就是因为垃圾文件长时间没清理,导致清理文件花太多的时间,为了避免该类问题,最好对系统的垃圾文件进行定时清理,或者部署监视系统。

    可以根据较大目录的文件占用情况,临时转移部分文件到占用磁盘较小的目录中。

  • 相关阅读:
    PHP版本VC6与VC9/VC11/VC14、Thread Safe与None-Thread Safe等的区别
    Django 开发------django-crontab实现服务端的定时任务
    django HTML 数据处理
    HTML 罗盘式时钟
    Tcpdump 常用命令、参数记录
    jquery 实现 <imput>标签 密码框显示/隐藏密码功能
    Django 实现分页功能(django 2.2.7 python 3.7.5 )
    bootstrap 4 学习笔记
    IIS属性解析
    IIS站点权限设置
  • 原文地址:https://www.cnblogs.com/hiit/p/8582942.html
Copyright © 2020-2023  润新知