我不安全地删除了使用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
。有没有办法摆脱循环设备?
答案 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中的循环设备并卸载它。