无法删除 LVM 精简池 - 无法停用 tdata、tmeta

无法删除 LVM 精简池 - 无法停用 tdata、tmeta

我不知怎么弄乱了 ubuntu 14.04 上的一些精简配置的 lvm 卷,现在我想通过删除精简池及其所有卷和数据来重新开始。不幸的是,这失败了,我找不到解决方案。

逻辑卷如下所示:

user@server1:~$ sudo lvs
  dm_report_object: report function failed for field data_percent
  LV             VG   Attr      LSize   Pool       Origin Data%  Move Log Copy%  Convert
  project2       vg0  Vwi-i-tz-  22.00g mythinpool       
  project1       vg0  Vwi---tz-  20.00g mythinpool                                      
  project3       vg0  Vwi---tz-  21.00g mythinpool                                      
  home           vg0  -wi-ao--- 140.00g                                                 
  mythinpool     vg0  twi-i-tz-  78.82g                    52.15                        
  root           vg0  -wi-ao---  10.00g                                                 
  swap           vg0  -wi-ao---   4.00g                                                 
  tmp            vg0  -wi-ao---   5.00g           

现在我想删除包含三个 lvm 的 Thinpool:

sudo lvremove /dev/vg0/mythinpool

Removing pool mythinpool will also remove 3 thin volume(s). OK? [y/n]: y
Do you really want to remove and DISCARD logical volume project1? [y/n]: y
  device-mapper: message ioctl on  failed: Invalid argument
  Unable to deactivate open vg0-mythinpool_tdata (252:5)
  Unable to deactivate open vg0-mythinpool_tmeta (252:4)
  Failed to deactivate vg0-mythinpool-tpool
  Failed to resume mythinpool.
  Failed to update thin pool mythinpool.

我不在乎 mythinpool 中的数据,但卷组 vg0 的其余部分必须保持完整。我该如何解决这个问题?感谢您对此提供的任何帮助。

编辑1: 按照 shodanshok 的回答后,我能够通过启动 CentOS7 删除一个 LVM 映像,但不幸的是,包括精简池在内的其他两个卷返回了另一条错误消息 - transaction_id 不匹配:

在此处输入图片描述

也没有可用于 lvconvert --repair 的空间

答案1

我最终按照这里描述的一些简单步骤解决了这个问题:删除损坏的 LVM 精简池

vgcfgbackup -f  vg.bak   vgname

//edit vg.bak and remove all thinp related volumes

vgcfgrestore -f vg.bak  vgname

按照 @shodanshok 的建议,通过 USB 启动到插在服务器上的 Live CentOS7 后,我能够发出所描述的命令,并最终摆脱损坏的精简池,而不会损坏驻留在同一卷组内的根文件系统。

感谢大家的帮助建议,最终找到了解决方案。

答案2

某些因素导致您的精简卷保持打开状态。请执行以下操作:

  • 检查卷是否已安装。如果已安装,请卸载它们
  • 如果你无法卸载它们,也许一些文件仍然被正在运行的进程打开。你可以使用它lsof | grep mountpoint来查找有问题的进程。杀死它们并尝试卸载文件系统
  • 如果失败,请重新启动机器并尝试卸载与精简卷相关的文件系统
  • 如果仍然无法卸载卷,请尝试重新启动进入单用户模式,卸载它们并删除卷
  • 如果其他方法都失败了,请使用实时 CD/USB 映像来启动您的 PC 并删除有问题的卷。

编辑:

由于您无法使用实时映像,并且您的救援系统不支持精简卷,我们可以尝试另一种方法。基本上,我们将在您的精简卷/池上设置“跳过激活标志”并重新启动机器。请按照以下步骤操作:

  • 设置激活跳过:lvchange -ky vg0/project1 ; lvchange -ky vg0/project2 ; lvchange -ky vg0/project3 ; lvchange -ky vg0/mythinpool
  • 重新启动机器,卷应该处于非活动状态
  • 现在你可以用以下方法删除它们lvremove

但是,如果机器启动需要这些卷中的任何一个,那么您的机器将无法启动。请确保有一个“计划 B”,以便通过恢复控制台或类似工具恢复机器。

编辑2

如果您的系统不支持该-k标志,您可以尝试使用lvchange -aay volumename并重新启动。这将设置卷以进行自动激活,这仅适用于在/etc/lvm.conf

相关内容