“device or resource busy”错误源于设备被占用,需按顺序排查:先检查挂载(mount)、再查占用进程(lsof/fuser)、接着排查lvm/swap/raid占用,最后刷新分区表(partprobe)或重启。

遇到 “Device or resource busy” 错误,本质是系统内核或某个进程仍在使用目标设备,导致 fdisk 无法安全写入分区表。这不是权限问题,也不是命令写错,而是资源被占用的保护机制。关键在快速定位并释放占用源。
确认设备是否被挂载或用作文件系统
这是最常见原因。即使你没手动挂载,系统也可能自动挂载(比如 udev、桌面环境或 fstab 中配置了自动挂载)。
- 运行
mount | grep /dev/sdX(把 sdX 替换为你的磁盘,如 sdb)查看是否已有挂载点 - 若输出中有对应行,执行
umount /dev/sdX1(注意是分区,不是整盘)或umount /mount/point - 如果提示 “target is busy”,说明有进程正在访问该挂载点,需进一步排查
检查是否有进程正打开设备或目录
挂载点被占用时,往往有活跃进程在读写其中的文件。
- 用
lsof +D /mount/point查看所有访问该路径的进程(+D 递归扫描目录) - 或用
fuser -v /mount/point快速列出 PID 和进程名 - 对非关键进程,可执行
fuser -k /mount/point强制终止;若涉及系统服务,建议先停止服务再卸载
排查 LVM、swap 或 RAID 占用
这类底层管理工具会隐式持有设备句柄,fdisk 看不到但内核已锁定。
- 查 LVM:运行
pvdisplay /dev/sdX、vgscan、lvdisplay,确认该盘未被加入物理卷 - 查 swap:运行
swapon --show或cat /proc/swaps,若 /dev/sdX1 出现在列表中,先执行swapoff /dev/sdX1 - 查 RAID:运行
cat /proc/mdstat,确认设备未参与任何 md 设备
刷新内核分区表或重启识别
fdisk 写完分区表后提示 “Device or resource busy”,常因内核仍沿用旧分区信息,而非设备被占用。
- 执行
partprobe /dev/sdX强制内核重新读取分区表(无需重启) - 若 partprobe 报错或无效,尝试
kpartx -a /dev/sdX(尤其适用于虚拟机或 multipath 场景) - 仍不生效时,重启是最稳妥方式——它强制加载最新分区结构,避免残留缓存干扰
整个过程重在顺序:先查挂载 → 再查进程 → 排查 LVM/swap/RAID → 最后刷新或重启。跳过任一环节都可能反复报错。











