我有一个 LVM RAID5 配置,其中两个 LV 目前处于非活动状态,因为一个 SATA 控制器无法从挂起状态正确恢复,从而导致两个设备(即两个 PV)发生故障。不幸的是,Linux 似乎设法写入了跨这些磁盘的两个 LV(整个 VG 包含更多卷,这些卷也跨两个 PV,所有卷均正常激活),然后致命崩溃。硬重启后,硬件未报告任何错误,因此我假设挂起周期以某种方式导致 SATA 控制器的固件崩溃。错误消息与最相似问题中报告的内容非常相似:
# vgchange -a y
导致日志中出现以下消息:
Dec 04 13:53:56 hostname kernel: md/raid:mdX: not enough operational devices (2/3 failed)
Dec 04 13:53:56 hostname kernel: md/raid:mdX: failed to run raid set.
Dec 04 13:53:56 hostname kernel: md: pers->run() failed ...
Dec 04 13:53:56 hostname kernel: device-mapper: table: 254:21: raid: Failed to run raid array (-EIO)
Dec 04 13:53:56 hostname kernel: device-mapper: ioctl: error adding target to table
Dec 04 13:53:56 hostname kernel: md/raid:mdX: device dm-16 operational as raid disk 0
Dec 04 13:53:56 hostname kernel: md/raid:mdX: not enough operational devices (2/3 failed)
Dec 04 13:53:56 hostname kernel: md/raid:mdX: failed to run raid set.
Dec 04 13:53:56 hostname kernel: md: pers->run() failed ...
Dec 04 13:53:56 hostname kernel: device-mapper: table: 254:21: raid: Failed to run raid array (-EIO)
Dec 04 13:53:56 hostname kernel: device-mapper: ioctl: error adding target to table
为了工作卷,我不想随机拉出其中一个磁盘并按照建议这里,尽管这是我能找到的最接近的方法,但要让系统完全恢复运行,似乎我必须将所有 PV 从其他 LV 迁移到另一个磁盘才能实现这一点。
我可以通过以下命令将 RAID 恢复到工作状态:
# lvchange --resync VG/missinglv1
# lvchange --resync VG/missinglv2
and
# vgchange -a y
again
因此这不再是问答格式,因为我在研究问题时找到了解决方案。但由于我必须从文档中找到它,所以我想在这里发布结果。
答案1
lvchange
带选项的命令--resync
允许继续。如果稍后出现数据损坏,我会在这里报告。