周顺的技术博客

  • 1.1常见原因
  • 1.2block原因,一些大文件.
  • 排查流程
  • 1.3inode大量被占用导致磁盘空间不足
  • 排查流程
  • 1.4block占用,文件未被彻底删除导致的故障
  • 首页
  • 榜上有名
  • 文章归档
  • 读者排行
  • 豆瓣书影
  • 友情链接
  • DevOps (4)
  • Docker (4)
  • k8s (9)
  • linux (11)
  • Mysql (9)
  • Python (2)
  • Redis (1)
  • Shell (6)
  • 主题 (0)
  • 未分类 (0)

磁盘故障:磁盘空间不足系列⭐⭐⭐⭐⭐

  • xiaoteng
  • 2024-05-11
  • 0

提示: no space left on device 磁盘空间不足

1.1常见原因

磁盘空间不足原因

  • block剩余数量(磁盘空间),一般是一些较大文件导致. 日常理解磁盘空间不 足,linux,windows,手机.
  • inode剩余数量不足
  • block被占用,文件为彻底删除导致

磁盘能存文件,靠的是 block(数据块) 和 inode(索引节点) 两个核心,缺一个都存不了文件,这是理解所有空间不足的前提

  1. 🔹 block(数据块):真正存文件实际内容的地方,比如文档文字、图片像素、程序代码,你日常说的 “磁盘剩 10G”,默认指的就是 block 剩余量
    1. 大小固定(比如 4KB),一个大文件会占多个 block,小文件哪怕 1 字节也会占 1 个 block(剩余空间浪费)
  2. 🔹 inode(索引节点):存文件属性信息(文件名、创建时间、权限、block 存放位置),相当于文件的 “身份证”
    1. 数量格式化时固定,每个文件(哪怕空文件)都要占用 1 个 inode,inode 用完了,哪怕 block 还有剩,也没法新建文件

1.2block原因,一些大文件.

排查流程

检查当前系统磁盘使用情况: df -h

一步一步排查(哪个目录或文件)大量占用空间 du -sh

#1.查看整体 
df -h 查看哪个磁盘分区空间不足. 
通过du 查看 
#2.一层一层排查 
看第1层目录 
du -sh /* |sort -hrk1 
du -sh /var/* |sort -rhk1 
du -sh /var/log/* |sort -rhk1 
#3.定位到文件或目录 确认后再删除.
<strong>小结: </strong>
遇到磁盘空间不足,会使用df命令和du命令排查

1.3inode大量被占用导致磁盘空间不足

磁盘分区格式化后inode总数是固定的,每创建1个文件就要占用1个inode.

随着时间推移一些服务发生异常,大量生成小文件,最终导致inode不足

排查流程

创建文件提示磁盘空间不足. 
通过df -h查看发现磁盘空间还有空间,df -i查看inode是否耗尽. 
df -h 没有满. 
df -i 不足了. 
排查: find / -type d -size +1M #目录大小(文件名)大于1M 

解决

#方案01 
#删除 
ls |xargs rm -f 
#如果上面还是无法删除,通过下面的方式缩小范围. 
ls a* |xargs rm -f 
ls 1* |xargs rm -f 
#方案02:删除文件所在的目录 记录下目录的权限,所有者.

1.4block占用,文件未被彻底删除导致的故障

如何定位到是文件未彻底删除导致的故障?

df -h 提示磁盘空间不足,du -sh查看没有满,占用的空间与df的差异

精确定位到哪个文件未彻底删除 
yum install -y lsof 
lsof |grep delete #文件被删除但是还正使用中. 
lsof |grep delete 
进程命令 pid 文件大小 
文件名 删除标记 
tail 8160 root 3r REG 253,0 10485760000 
34006801 /var/log/big (deleted) 
重启进程或结束对应进程 
kill pid
© 2026 周顺的技术博客
Theme by Wing
  • {{ item.name }}
  • {{ item.name }}