如何停止 Linux LVM 卷组?

如何停止 Linux LVM 卷组?

我目前正在处理由 RAID-5 设备备份的 Linux LVM 卷组上的多个磁盘故障md。一个磁盘已完全取出,另一个磁盘显示有限数量的损坏扇区,这似乎是由于电源故障造成的。

问题是,一旦发生 I/O 错误,md阵列就会关闭,因为它没有足够的设备来运行。如果md只涉及一个,我可以mdadm --stop关闭阵列,然后重新创建它以使所有设备再次处于活动状态。

不幸的是,该阵列是 LVM 卷组中的 PV,我似乎无法让内核释放它。vgchange -an似乎没有做任何事情,只是喷出几个 I/O 错误。

我显然错过了一些东西,但如何以—插入最喜爱的神—我如何让 LVM 释放底层 PV没有重新启动服务器?

答案1

我想说的是,您的情况相当糟糕。如果您只是迫切希望以某种方式恢复部分数据,而不太关心 LVM(根据 的 IO 错误判断,其元数据可能已损坏vgchange -an),我建议您使用低级别。请记住,LVM 只是内核设备映射器的包装器,因此您可以使用它dmsetup来操作逻辑卷。dmsetup table将为您提供当前活动逻辑磁盘的列表,因此最好备份其输出,以防您以后甚至无法访问 LVM。然后,您可以尝试停止要停止的设备,dmsetup remove甚至dmsetup remove_all。但请确保先卸载它们。

当然,将尽可能多的数据复制到安全的地方。

答案2

vgchange -an似乎没有做任何事情时(在 Ubuntu 系统上),阅读此错误报告后考虑将责任归咎于 udev 规则(我在 Google 中搜索“ dmsetup remove lvm vgchange”): https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1088081

解决方法如下(感谢 Martin):

sudo umount /mnt # asume the drive in question is mounted under /mnt  
sudo service udev stop
sudo lvchange -a n <LV-name>
sudo cryptsetup luksClose <LUKS-devicename>  
sudo service udev start

相关内容