我以某种方式在 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
现在我想删除里面有三个 lvms 的瘦池:
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.
我不关心 mydinpool 中的数据,但卷组 vg0 的其余部分必须保持不变。我该如何解决这个问题?感谢您对此的任何帮助。
编辑 1: 在遵循 shodanshok 的回答后,我能够通过启动到 CentOS7 来删除一个 LVM 映像,但不幸的是,包括精简池在内的其他两个卷返回另一条错误消息 - transaction_id 不匹配:
lvconvert --repair 也没有可用空间
我最终通过一些简单的步骤解决了这个问题,如下所述:删除损坏的 LVM 精简池
在遵循@shodanshok 的建议启动到连接到 U 盘上的服务器的 Live CentOS7 之后,我能够发出所描述的命令并最终摆脱损坏的精简池,而不会损坏驻留在同一内部的根文件系统卷组。
谢谢大家的有用建议,最终导致了解决方案。
有些东西使您的薄卷保持打开状态。请执行以下操作:
lsof | grep mountpoint
来查找有问题的进程。杀死它们并尝试卸载文件系统编辑:
由于您不能使用实时图像并且您的救援系统不支持精简卷,我们可以尝试另一种方法。基本上,我们将在您的精简卷/池上设置“跳过激活标志”并重新启动机器。按着这些次序:
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