• 磁盘空间满问题排查方法


    问题描述
    在云服务器ECS Linux系统内创建文件时,出现类似如下空间不足提示:

    No space left on device …

    问题原因

    • 磁盘分区空间使用率达到百分之百。
    • 磁盘分区inode使用率达到百分之百。
    • 僵尸文件:已删除文件因句柄被占用未释放导致相应空间未释放。
    •  载点覆盖:在原有文件系统的相应目录下已经存在大量文件。挂载了新磁盘后,导致使用 df 命令能统计到相关空间使用,而使用 su 命令统计不到。

    处理办法
    不同的原因需要通过不同的方法解决:

    1. 分区容量满
    2. inode容量满
    3. 修改inode数量
    4. 僵尸文件分析删除
    5. 挂载点覆盖
    6. 分区容量满

    1、分区容量满导致磁盘空间满
    远程连接Linux实例,运行 df -h 查看磁盘使用率。
     返回结果里 Mounted on 下显示的是挂载目录。
    循环执行如下指令,找到容量比较大的目录并进入目录,直到找到最精确的文件或目录,再结合业务情况等判断,删除相关文件或目录。也可以购买更大的数据盘来分担处理。
     

    1. cd /
    2. [root@ecs-c13b ~]# du -sh
    3. 5.0G .

    2、inode容量满
    如果是inode容量满导致磁盘空间满,按以下步骤操作:
    远程连接Linux实例。
    运行以下命令分析根目录下每个目录下面有多少个文件。

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

    逐层进入inode占用最高的目录,继续执行上述指令,逐步定位占用过高空间的文件或目录,最后进行相应清理。
    3. 修改inode数量
    ECS Linux 实例的inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置;如果存放文件很多,需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode耗尽所致。
    按以下步骤调整inode节点数量:


    注意:
    inode的调整需要重新格式化磁盘,请确保您已经备份了数据再执行以下操作。
    查看当前inode使用情况:

    1. [root@ecs-c13b /]# df -i
    2. Filesystem Inodes IUsed IFree IUse% Mounted on
    3. devtmpfs 482394 339 482055 1% /dev
    4. tmpfs 484982 1 484981 1% /dev/shm
    5. tmpfs 484982 468 484514 1% /run
    6. tmpfs 484982 16 484966 1% /sys/fs/cgroup
    7. /dev/vda1 2621440 183137 2438303 7% /
    8. tmpfs 484982 1 484981 1% /run/user/0
    9. [root@ecs-c13b /]#

    4. 如果要调整:
    1)卸载系统文件

    umount /dev/sdb2


    2) 建立新文件系统,指定inode节点数
    3) 修改fsab文件自动挂载
    4)挂载文件系统
    mount -a
    5)查看修改后的inode参数

    1. [root@ecs-c13b /]# dumpe2fs -h /dev/vda1 |grep node
    2. dumpe2fs 1.42.9 (28-Dec-2013)
    3. Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
    4. Inode count: 2621440
    5. Free inodes: 2555970
    6. Inodes per group: 8192
    7. Inode blocks per group: 512
    8. First inode: 11
    9. Inode size: 256
    10. Journal inode: 8
    11. First orphan inode: 1835026
    12. Journal backup: inode blocks
    13. [root@ecs-c13b /]#

    5. 僵尸文件分析删除
    如果磁盘和inode都没有问题,则需要查看是否存在未被清除句柄的僵死文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间。如果这些文件过多,会占用很大的磁盘空间。
    按以下步骤查看并删除僵尸文件:

    1. yum install lsof -y
    2. lsof |grep delete | more

    采用以下方法释放句柄,以清除僵尸文件:
      lsof |grep -i delete

    • 重启服务器。
    • 正常停止或杀掉占用这些文件的服务进程。

    总结
    解决磁盘空间满的方法有很多,主要还是先排查是哪个原因导致的,然后在进行有针对性的解决

  • 相关阅读:
    天地图自定义标记点
    【PMP考前冲刺题-第二小节(2022.7)】解析
    【Python从入门到进阶】38、selenium关于Chrome handless的基本使用
    JAVA在线电子病历编辑器源码 B/S架构
    【模型压缩】Distiller学习-初认识
    基于Python开发的开心麻花影视作品分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)
    JVM 彻底搞懂JVM内存区域及直接内存
    kubeadm init 报错 ”unknown service runtime.v1alpha2.RuntimeService”
    HTML5期末考核大作业、HTML个人主页界面设计源码
    编程逻辑入门必备2:归纳推理
  • 原文地址:https://blog.csdn.net/qq_36733838/article/details/127863672