尽管存在错误,仍重新组装 RAID0 阵列

尽管存在错误,仍重新组装 RAID0 阵列

我的旧 Synology CS407 是故意设置 RAID0 的,我还没有设置备份系统。有四个 1TB 的驱动器组成一个 4TB 的卷。一个驱动器发生故障,导致板载软件拒绝使用/安装该卷。我知道这是一个严重的故障,并且通常所有 4 个驱动器上的卷都发生故障,因为 RAID0 没有冗余。尽管如此,我还是想尝试在 Ubuntu 上重新组装阵列,忽略错误/跳过坏数据,看看卷处于什么状态。毫不奇怪,我遇到了一个发生故障的磁盘的问题。Ubuntu 看到了它的分区表,并报告了一个坏扇区。

以下是结果/proc/mdstat

Personalities : 
md2 : inactive dm-3[3](S) dm-2[2](S) dm-1[1](S) dm-0[0](S)
      3901770794 blocks super 1.1
       
unused devices: <none>

mdadm --examine --scan

ARRAY /dev/md/2  metadata=1.1 UUID=442ee8f0:7c679b96:de0a0544:f72b1167 name=2

LVM 数据位于每个磁盘的第 3 个分区上。使用mdadm --assemble --run --force --verbose /dev/md2 /dev/sd[cdef]3以下命令进行重组:

mdadm: looking for devices for /dev/md2
mdadm: /dev/sdc3 is identified as a member of /dev/md2, slot 0.
mdadm: /dev/sdd3 is identified as a member of /dev/md2, slot 32769.
mdadm: /dev/sde3 is identified as a member of /dev/md2, slot 2.
mdadm: /dev/sdf3 is identified as a member of /dev/md2, slot 3.
mdadm: no uptodate device for slot 1 of /dev/md2
mdadm: added /dev/sde3 to /dev/md2 as 2
mdadm: added /dev/sdf3 to /dev/md2 as 3
mdadm: added /dev/sdc3 to /dev/md2 as 0
mdadm: failed to RUN_ARRAY /dev/md2: Invalid argument
mdadm: Not enough devices to start the array.

这给了我一个无用的/dev/md2,在 Ubuntu 中显示为 RAID 设备。我必须先完成stop它,然后才能再次尝试重新组装。 奇怪的是 的插槽号/dev/sdd3

我还有两件事可以尝试,我正在寻找有关其中一件事是否有帮助的建议:

  • 失败并删除/dev/sdd3然后重新添加
  • 我有一个备用的 1TB 磁盘。我可以使用磁盘复制dd并让旧磁盘发生故障,然后添加新磁盘。我只是想知道如果我逐扇区复制,新磁盘的成功率会更高吗?它会根据不同的 UUID 进行尝试吗?

编辑-输出mdadm --examine /dev/sdd3

/dev/sdd3:
          Magic : a92b4efc
        Version : 1.1
    Feature Map : 0x0
     Array UUID : 442ee8f0:7c679b96:de0a0544:f72b1167
           Name : 2
  Creation Time : Sun Feb 13 00:14:43 2022
     Raid Level : raid0
   Raid Devices : 4

 Avail Dev Size : 1950885397 (930.25 GiB 998.85 GB)
    Data Offset : 8 sectors
   Super Offset : 0 sectors
          State : active
    Device UUID : 23292ce9:221ebbfa:ea131c60:7888bc0c

    Update Time : Sun Feb 20 19:02:34 2022
       Checksum : e4ebe933 - correct
         Events : 1

     Chunk Size : 64K

   Device Role : Active device 32769
   Array State : A.AA ('A' == active, '.' == missing, 'R' == replacing)

答案1

这不是严重的问题。这是灾难性的问题。RAID0(用作剥离 RAID 时)将数据碎片存储到所有驱动器。因此,一个文件的部分内容可能位于所有 4 个磁盘上。
如果信息非常有价值,您可以尝试联系可以恢复某些信息的专业公司。但这可能要花一大笔钱。

RAID 使用连接算法来创建阵列的可能性很小。在这种情况下,您可能会恢复大量信息。但这也不是家庭作业。

答案2

我不确定这个问题能否解决。

我首先要尝试关闭 Synology,移除故障驱动器,然后在 Linux 机器上使用 ddrescue 尽可能克隆该驱动器。然后我会将克隆的驱动器放入 Synology。

然后,您可能能够“强制组装”数组。我从来没有尝试过,但也许可以使用类似这样的命令

mdadm --force --assemble /dev/md2 /dev/sdc3 /dev/sdd3 /dev/sde3 /dev/sdf3

关键在于,根据 LUKS MAN 页(对于 Assemble)

“--force 即使某些设备上的元数据似乎已过期,也会组装阵列。如果 mdadm 找不到足够的工作设备来启动阵列,但可以找到一些记录为发生故障的设备,那么它会将这些设备标记为正在工作,以便可以启动阵列。这仅适用于本机。对于外部元数据,它允许启动脏的降级 RAID 4、5、6。需要 --force 才能启动的阵列可能包含数据损坏。请谨慎使用。””

您可能无需执行 ddrescue 即可做到这一点 - 但是,如果尝试在出现硬件故障的驱动器上工作,那么您的生活将从困难变得更加困难。

你不应该信任你的数据。某些地方可能存在损坏/不一致的情况。

如果此操作失败,您可以使用 photorec 或同等工具从剩余的良好驱动器中获取部分数据。

答案3

最好的办法是尝试将尽可能多的磁盘内容复制到新磁盘。不要使用dd,而要使用ddrescuedd它会在第一次出现错误时停止。我已经使用 恢复了几乎完整的磁盘ddrescue,因此可以恢复大部分数据。ddrescue可能需要很长时间。

然后,使用复制的磁盘尝试@davidgo 的解决方案。

现在您已经体验到了 raid 0 的缺点。除非您的磁盘空间真的很紧张,否则请考虑迁移到 raid 5。

相关内容