无法删除设备/ dev / loop0

时间:2011-05-04 09:13:15

标签: linux ubuntu mount

我不安全地删除了使用losetup连接到loop0的USB设备,之后无法删除或分离loop0。

losetup -a显示/dev/loop0: [0005]:145606719 (/dev/sdb1)

当我将设备重新安装到/ dev / sdb1,umount并尝试losetup -d /dev/loop0时,我仍然会收到相同的错误loop: can't delete device /dev/loop0: Device or resource busy。有没有办法摆脱循环设备?

12 个答案:

答案 0 :(得分:44)

您可能还必须使用dmsetup删除设备映射。最简单的方法是,如果它不干扰任何其他映射,则使用dmsetup remove_all

答案 1 :(得分:14)

您确定设备不忙吗?你有没有尝试过热熔器来确定可能的PID?

预防性获取所有可能的信息:

fuser -c /dev/loop0
fuser -d /dev/loop0
fuser -f /dev/loop0

尝试停止可以使用/ dev / loop0的进程。如有必要,请使用kill -9或尝试fuser -k发送终止信号 - >看看man fuser

答案 2 :(得分:8)

我在SD卡上遇到了类似的问题,Aaoron Flin建议使用dmsetup为我工作。

具体来说,您应该能够ls / dev / mapper查看是否存在任何loop0pX分区。

如果是这样,您可以使用dmsetup remove /dev/mapper/loop0p2删除任何不必要的分区。如果要保留一些映射,这可能很有用。

答案 3 :(得分:5)

我今天遇到了同样的问题,之前的答案都没有解决(我没有尝试重新加载循环内核模块,因为我想了解实际问题)。

事实证明,与循环设备关联的图像文件包含一个" Linux LVM"分区,自动设置为pvscan

$ pvscan
  PV /dev/sda1    VG server-vg   lvm2 [417,76 GiB / 0  free]
  PV /dev/loop0   VG vbox-vg     lvm2 [7,81 GiB / 0    free]
  Total: 2 [425,57 GiB] / in use: 2 [425,57 GiB] / in no VG: 0 [0   ]

所以我已经停用了卷组中的所有逻辑卷:

$ vgchange --activate n vbox-vg
  0 logical volume(s) in volume group "vbox-vg" now active

最终我能够很好地分离循环设备:

$ losetup -d /dev/loop0
$ losetup -a

答案 4 :(得分:3)

我将此循环解决方案追逐到了Internet的末端,发现解决方案是卸载 snapd 清除所有关联的文件:(在我的情况下为167 Gb)

sudo apt purge snapd

答案 5 :(得分:2)

如果您使用的是Luks,则需要先使用luksClose

cryptsetup luksClose $whatever
losetup -D

答案 6 :(得分:1)

尝试重新加载循环内核模块。如果它没有帮助,那么重新启动。

答案 7 :(得分:0)

肯定有一个使用它的过程。如果您无法确定哪个进程阻止删除,请尽可能重新启动服务器。

答案 8 :(得分:0)

与@frntn相同。

RAID占用了循环:

# cat /proc/mdstat

Personalities : [raid0]

md126 : active raid0 loop6p5[1] loop5p3[0]
  209584128 blocks super 1.2 512k chunks

md127 : active raid0 loop6p2[1] loop5p2[0]
  31440896 blocks super 1.2 512k chunks

我删除了它们,一切都再次服从命令。

答案 9 :(得分:0)

运行

mount | grep /dev/loopN

检查环路设备是否安装在某处, 然后运行

umount /dev/loopN 

卸载。

如果仍然有问题,请运行

lsof | grep loopN

检查正在使用哪个进程,然后将其杀死。

答案 10 :(得分:-1)

本文BiX和所有内容的THX: 我不是Linux管理员,而是一个用户,但可以为had loop设备问题做出很大贡献:

从文件浏览器(Dolphin / Nautilus)中没有真正干净地删除虚拟安装的映像文件(.iso)。

您可以使用Prg“磁盘”(在Service Prg的磁盘管理工具下)卸载此虚拟分区。 但是,ISO文件仍将作为循环保留在设备管理列表中。例如,如果要从磁盘上删除此ISO文件卷,则删除过程将仅以虚拟方式进行,并且相应的MB或GB存储空间将完全不可用。删除后,ISO文件在Dolphin / Nautilus中不再可见,但是相应的存储空间要求未再次指定为可用;即删除之前和之后此ISO文件未更改的数据载体上的可用和已占用存储空间的信息。

一个简单但非常规的解决方案是重新启动/启动计算机。 但这不是真正的解决方案!

手册页中描述的Linux shell losetup在此处提供了一种补救措施:

  

losetup用于将循环设备与常规文件或块设备相关联,分离循环设备并查询循环设备的状态。如果仅给出loopdev参数,则会显示相应循环设备的状态。

因此,您可以使用losetup -d /dev/loop0删除与dev / loop0(!上的循环关联的文件(!“ losetup -d”只能用作管理员。因此,您需要输入sudo losetup -d或wath大多数LinuxGurus都没有问题,您有一个终端静态开放)。

losetup的手册页中,您可以看到此处未使用表达式Delete,而是使用了Solve。但是,根据我的示例,在使用选项-d后,“尽管卸载干净,仍未删除文件卷轴”,但现在仅删除文件卷轴。 (我不是Linux管理员,但::)这与虚拟的loopNumber分配相关联,但是在挂载iso映像(映像)时成为实际条件。

以下是shell losetup的完整语法:

https://linux.die.net/man/8/losetup

(我在linuxMint-18上损坏了)

通过www.DeepL.com/Translator从德语翻译

答案 11 :(得分:-4)

我只需右键单击dolphin中的循环设备并卸载它。