问题总结 磁盘空间已满
问题现象
- 接口响应超时
- 网站登录正常但访问提示504
- 应用系统响应时好时坏
- 也可能是集群部署时可能是某几台机器上的JAR不同步
- 导致dubbo注册中心上接口不一致
- 数据库查询 hang 挂起1
- 磁盘空间满导致Jenkins构建失败2
- 部分区域响应正常3
磁盘空间
- 查看磁盘空间命令 df4
- 功能:用来检查linux服务器的文件系统的磁盘空间占用情况
- 参数
- -h:以更易读的方式显示目前磁盘空间和使用情况
- 查询结果包含内容
- Filesystem 代表该文件系统时哪个分区,所以列出的是设备名称
- Size 大小
- Used 已经使用的空间大小
- Available 剩余的空间大小
- Use% 磁盘使用率。如果使用率在90%以上时,就需要注意了,避免磁盘容量不足出现系统问题
- Mounted on 磁盘挂载的目录,即该磁盘挂载到了哪个目录下面
- 查询结果包含内容
- -i 展示 inode 信息
- -h:以更易读的方式显示目前磁盘空间和使用情况
inode5
- 定义:UNIX 操作系统中的一种数据结构
- 本质:结构体(包含诸多信息)
- 空间:文件系统磁盘空间中大约百分之一空间分配给了 inode 表
- 概述:索引节点,用来存放档案及目录的基本信息
- 内容:
- inode 编号
- 用来识别文件类型,以及用于 stat C 函数的模式信息
- 文件的链接数目
- 属主的ID (UID)
- 属主的组 ID (GID)
- 文件的大小
- 文件所使用的磁盘块的实际数目
- 最近一次修改的时间
- 最近一次访问的时间
- 最近一次更改的时间
排查步骤6
- 磁盘空间
- 定位分区:
- 目的:查看哪个分区磁盘容量大
- 命令:df -h
- 定位目录:
- 目的:对目录下的文件按照容量大小倒叙
- 命令:du -h --max-depth=1 {path} | sort -hr
- –max-depth=<目录层数> 超过指定层数的目录后,予以忽略
- sort -r 降序排序 -h 使用易读性数字
- 命令:du -sh * 输出当前目录下各个文件夹的容量大小
- 逐级定位:逐层目录执行上述命令,定位到最终的占用磁盘空间的大文件
- 定位进程:
- 目的:哪个进程在占用此容量大的文件
- 命令:lsof {fileName}
- 安装:yum install lsof -y
- 权限:root 用户执行
- 定位分区:
- 索引结点
- 索引编号:
- 目的:查询文件对应索引编号
- 命令:
- stat {fileName}
- ls -i
- 定位文件:
- 命令:for i in ./; do echo $i; find $i | wc -l; done
- 逐层目录执行上述命令定位最终的大文件
- 索引编号: