无法删除打开的逻辑卷

Eve*_*ews 22 lvm

当我尝试删除逻辑卷时,我收到消息

#lvremove /dev/my-volumes/volume-1 
Can't remove open logical volume "volume-1"

#lvchange -an -v /dev/my-volumes/volume-1 
Using logical volume(s) on command line
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
Deactivating logical volume "volume-1"
Found volume group "my-volumes"
LV my-volumes/volume-1 in use: not deactivating

#lvremove -vf /dev/my-volumes/volume-1 
Using logical volume(s) on command line
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
Can't remove open logical volume "volume-1"

#lvs
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
LV              VG           Attr   LSize   Origin Snap%  Move Log Copy%  Convert
volume-1        my-volumes   -wi-ao  50.00g  
Run Code Online (Sandbox Code Playgroud)

如何强制删除此卷?

谢谢,埃弗雷特

Edu*_*nec 14

逻辑卷包含什么?它是一个文件系统(我不小心写了分区)?会不会是装的?在这种情况下:

umount /dev/my-volumes/volume-1

它有任何活动快照吗?

编辑:尝试lvchange -an -v /dev/my-volumes/volume-1lvremove -vf /dev/my-volumes/volume-1

编辑2:请发布'lvs'。

编辑 3:尝试使用其他一些有问题的卷。这不是最干净的选择,但根据此站点,它可能会起作用,并且无论如何都比重新启动问题少。

dmsetup remove my--volumes-volume--number
lvremove /dev/my-volumes/volume-number
Run Code Online (Sandbox Code Playgroud)


小智 13

如果您无法卸载或 lvremove 逻辑卷,请验证没有进程持有 LV

找到您要删除的逻辑卷的主要/次要编号,例如:vol0

# dmsetup info -c | grep vol0
Run Code Online (Sandbox Code Playgroud)

请注意第 5 列,它表示一个卷是否“打开”,以及第 2 和第 3 列,分别是主要和次要 ID。

通过搜索上面发现的主要和次要 ID 来查找附加到此卷的任何进程:

# lsof | grep "major,minor"
Run Code Online (Sandbox Code Playgroud)

关闭或终止任何仍在访问该卷的进程以继续卸载和删除。

然后尝试lvremove

  • 就我而言没有帮助。lsof、fuser没有显示任何用法。dmsetup 说设备正忙。设备已卸载(可以随时安装)。只有硬件重新启动才有帮助:/ (2认同)

Lor*_*ein 5

您可能正在运行 iet 或 tgt(哪一个取决于您iscsi_helper在 /etc/nova/nova.conf 中的值,默认为 iet),并且该服务有一个打开的文件句柄。您可以通过执行以下操作来检查哪一个(在我的情况下是 tgt)

# fuser /dev/nova-volumes/volume-00000001
/dev/dm-5:           19155

# lsof | grep /dev/dm-5
tgtd      19155            root   12u      BLK              252,5         0t0    2531554 /dev/dm-5
Run Code Online (Sandbox Code Playgroud)

如果是 iet,请通过执行以下操作来停止服务:

service iscsitarget stop
Run Code Online (Sandbox Code Playgroud)

如果是 tgt,请通过执行以下操作来停止服务:

service tgt stop
Run Code Online (Sandbox Code Playgroud)

然后您应该能够删除您的卷。


小智 5

我遇到了类似的情况,但是 LV 的删除被阻止了,因为我使用的是 mount -o bind。

下面的文章有很大帮助,使用 lsof 和 LV 的主要/次要编号显示进程保持打开的 LV,在我的情况下是 smbd。

不仅仅是简单的 cat /proc/mounts | grep LV_name 让我得出结论,为什么 lvremove 或 dmsetup remove 拒绝摆脱未安装的 LV。

http://kb.eclipseinc.com/kb/why-cant-i-remove-a-linux-logical-volume/