lvremove 声称 LV 是开放的

lvremove 声称 LV 是开放的

我经常注意到

$ sudo lvcreate vg -L 10G

紧接着

$ sudo lvremove vg/<created volume>

我收到错误消息

无法删除打开的逻辑卷“...”

$ sudo lvs

显示该卷

  lvol2         vg   -wi-a-  10,00g
  • -因此,在标志后面应该有一个ao如果卷确实打开了的话。

过了一段时间,删除就成功了。

为什么会这样?我怎样才能让它立即起作用?

编辑:以下内容并没有什么用处:

$ sudo rm /dev/mapper/vg-lvol24 
$ sudo lvremove /dev/vg/lvol24
  Can't remove open logical volume "lvol24"
$ sudo lvs vg/lvol24
  LV     VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  lvol24 vg   -wi-a- 10,00g                                      
$ sudo lvremove /dev/vg/lvol24
  Can't remove open logical volume "lvol24"

答案1

因此,除了 NFS、陈旧的 bash 进程和 udev 错误行为之外,还有另一种可能性,即在块设备上打开的分区。

kpartx -d /dev/vg1/lv1

lvdisplay然后您可以验证# open 在输出中是否降至 0 。

答案2

看起来是lvm和udev的配合有问题。

在 上lvremove,每个可用块设备都有udev更改事件。它们的处理似乎扰乱了删除过程,导致删除失败。

解决方案是使用 停用要移除的 LV lvchange -an <given LV>。在这种情况下,只会创建少量的“移除”事件,这是由于相关dm设备被移除而导致的。

如果我lvremove现在停用 LV,仍然会有很多 udev 更改事件,但它们不会影响要删除的 LV(因为它不再存在于 dm 中),因此它可以毫无问题地运行。

答案3

删除该 LV 的所有映射/dev/映射器/通过删除符号链接,然后您就可以删除它。

答案4

我在 OpenStack 安装中遇到了类似的问题。 lsof没有显示任何内容,但dmsetup ls --tree显示了依赖项/目标。 lvchange -an <given LV>对我来说也没有用。删除/dev/dm-*设备的符号链接也没有用

就我而言,我关闭了 OpenStack 服务,然后就能处理lvremove这些难以处理的卷了。

这是一个实验性设置,我认为我可能最初为了解决其他问题而强制重启,从而导致了这个问题。

相关内容