lvremove 声称 LV 是开放的

glg*_*lgl 8 hard-drive lvm

我经常注意到在一个

$ sudo lvcreate vg -L 10G
Run Code Online (Sandbox Code Playgroud)

紧接着是一个

$ sudo lvremove vg/<created volume>
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

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

而一个

$ sudo lvs
Run Code Online (Sandbox Code Playgroud)

给我看那个音量

  lvol2         vg   -wi-a-  10,00g
Run Code Online (Sandbox Code Playgroud)
  • 所以在标志-之后有一个 os 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"
Run Code Online (Sandbox Code Playgroud)

小智 6

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

kpartx -d /dev/vg1/lv1

然后您可以验证 # open 在lvdisplay的输出中下降到 0 。


glg*_*lgl 5

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

在 a 上lvremoveudev每个可用的块设备都有更改事件。他们的处理似乎干扰了删除过程,并且删除失败。

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

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