我在某种程度上搞砸了Ubuntu 14.04上一些精简configuration的lvm卷,现在我想通过删除其中包含所有卷和数据的thinpool来重新开始。 不幸的是,这失败了,我找不到解决办法。
逻辑卷如下所示:
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的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 – 修复也没有可用的空间
我通过一些简单的步骤来解决这个问题,如下所述: 清除损坏的LVM精简池
vgcfgbackup -f vg.bak vgname //edit vg.bak and remove all thinp related volumes vgcfgrestore -f vg.bak vgname
在按照@shodanshok的build议启动到插入USB存储棒的服务器上的Live CentOS7后,我能够发出所描述的命令并最终摆脱损坏的精简池而不损坏驻留在其中的根文件系统卷组。
谢谢大家的帮助,最终导致解决scheme。
有些东西正在保持您的精简卷打开。 请执行以下操作:
lsof | grep mountpoint
lsof | grep mountpoint
来查找违规进程。 杀死他们,并尝试卸载文件系统 编辑:
由于您无法使用实时图像,并且您的救援系统没有小容量支持,我们可以尝试替代路线。 基本上,我们将在精简卷/池上设置“跳过激活标志”并重新启动机器。 按着这些次序:
lvchange -ky vg0/project1 ; lvchange -ky vg0/project2 ; lvchange -ky vg0/project3 ; lvchange -ky vg0/mythinpool
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
指定的卷