轻量应用服务器磁盘空间及Inode满的问题如何排查解决?

71阅读
0评论
0点赞

本文针对轻量应用服务器在Linux环境下遇到的磁盘空间不足问题进行了详细的分析与解决。首先介绍了可能的原因,包括磁盘分区空间或Inode使用率达到100%、存在僵尸文件以及挂载点覆盖等。随后提供了具体的解决方案,如清理大文件、升级配置、增加Inode数量和处理僵尸文件等。

在使用轻量应用服务器的Linux实例时,如果遇到“No space left on device”的错误提示,表明磁盘空间不足。本文将指导您如何诊断并解决磁盘空间不足的问题。

问题原因

磁盘空间不足的问题通常由以下几个原因引起:

  1. 磁盘分区空间使用率达到100%:这通常是因为磁盘上的文件或目录占用的空间过大。
  2. 磁盘分区Inode使用率达到100%:即使磁盘空间仍有余地,也可能因为Inode资源耗尽而无法创建新的文件或目录。
  3. 存在已删除未释放的僵尸文件:这类文件虽然已被删除,但由于文件句柄被打开,导致文件空间未能被释放。
  4. 挂载点覆盖:在原有文件系统的目录下挂载新磁盘后,挂载点被覆盖,可能导致系统内的应用继续读写原有文件系统空间,从而出现空间不足的情况。
  5. inotify watches达到上限:inotify是Linux系统的一种监控文件系统事件的机制,该错误与磁盘空间无关。

解决方案

一、磁盘分区空间使用率达到100%

清理占用空间较大的文件或目录

  1. 使用救援连接Linux服务器:具体操作请参见使用救援连接Linux服务器

  2. 查看磁盘使用率

    df -h

    image

  3. 查找占用空间较大的目录

    cd /
    du -sh *

    image

  4. 逐级查看占用空间较大的子目录

    cd /usr
    du -sh *
  5. 删除不再使用的文件或目录:根据业务需求决定哪些文件或目录可以安全删除。

升级配置、扩容数据盘或挂载数据盘

如果通过清理文件无法释放足够的空间,可以考虑升级配置、扩容磁盘或挂载数据盘。具体操作请参见升级配置挂载数据盘扩容数据盘

二、磁盘分区Inode使用率达到100%

查询Inode使用率

  1. 使用救援连接Linux服务器:具体操作请参见使用救援连接Linux服务器
  2. 查询Inode使用率
    df -i

    image

清理Inode占用高的文件或目录

  1. 分析根目录下的每个二级目录下有多少个文件

    for i in /*; do echo $i; find $i | wc -l; done

    image

  2. 逐层进入Inode占用最高的目录,继续执行上述命令,逐步定位占用过高空间的文件或目录,并进行相应清理。

增加Inode数量

  1. 卸载文件系统
    umount /home
  2. 重新建立文件系统,增加Inode节点数
    mkfs.ext3 /dev/xvdb -N 1638400
  3. 重新挂载目录
    mount -a
  4. 确认修改后的Inode节点数
    dumpe2fs -h /dev/xvdb | grep node

三、存在僵尸文件

  1. 使用救援连接Linux服务器:具体操作请参见使用救援连接Linux服务器

  2. 安装lsof

    # Alibaba Cloud Linux、CentOS等系统
    yum install -y lsof

    # Debian、Ubuntu等系统
    apt-get install -y lsof
  3. 查看僵尸文件占用情况

    lsof |grep delete | sort -k7 -rn | more

    image

  4. 释放句柄,清除僵尸文件

    • 重启服务器清除:重启服务器,系统会退出现有进程,释放调用的deleted文件的句柄。
    • 通过kill命令清除
      1. 列出PID进程号
        lsof |grep delete
      2. 停止占用这些文件的服务进程
        kill <进程号>

四、挂载点覆盖

image

但当我们把/dev/vdb1挂载到/home目录后,如下图所示,可以看到系统盘/dev/vda1使用率还是95%,整个根分区下最大的目录仅有/usr占用超过1GB,无法找到具体哪个目录占用高,/home目录统计到的使用空间仅为20KB,不是此前看到的24GB空间占用,此现象即为挂载点覆盖。

image

解决方法:

  1. 取消磁盘分区挂载:这一步骤可能会导致应用服务中断,请选择合适的业务时间进行。
  2. 检查原挂载目录下的空间占用情况
评论(0)
暂无评论,期待您的发言...
发表评论