我目前正在处理由RAID-5 md设备备份的Linux LVM卷组上的多个磁盘故障。 由于似乎是一个行为不端的电源,一个磁盘已被完全取出,另一个磁盘则显示有限数量的腐败行业。
问题是,一旦I / O错误发生, md就会closuresarrays,因为它没有足够的设备来运行。 哪里唯一涉及,我可以mdadm --stoparrays,然后重新创build它让所有设备再次活跃。
不幸的是,arrays是LVM卷组中的PV,我似乎无法让内核释放它。 vgchange -an似乎没有做任何事情,酒吧发现了几个I / O错误。
我明显错过了一些东西,但是如何以-insert-favorite-deity的名义让LVM在不重新启动服务器的情况下释放基础PV?
我会说你的状况很糟糕。 如果你只是不顾一切地恢复你的一些数据,而不关心LVM(其元数据可能已经损坏,从vgchange -an IO的IO错误判断),我会build议去低水平。 记住,LVM只是内核设备映射器的一个包装,所以你可以使用dmsetup来操纵你的逻辑卷。 dmsetup table会给你一个当前活动的逻辑磁盘列表,所以如果你以后甚至不能访问你的LVM,备份它的输出是一个好主意。 然后,您可以尝试使用dmsetup remove或dmsetup remove_all来停止要停止的设备。 但是要确保他们先卸载。
当然,尽可能多地将数据复制到安全的位置。
当vgchange -an似乎没有做任何事情(在Ubuntu系统上),那么在阅读这个错误报告(我发现它search“ dmsetup remove lvm vgchange ”)之后,考虑归咎于udev规则: https : dmsetup remove lvm vgchange ubuntu的/ +源极/ LVM2 / +错误/ 1088081
解决方法如下(感谢Martin):
sudo umount /mnt # asume the drive in question is mounted under /mnt sudo service udev stop sudo lvchange -an <LV-name> sudo cryptsetup luksClose <LUKS-devicename> sudo service udev start