从 LVM 镜像的一个 PV 恢复数据

从 LVM 镜像的一个 PV 恢复数据

一个包含一个分区的 1TB 磁盘是包含一个 LV 的 VG 中唯一的 PV,由于速度慢得令人无法忍受而出现故障,并且没有报告任何错误。我的第一个想法是尝试使用 LVM 将数据镜像到另一个磁盘并继续运行,所以我这样做了:

  1. 同一台机器上的一个 1TB 磁盘发生故障
  2. 将该磁盘添加到故障磁盘的 VG
  3. 将 LV 改为只有一个镜像

我把它放了一整夜进行复制,之后它报告已复制了 0.05% 的数据。考虑到这是一次失败,我买了两个 1TB 的替换磁盘:

  1. 将第一个新磁盘添加到 mdadm 阵列(完成,没有问题)
  2. 将备份恢复到从 mdadm 集中移除的良好磁盘上的替换 LV(已完成,没有问题,缺少大约一天的更改)
  3. 将故障磁盘上可读的内容克隆到第二个新磁盘(在备用计算机中完成,ddrescue 在重试几次后指示完全成功)
  4. 挂载克隆并将更改与从备份中恢复的陈旧副本合并(卡在这里)
  5. 将第二块新磁盘添加到替换 VG,并镜像替换 LV

问题是我不知道如何让 LVM 允许我访问故障磁盘的克隆。

LVM 发现 VG 中缺少一个 PV,并且不允许我激活 VG(包括使用)--partial,或进行任何更改(包括lvconvert -m0或 )lvconvert --repair,直到找到丢失的设备。 man vgreduce表示vgreduce --removemissing将删除 LV,而不仅仅是缺失 PV 上的镜像。至少一个来源建议可以通过使用 替换丢失的 PV 来实现访问pvcreate --uuid,这需要将一个好的磁盘从 mdadm 阵列物理移动到备用机器(或购买另一台新机器),并且显然需要备份 VG 的 LVM 元数据(我没有)。

访问克隆的 LV 最直接的方法是什么?
不在备用计算机上物理添加另一个磁盘可以做到这一点吗?


更新

我确实将另一个磁盘移到了备用机器中,并尝试重新创建丢失的 PV。LVM 似乎不支持自动重新创建,所以我基本上是徒劳无功,直到我以某种方式成功使 LV 可用。其上的 ext4 FS 被破坏得面目全非 - e2fsck 反复尝试修复它,导致内存耗尽。

我再次尝试,使用 ddrescue 将数据从故障磁盘复制到同一个好磁盘(这次报告了一些错误),这次 LVM 让我无需任何额外磁盘即可使用该卷(这与我最初预期的非常相似)。这次 FS 基本完好无损,我能够恢复我希望恢复的所有内容。

我不知道为什么 LVM 拒绝在第一个副本上激活 VG,而在第二个副本上却按预期工作。由于 Google 没有给出任何解释,这里也还没有答案,我担心 LVM 卷的恢复不可靠,最好不要使用它。

相关内容