我不知怎么弄乱了 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