删除驻留在内核内存中的分区表

删除驻留在内核内存中的分区表

我擦除了(从设备中删除)逻辑卷(LVM 中的 lv)中的所有分区。然后我做了partprobe -s(和其他类似的命令partprobe没有返回任何输出,partx表示partition: none& failed to read partition table)。我遇到的问题是我两者都做不到:

  • mkfs /dev/vg/lv因为/dev/vg/lv is apparently in use by the system; will not make a filesystem here!
  • lvremove /dev/vg/lv该设备因为Logical volume vg/lv is used by another device.

这是因为内核仍然在 lv 块设备中看到一个分区:

# grep dm /proc/partitions
 254        0   85852160 dm-0
 254        1   84850688 dm-1

# ls -lh /dev/dm-*                           
brw-rw---T 1 root disk 254, 0 May 23 14:32 /dev/dm-0                                                       
brw-rw---T 1 root disk 254, 1 May 23 14:08 /dev/dm-1

我最终重新启动了机器,解决了我的问题(内核不再看到不存在的分区)。

您知道无需重新启动即可解决此问题的方法吗?

在 3.2 内核上测试。

答案1

LVM 设备(或一般的设备映射器)不支持与sd设备相同意义上的分区。使用partx,您只能管理普通类型的分区。在 LVM 设备之上,分区必须通过以下方式进行管理kpartx

kpartx -d /dev/vg/lv

联机kpartx帮助页有点简洁。为了检查这一点,我找到了一个看起来与我的假设一致的用法示例:https://bugzilla.redhat.com/show_bug.cgi?id=187781

相关内容