首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
软件
运维软件
办公软件
书籍资源
技术陪跑营
重要信息
首页 运维面试【面试真经】磁盘空间满问题排查方法

【面试真经】磁盘空间满问题排查方法

@[toc]

问题描述

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

No space left on device …

问题原因

  • 磁盘分区空间使用率达到百分之百。

  • 磁盘分区inode使用率达到百分之百。

  • 僵尸文件:已删除文件因句柄被占用未释放导致相应空间未释放。

  • 挂载点覆盖:在原有文件系统的相应目录下已经存在大量文件。挂载了新磁盘后,导致使用 df 命令能统计到相关空间使用,而使用 su 命令统计不到。

处理办法

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

分区容量满
inode容量满
修改inode数量
僵尸文件分析删除
挂载点覆盖
分区容量满
1、分区容量满导致磁盘空间满

远程连接Linux实例,运行 df -h 查看磁盘使用率。
返回结果里 Mounted on 下显示的是挂载目录。

循环执行如下指令,找到容量比较大的目录并进入目录,直到找到最精确的文件或目录,再结合业务情况等判断,删除相关文件或目录。也可以购买更大的数据盘来分担处理。

cd /
[root@ecs-c13b ~]# du -sh
5.0G    .
2、inode容量满

如果是inode容量满导致磁盘空间满,按以下步骤操作:

远程连接Linux实例。
运行以下命令分析根目录下每个目录下面有多少个文件。

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

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

3. 修改inode数量

ECS Linux 实例的inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置;如果存放文件很多,需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode耗尽所致。

按以下步骤调整inode节点数量:

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

查看当前inode使用情况:

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

4. 如果要调整:

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

[root@ecs-c13b /]# dumpe2fs -h /dev/vda1 |grep node
dumpe2fs 1.42.9 (28-Dec-2013)
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
Inode count:              2621440
Free inodes:              2555970
Inodes per group:         8192
Inode blocks per group:   512
First inode:              11
Inode size:           256
Journal inode:            8
First orphan inode:       1835026
Journal backup:           inode blocks
[root@ecs-c13b /]# 

5. . 僵尸文件分析删除

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

按以下步骤查看并删除僵尸文件:

yum install lsof -y
lsof |grep delete | more

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

  • 重启服务器。

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

总结

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

本文链接:http://www.geekyunwei.com/1393.html

网友评论comments

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 公众号《极客运维之家》
扫二维码
扫二维码
返回顶部