我无法卸载创建然后使用kpartx删除映射的分区:
# mount /dev/sdb1 usb/
# cd usb/
# kpartx -a -p sda -r -s -v sda.img
add map loop0sda1 (254:5): 0 16777216 linear 7:0 2048
add map loop0sda2 (254:6): 0 16777216 linear 7:0 16779264
add map loop0sda3 (254:7): 0 440401920 linear 7:0 33556480
add map loop0sda4 (254:8): 0 26159792 linear 7:0 473958400
# kpartx -dv /dev/loop0
del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1
# cd ..
#umount usb/
target is busy.据我所知,命令kpartx -dv /dev/loop0正确地删除了映射,正如我所看到的,它们已经从/dev/mapper/中消失了。但是我仍然不能卸载磁盘,因为它报告:target is busy.
lsof没有显示从该磁盘打开的文件:
# lsof +D 为什么在释放了所有映射之后,我就不能解压磁盘呢?
发布于 2022-08-23 17:15:01
第二个命令与第一个命令并不完全相反,因为循环设备作为参数给出,而不是最初触发创建该循环设备的块映像文件。
如果你然后跑:
losetup -l /dev/loop0很有可能你会得到这个输出:
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop0 0 0 0 1 /path/to/usb/sda.img 0 512这使资源与sda.img文件绑定在一起,从而在提供它的文件系统上防止卸载它。
在这种状态下,要释放剩馀的资源,只需执行以下操作:
losetup -d /dev/loop0 kpartx -dv /path/to/usb/sda.img这一次应该是:
del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1
loop deleted : /dev/loop0https://unix.stackexchange.com/questions/714380
复制相似问题