这里有几个 问题 表明没有简单的方法可以在主板崩溃后从 RAID 阵列恢复数据。
这个特定问题的答案建议使用附加 PCI 卡(可以与所有磁盘一起移动到新系统而不会丢失数据)。然而,这只是解决了问题(如果 PCI 卡被炸了怎么办?)。然后是NAS系统,但话说回来,如果 NAS 主板被炸了怎么办?
[此编辑后的“唯一”声明不正确,正如 Peregrino69 在下面的回答中指出的那样。]
请记住,RAID 系统存在的唯一原因是在发生硬件故障时保留用户数据(此处不包括 RAID-0),我希望 RAID 技术能够长期解决这个显而易见的问题前。
我觉得这很荒谬,每次有人问如何处理 RAID 系统和炸毁的主板时,答案似乎都是“嘿,我曾经使用这个奇怪的黑客技巧设法从类似的情况中恢复过来——它可能适用于你”。同样荒谬的是,连接到最便宜的 PC 主板的单个非备份 SATA 磁盘上的数据在主板崩溃后很容易恢复,而在相同情况下,昂贵的 RAID-5 NAS 系统上的数据大部分会永远丢失。
为什么没有一个标准的解决方案来解决这个问题,至少在 20 年前设计,并从那时起由所有名副其实的 RAID 系统实施?
开发 RAID 是为了确保在发生特定硬件故障(即磁盘故障)时数据的可用性。有问题的排除 RAID 0 还可用于将卷大小扩展到单个物理驱动器的容量。
数据保存工具是备份和长期归档。
作为多次将硬件 RAID 磁盘从崩溃的服务器移动到新服务器的人,我不同意这个问题的前提。软件 RAID 也已在系统之间移动。这些一直是 Linux 服务器,所以我从来不需要处理部分 RAID 配置内置到操作系统驱动程序中的情况(在 Windows 系统中很常见)。
您要查找的短语是“导入外部 RAID 配置”
并非所有 RAID 系统的工作方式都相同,许多 RAID 系统将元数据存储在磁盘上,因此如果重置或更换(使用相同的型号),控制器将重建阵列配置。并且之间存在大量差异控制器及其支持的功能。
想象一下,我在 Adaptec 控制器上有一个跨 12 个磁盘的 1MB 条带大小的 RAID5 阵列,但控制器出现故障,所以我用英特尔控制器替换它,希望能获取我的数据。
事实证明,英特尔控制器不支持阵列中的 12 个磁盘,仅支持 8 个磁盘,并且它的最大条带大小仅为 256KB。当然,它是行不通的。即使它确实支持这些,磁盘上的控制器元数据在格式上甚至不接近允许它们被读取。即使这样做了,它是否使用相同的奇偶校验算法?相同的条纹对齐方式?
据我所知:
在阵列磁盘上存储阵列/控制器元数据的
位置没有标准 在阵列磁盘上存储阵列/控制器元数据的格式
没有标准 甚至在阵列上存储阵列/控制器元数据也没有标准磁盘
RAID 有很多不同的方法,内部方法可能是专有的
为什么要有标准解决方案?解决方法很简单,从旧控制器型号购买另一个支持进口的同品牌控制器。竞争对手并没有太多动机以兼容性的名义拒绝自己的方法或中性化他们的功能集,而实际上缺乏兼容性并不是什么大问题。
现在,您有几个示例指出板载 RAID,这里有两种类型,消费者和专业。车载消费者对便携性不感兴趣,除非是同一芯片组供应商,我已经从一块主板到另一块主板上安装了 Intel RAID5,它从磁盘读取元数据并重建配置。专业板载几乎总是希望您将主板或服务器更换为相同型号的主板或服务器,并且它应该再次正常工作。许多板载专业级控制器也可以以附加卡形式购买,为您提供另一种选择。
正如 Peregrino69 回答的那样,RAID 不是备份,如果您尝试使用 RAID 来防止磁盘故障以外的其他事情,那么您做错了。
当同时使用多个磁盘并以半容错方式执行此操作时,RAID 在大幅增加逻辑卷大小和性能方面更有用。
“RAID 系统存在的唯一原因是在发生硬件故障时保留用户数据” ...
不。在存在的所有“RAID 系统”的上下文中,这是第二或第三个最重要的原因,并且只有在设置很多细节时才应该用作原因(它将防止什么样的故障,什么种类不)周围都明白了。然而,当涉及到家庭/小型企业 NAS boxen 时,这个假设可能大部分是正确的。
RAID 是一种起源于服务器世界的技术 - 原因是“提供操作的连续性,直到可以安全和/或方便地进行修复”,“为读取和/或写入操作提供性能优势”(这不限于RAID0),“提供由多个磁盘提供的空间的易于管理的抽象”至少与提供您描述的有限备份功能一样普遍和重要。
在服务器世界中,存在使用多个相对独立的“主板”、电源等的系统(价格要贵几个数量级)。
如果您丢失了控制器硬件,RAID 系统的可恢复性,前提是驱动器在课程中没有损坏或覆盖,实际上只是控制器硬件如何处理此问题的功能,除了需要磁盘之外还有哪些配置数据恢复等。在这种情况下让您无法轻松求助的raid控制器/ nas主板应该被认为是错误的设计。
然而,行为不端或配置错误(例如缓存策略)的控制器可能意味着数据被主动覆盖或与无意义的数据混合。电气故障(例如电源突然输出过高电压,或收发器将电源短路到数据端口)可能导致驱动器物理损坏。在这种情况下,恢复可能成为一项非平凡、非自动、不完整甚至不可能的操作。一个完美运行的 RAID 可以完美一致地执行由用户错误、故障软件或恶意软件引起的数据更改或删除。这些是仅 RAID 提供备份的可靠性被认为是有限的一些原因。
我可以 100% 肯定地说,您可以更换 RAID 控制器卡而不会丢失数据,因为我至少做过两次。您可以这样做的原因是 RAID 控制器通常将阵列配置存储在驱动器上以及它们自己的内存中,新卡只会询问您是否要导入驱动器上的配置。这样做时,您甚至不一定需要有一张相同的替换卡,尽管这肯定是最安全的;来自同一制造商的新卡通常也可以使用。(例如,我记得戴尔支持将现有阵列从 PERC5/i 移动到 PERC6/i,但反之亦然。)需要注意的一件事是,您需要确保驱动器仍在相同的端口中在控制器上,或坏事发生。(在具有适当背板的真实服务器硬件上,电缆通常是键控的,因此您不能以错误的顺序获取它们。)
但是,我对使用主板上的 RAID 做到这一点的信心要小得多。根据我的经验,内置 RAID 在很多方面都很糟糕,除了 RAID 1 之外,我不会相信任何配置(这只是因为您可以只使用一个镜像驱动器并将其用作单个驱动器)在另一台没有数据丢失的计算机上驱动;我仍然不会尝试实际移动镜像并相信新主板可以正确导入配置)。
因此,答案是该问题有一个标准的解决方案,并且在所有名副其实的 RAID 系统上实施。只是主板RAID名不副实。
RAID 不能防止出现故障的主板的原因是它专门设计用于解决出现故障的磁盘的问题——而不是出现故障的磁盘控制器、主板或其他系统组件。
根据我的经验,如果您有数百个带有旋转硬盘的系统,那么到目前为止,这些磁盘是最有可能发生故障的组件。防范它可以轻松地将此类系统的平均故障率降低 5 或 10 倍。这就是 RAID 可以保护您的原因。
话虽如此,如果您使用硬件 RAID 使您的系统更可靠,然后让您的磁盘控制器出现故障,并丢失磁盘上的数据,那就太糟糕了,因为您不知道如何复制控制器的配置,或者控制器写了磁盘上的某些东西使状态更难恢复,即使磁盘完全正常。这确实发生了。如果硬件 RAID 提供了一个标准的解决方案,那就太好了。
我不确定那会是什么。在哪里保存配置?
无论如何,这比硬盘故障要少得多,即使恢复起来更容易,在您恢复之前数据仍然不可用。
因此,如果您希望对此具有弹性,请通过使用某种形式的分布式存储(例如Ceph或DFS),使您的存储能够抵御特定系统的任何故障。
我在现实世界中观察到的一个失败:
控制器发生故障,每个连接的驱动器的扇区零被清零。
实际上,所有数据都没有受到伤害,但是将其全部复制下来却很棘手!
因为不同的 RAID 控制器在将数据分布在多个磁盘上时使用不兼容的格式。您可以通过使用可以更换或移动到另一块主板的外部 (PCI-Express) RAID 控制器来缓解此问题,并从同一开始购买备用控制器,以便所有版本号匹配。即使这样,某些控制器也不能容忍这些操作,因此您必须提前测试您的恢复方案是否有效。另一种选择是使用 Linux 服务器上常见的软件 RAID 较差。
除了已经提供的出色答案之外,您可能还想查看 RAID 的 ZFS 实现。
ZFS 很有趣,因为它既充当卷控制器又充当文件系统管理器。这意味着,它控制低级别(设备 RAID、重建、池)和高级别(文件系统、数据缓存)的存储设备。
ZFS 的 RAID 实现的好处是,如果在整个冗余磁盘阵列的某处有一个可用的文件系统数据副本,则该磁盘池可以移动到(几乎)任何其他运行兼容版本 ZFS 的硬件,并且阵列将同样可恢复。没有使用 RAID 卡或板载 RAID,所以没有问题.....