我的旧 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
,而要使用ddrescue
。dd
它会在第一次出现错误时停止。我已经使用 恢复了几乎完整的磁盘ddrescue
,因此可以恢复大部分数据。ddrescue
可能需要很长时间。
然后,使用复制的磁盘尝试@davidgo 的解决方案。
现在您已经体验到了 raid 0 的缺点。除非您的磁盘空间真的很紧张,否则请考虑迁移到 raid 5。