Linux 提示“设备或资源忙”?最全排查和根治方案
做linux运维的人员一定遇到过这样的故障,卸载或者删除某个文件时,系统提示此时删目录删不掉、卸载磁盘失败、移动文件夹报错、改挂载点卡死……。大部分人的第一反应:暴力强制删、强制卸载。但生产环境这么干,极易引发:
今天我结合生产实践和网络资料,把可能的情况都做一个详细的介绍。linux内核机制:只要文件或目录及设备被进程、终端、挂载、句柄占用,内核就会锁定,禁止删除、移动、卸载。常见主要有4大原因:业务进程正在读写(日志、Java、脚本、nginx 等)不推荐上来就暴力操作
正确流程:找占用 → 释资源 → 再操作
#查看目录占用进程fuser -m /disk2#详细模式(推荐)fuser -vm /disk2
直接显示:pid、用户、进程名,一眼锁定罪魁祸首。#递归查看目录所有被打开文件lsof +D /data#排查:已删除但空间不释放(运维高频坑)lsof | grep deleted
重点:deleted文件,磁盘不释放,必须重启对应进程!再配合fuser -m 查其他终端占用,退出即可。典型:nginx、tomcat、java、服务进程。像我们的终端有占用data目录,直接连接断开了,一半仅在紧急清理下使用。#延迟卸载:业务平稳后自动释放,不丢数据umount -l /data
很多人找不到进程,是因为不是进程占用,是设备占用。#排查loop设备losetup -alsblk | grep loop#释放步骤:umount /dev/loop0p1#释放loop设备losetup -d /dev/loop0#如果是 LVM / 设备映射忙: dmsetup ls --treedmsetup remove 设备名
- 不要暴力 rm -rf 忙目录会造成句柄泄露、磁盘占用不释放、IO 异常。
- deleted 文件不重启进程 = 空间永远不释放删文件没用,必须重启持有进程。
linux资源忙不是故障,是内核保护机制。标准根治流程永远是:查占用 → 优雅释放 → 再操作只要不暴力硬搞,一般不会出生产事故。如果你觉得文章对你的运维工作有帮助,记得点赞加关注。