【Linux】磁盘空间不足

错误提示: no space left on device

经典版(block占用)

模拟

powershell 复制代码
dd if=/dev/zero  of=/var/log/nginx.log    bs=1M count=2000

排查

powershell 复制代码
#1. df -h 查看哪里空间不足,哪个分区

#2. du -sh详细查看目录所占空间
du -sh /* 排查占用空间大的目录
du -sh /var/* 
du -sh /var/log/*  

#3. 最终通过du -sh 排查到具体的大文件或大的目录

#4. 找出后确认是否可以删除.

inode 不足

现象

powershell 复制代码
# df -h 查看发现磁盘空间没有满,那是什么原因导致的呢?

# 排查:
1. df -h查看磁盘空间没有满,df -i查看inode使用情况
2. 找出这个分区中,大目录(目录本身大小大于1MB,du -sh目录所占空间)就行
3. 找出有大量小文件的目录
4. 确认是否可以删除或处理.

# 命令,筛选目录本身大于 1M 的
find / -type d -size +1M

# 命令,筛选目录下,文件数量
find / -type f | xargs dirname | sort | uniq -c | sort

模拟

powershell 复制代码
mkdir -p /lndsnx/test-inode
cd /lndsnx/test-inode 
touch {01..100000} 可能报错参数过长
echo {01..100000} | xargs touch

未彻底删除

原理

文件彻底删除的条件

  1. 删除文件,硬链接数为 0,文件相当于被删除了,使用 rm 命令
  2. 文件调用数为 0,文件是否被使用中

排查步骤:

  1. 如何知道连接数是否为 0,一般 ls,find查看,没有则为 0
  2. 如何知道进程调用数是否为 0,lsof 显示打开的文件,lsof | grep 文件名

模拟

powershell 复制代码
# 模拟文件调用,但是删除了文件入口
tail -f nohup.out

# 通过 tail -f 调用占用着
rm -f nohup.out # 删除

# 查看调用
lsof | grep nohup.out
相关推荐
悠哉悠哉愿意35 分钟前
【机器学习学习笔记】机器学习引言
笔记·学习·机器学习
taxunjishu40 分钟前
ProfiNet 转 Ethernet/IP基于西门子 S7 - 1500 与罗克韦尔 PLC 的汽车零部件加工线协同案例
运维·人工智能·物联网·自动化·区块链
用户51681661458411 小时前
[VMware 无法检测此光盘中映像中的操作系统] VMware创建虚拟机无法检测操作系统iso镜像文件
linux·前端
MacroZheng1 小时前
斩获 7.8K star!一款堪称开源监控新标杆的项目,牛皮!
java·linux·后端
YC运维1 小时前
Ansible模块
java·服务器·前端
Go 鹏ya1 小时前
【Python学习笔记】whl包打包
笔记·python·学习
博语小屋1 小时前
程序(进程)地址空间(1)
linux
yunyi1 小时前
使用acme.sh来实现自动化申请和续订TLS证书
linux·nginx·docker
包达叔2 小时前
docker国内镜像源
运维·docker·容器
未来可期LJ2 小时前
【Linux 小实战】自定义 Shell 的编写
linux·服务器