首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kpartx:在删除映射后无法卸载磁盘

kpartx:在删除映射后无法卸载磁盘
EN

Unix & Linux用户
提问于 2022-08-21 15:39:33
回答 1查看 433关注 0票数 6

我无法卸载创建然后使用kpartx删除映射的分区:

代码语言:javascript
复制
# 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没有显示从该磁盘打开的文件:

代码语言:javascript
复制
# lsof +D 

为什么在释放了所有映射之后,我就不能解压磁盘呢?

EN

回答 1

Unix & Linux用户

发布于 2022-08-23 17:15:01

第二个命令与第一个命令并不完全相反,因为循环设备作为参数给出,而不是最初触发创建该循环设备的块映像文件。

如果你然后跑:

代码语言:javascript
复制
losetup -l /dev/loop0

很有可能你会得到这个输出:

代码语言:javascript
复制
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文件绑定在一起,从而在提供它的文件系统上防止卸载它。

在这种状态下,要释放剩馀的资源,只需执行以下操作:

代码语言:javascript
复制
losetup -d /dev/loop0

该怎么做?

代码语言:javascript
复制
 kpartx -dv /path/to/usb/sda.img

这一次应该是:

代码语言:javascript
复制
del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1
loop deleted : /dev/loop0
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/714380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档