提示: no space left on device 磁盘空间不足
1.1常见原因
磁盘空间不足原因
- block剩余数量(磁盘空间),一般是一些较大文件导致. 日常理解磁盘空间不 足,linux,windows,手机.
- inode剩余数量不足
- block被占用,文件为彻底删除导致
磁盘能存文件,靠的是 block(数据块) 和 inode(索引节点) 两个核心,缺一个都存不了文件,这是理解所有空间不足的前提
- 🔹 block(数据块):真正存文件实际内容的地方,比如文档文字、图片像素、程序代码,你日常说的 “磁盘剩 10G”,默认指的就是 block 剩余量
- 大小固定(比如 4KB),一个大文件会占多个 block,小文件哪怕 1 字节也会占 1 个 block(剩余空间浪费)
- 🔹 inode(索引节点):存文件属性信息(文件名、创建时间、权限、block 存放位置),相当于文件的 “身份证”
- 数量格式化时固定,每个文件(哪怕空文件)都要占用 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