我不安全地删除了一个USB设备,该设备通过losetup
连接到loop0,并且之后无法删除或分离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
。有没有办法摆脱循环装置?
您可能还必须使用dmsetup
来删除设备映射。如果不干扰任何其他映射,最简单的方法是使用dmsetup remove_all
.
您确定设备不忙吗?你试过用熔断器来确定可能的PID吗?
获取所有可能的信息:
fuser -c /dev/loop0
fuser -d /dev/loop0
fuser -f /dev/loop0
尝试停止进程,它可以使用/dev/loop。如果有必要使用kill -9
或尝试fuser -k
发送杀死信号->查看man fuser
.
我有一个类似的问题与SD卡和Aaoron Flin的建议使用dmsetup为我工作。
具体来说,您应该能够通过ls
/dev/mapper查看是否存在任何loop0pX
分区。
如果是,您可以使用dmsetup remove /dev/mapper/loop0p2
来删除任何不必要的分区。如果您想要保留一些附加映射,这可能很有用。
我今天有同样的问题,以前的答案都没有修复它(我没有尝试重新加载循环内核模块,因为我想了解实际问题)。
与循环设备相关联的映像文件包含一个"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
我把这个循环解决方案追到了互联网的尽头,发现解决方案是卸载snapd和清除所有相关的文件:(在我的情况下,这是167 Gb)
sudo apt purge snapd
mount | grep /dev/loopN
检查环路设备是否安装在某处;然后运行
umount /dev/loopN
卸载。
如果仍有问题,请运行
lsof | grep loopN
检查哪个进程正在使用它,然后杀死它。
尝试重新加载循环内核模块。如果没有帮助,则重新启动。
如果您正在使用Luks,您需要先使用lukclose
cryptsetup luksClose $whatever
losetup -D
感谢BiX和所有人的这篇文章:我不是一个Linux管理员,只是一个用户,但可以为有循环设备问题做出这么多贡献:
当虚拟挂载的镜像文件(.iso)没有真正从文件资源管理器(Dolphin/Nautilus)中清除时,
您可以使用Prg"Disks"(在Service Prg的磁盘管理工具下)卸载这个虚拟分区。但是,ISO文件在设备管理列表中仍然是一个循环。例如,如果要从磁盘上删除这个ISO文件盘,则删除过程只会虚拟进行,并且相应的以MB或GB为单位的存储空间将完全没有空闲。删除后,该ISO文件在Dolphin/Nautilus中不再可见,但相应的存储空间要求不再指定为free;即该ISO文件所在数据载体上的空闲和已占用存储空间信息在删除前后没有变化。
一个简单但非常规的解决方案是重新启动/启动计算机。但这不可能不是真正的解决方案!
手册页中描述的Linux shell losetup
在这里提供了一种补救方法:
losetup用于将环路设备与规则文件或块设备关联,分离环路设备和查询环路设备的状态。如果只给出loopdev参数,则显示相应环路设备的状态。
因此,您可以使用losetup -d /dev/loop0
删除与dev/loop0(!)上的循环相关的文件。"losetup -d"只能作为admin使用。,所以你需要输入sudo losetup -d
或观看大多数LinuxGurus不fink fin,你有一个so-terminal静态打开)。
在losetup
的手册页中,您可以看到这里使用的不是表达式Delete
,而是Solve
。然而,根据我的例子,在使用了选项-d之后,"尽管clean unmount,文件仍然没有被删除",这个文件现在才被删除。(我不是Linux管理员,但是:)这与loopNumber的分配有关,loopNumber是虚拟的,但是在挂载iso-image (image)时成为一个真实的条件。
losetup
的完整语法:
https://linux.die.net/man/8/losetup (我在一个有点损坏的linuxMint-18上工作)
翻译自德语www.DeepL.com/Translator
肯定有一个进程在使用它。如果无法确定是哪个进程在阻止它被删除,那么可以重新启动服务器。
与@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
我把它们移走了,一切又服从命令了。
我只需右键单击dolphin中的循环设备并卸载它