我有 4 个磁盘 RAID-5 来创建 md0,还有另外 4 个磁盘 RAID-5 来创建 md1。然后通过 LVM 将它们组合起来创建一个分区。
我离开时停电了,当我回来时,看起来 md1 中的一个磁盘不同步了 - mdadm 一直声称它只能找到 4 个驱动器中的 3 个。我唯一能做的就是在这四个磁盘mdadm --create
上使用,然后让它重建阵列。这对我来说似乎是个坏主意,但我的东西都不是关键的(虽然要花一段时间才能全部恢复),而且一个线程有人声称这可以解决问题。如果这毁了我的所有数据,那么我想你可以停止阅读并直接告诉我。
等待阵列重建四个小时后,md1 看起来没问题(我猜),但 lvm 抱怨无法找到具有正确 UUID 的设备,可能是因为 md1 更改了 UUID。我使用了和pvcreate
命令vgcfgrestore
,如文档中所述这里。但是,尝试在其上运行时lvchange -a y
,会给我一条resume ioctl failed
消息。
我还有希望恢复我的数据吗,还是我已经把它彻底搞砸了?
我的 LV 是线性设置的。看来我应该至少能够从 md0 恢复数据,方法是使用类似测试磁盘。 然而,例子显示 TestDisk 中列出的 LVM 分区,而我只看到 sda、sdb 等以及 md0 和 md1。
[$]> lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup/lvm
VG Name VolGroup
LV UUID b1h1VL-f11t-TGJv-ajbx-4Axn-wi89-fReUKu
LV Write Access read/write
LV Status suspended
# open 0
LV Size 6.14 TiB
Current LE 1609648
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
[$]> lvchange -ay /dev/VolGroup/lvm
device-mapper: reload ioctl failed: Invalid argument
答案1
恐怕,通过将两个 (RAID) 磁盘组合成一个 LVM 卷,然后删除并重新创建其中一个磁盘,您实际上已经丢失了数据。如果您使用了 LVM 条带化,那么它们肯定已经丢失了,因为文件的其他每个块都在该磁盘上。使用线性模式,您可能能够使用某些磁盘恢复软件恢复部分文件。
可惜,因为你的基本配置是合理的。由于 RAID5,即使缺少一个磁盘,你也应该能够访问该卷。我建议在“mdadm --create”之前进行备份...
答案2
下次,您有两个选择……您可以手动尝试使用 mdadm --assemble 而不是 --create 来组装 raid。或者,您可以像文件系统检查一样使用“ckraid”,但针对 raid 5 阵列。(Linux Software Raid How-To 提到了后者)。
不过,就我个人而言,如果您使用不带 UPS 的 SW Raid,我个人会选择 Raid 10,而不是 5 或 6,因为它对电源问题具有更高的容忍度。