如何从循环设备中删除分区设备?


3

我通过循环设备挂载磁盘映像(losetup -f image.img)。它包含分区表,我强制内核读取它:partprobe / dev / loop1。

我挂载/ dev / loop1p1,修复我要解决的问题,卸载文件系统。我从loopback设备中删除文件(losetup -d / dev / loop1)。但是/ dev / loop1p1并没有消失。

我甚至尝试重新创建lodevice,通过fdisk添加和删除分区表。但我所有的尝试都失败了:

分区表已被更改!

调用ioctl()重新读取分区表。

警告:重新读取分区表失败,错误22:参数无效。内核仍然使用旧表。新表将在下次重新引导时使用,或者在运行partprobe(8)或kpartx(8)同步磁盘后使用。

分区没有以任何方式使用,但我无法释放它。有没有办法在没有重启的情况下删除它?

我在dmesg中看到几条记录:

[4649002.505727] loop1:rw = 0,want = 211812300,limit = 62914560 [4649002.505753]设备loop1p1上的缓冲区I / O错误,逻辑块52952562 [4649002.505870]尝试访问设备末尾

他们正在唠叨我的唠叨。

Answers:


3

重新启动应该修复你的内核。而接下来的时间,而不是运行losetuppartprobe手动,使用kpartx

kpartx -v -a image.img

把它拆掉:

kpartx -d image.img
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.