Windows 10 存储池的可恢复性(软件 RAID 5)

Windows 10 存储池的可恢复性(软件 RAID 5)

我目前正在研究 RAID 5 以存储家用 PC 上不断增长的数据,但有些事情我仍不清楚。目前,我的每个驱动器都由一个额外的“备份”驱动器备份,并且我只使用自定义脚本来频繁备份我的数据。我目前有 4 个驱动器的数据,另外还有 4 个驱动器用于备份这些数据(加上 1 个没有备份的垃圾数据驱动器)。它们大多数都是外部 USB 驱动器。我的存储空间很快又会用完,所以我正在寻找更好的选择。我目前的懒惰备份策略已经实施了大约 15 年。不幸的是,我的主要限制因素是成本,我不能简单地购买一整套新的更合适的驱动器来做任何最好的选择。每次扩展都需要将驱动器数量翻倍,这已经很昂贵了。

因此,我一直在研究 RAID 5,并考虑使用我现有的 9 个驱动器设置三个 RAID 5 存储(主要是因为只有 3 个驱动器的大小相同)。我将为此使用 Windows 10 存储池奇偶校验选项,为简单起见,我将其称为 RAID。

问题

1.我读到过(显然)USB 驱动器由于吞吐量限制而不适合 RAID,我理解这一点。但我找不到具体程度。与单个驱动器相比,我预计读写速度会大幅减慢吗?或者 RAID 5 的速度会和 RAID 中最慢的 USB 驱动器一样慢吗?或者速度会稍微加快一点吗?

2.我不明白我到处都能找到的说法,即一个 URE(不可恢复的读取错误)加上一个驱动器故障就可能意味着整个 RAID 丢失。我遇到过部分驱动器故障,但在过去 15 年里,我的驱动器从未在没有任何警告的情况下完全死机。如果只有某些扇区损坏,我是否只会丢失与这些扇区相对应的条带上的数据,而不是整个 RAID?

3.假设我只有一个驱动器上的某些扇区发生故障,重建将如何进行?完全移除受影响的驱动器并重建所有内容?或者我可以使用 RAID 之外的第 4 个驱动器,将所有未损坏的扇区复制到其中,然后仅重建损坏的扇区,并将其写入第 4 个驱动器?更重要的是,如果 2 个不同驱动器上的 2 个扇区(但也在 2 个不同的 RAID 条带中)损坏,该怎么办?除了软件无法处理之外,我不明白为什么这会是数据丢失。但到目前为止,我读到的内容似乎表明这是数据丢失。如果是这种情况,我想我不会使用 RAID,因为这似乎很不合理。

4.据我所知,最高风险是当一个驱动器完全发生故障时,我必须阅读全部数据来自全部其他驱动器来重建它。我并不清楚这有多紧张。在我当前的设置中,我每隔一段时间就会通过散列数据驱动器和备份驱动器上的每个文件并将其与保存在其他地方的散列列表进行比较来验证我的数据。我认为这和重建 RAID 驱动器一样紧张?

谢谢你的帮助

答案1

我对存储空间不是特别熟悉,所以我会尽量使其尽可能通用。


  1. 我读到过(显然)USB 驱动器由于吞吐量限制而不适合 RAID […]

更重要的是,USB 驱动器不够可靠。参见当 USB 设备消耗的电量超过集线器所能提供的电量时,会发生什么情况?. RAID 只对可靠性有意义,除永久连接之外的任何连接都不够可靠。

  1. […] 我遇到过部分驱动器故障,但在过去 15 年里,我的驱动器从来没有在没有任何警告的情况下完全损坏。

到目前为止,您还算幸运,但您不应假设这种情况会持续下去。突然出现硬盘故障是常有的事。此外,与直觉相反,新出厂的硬盘更容易出现故障。参见浴缸曲线

如果只有某些扇区损坏,我是否只会丢失与这些扇区相对应的条带上的数据,而不是整个 RAID?

这不是 RAID 控制器(硬件或软件)通常所做的。它假设您有备份,发生严重故障比默默忽略错误要好,因为这样您就不可能错误地认为一切都很好。这种故障被认为是一种极端情况,您应该在风险评估中考虑到它。如果您在这种情况下还没有准备好从备份中恢复,那么您需要更多的冗余。

  1. 假设只有一个驱动器上的某些扇区发生故障,重建将如何进行?我是否必须完全移除受影响的驱动器并重建所有驱动器?或者我可以使用 RAID 之外的第 4 个驱动器,将所有未损坏的扇区复制到其中,然后仅重建损坏的扇区,并将其写入第 4 个驱动器?

在理想情况下,复制好的扇区与在理想情况下重建扇区实际上没有什么不同,只是重建会给阵列带来更大的压力。在不太理想的情况下,您将复制看起来正常但包含损坏数据的扇区。如果不与其他驱动器进行比较,您就无法检测到这一点,而这正是重建所做的:它假设它们的数据比故障驱动器上的数据更可能正确。

更重要的是,如果两个不同驱动器上的两个扇区(但位于两个不同的 RAID 条带中)损坏,该怎么办?我不明白为什么这会造成数据丢失,除非软件无法处理。但到目前为止,我读到的内容似乎表明这是数据丢失。如果是这种情况,我想我不会使用 RAID,因为这似乎很不合理。

这是一个棘手的情况,我不确定会发生什么。我会通过在虚拟机中设置一个小型 RAID 并通过故意破坏原始磁盘数据来模拟这种情况来测试这一点。这不是一个完美的测试方法,因为损坏的数据 != 不可读的数据,但如果它适用于损坏,它应该适用于坏扇区。在 Linux 上,您可以使用dm-完整性+ 故意腐败以更好地模拟这种情况。

  1. 据我所知,当一个驱动器完全失效时,风险最高,我必须读取所有其他驱动器中的所有数据才能重建它。我并不清楚这有多大的压力。在我当前的设置中,我会不时地通过散列数据驱动器和备份驱动器上的每个文件并将其与保存在其他地方的散列列表进行比较来验证我的数据。我认为这和重建 RAID 驱动器一样有压力?

重建通常包括读取所有驱动器的所有扇区,这比读取所有驱动器的所有数据(如您目前所做的)更费力。普通的旧 RAID 不区分已用空间和可用空间,因为文件系统是分层的。不过,集成 RAID 的文件系统(如 ZFS 和 btrfs)会区分可用空间和已用空间。它们还比普通 RAID 具有更强大的纠错能力。不过,它们是非 Windows 的,我不知道是否存在任何 Windows 原生替代方案。第三方适用于 Windows 的 btrfs 驱动程序存在,但我不确定它有多可靠。

重建期间的额外风险来自这样一个事实:RAID 假设驱动器随机发生故障,并且两个驱动器不太可能立即连续发生故障。在现实生活中,情况并非总是如此:类似驱动器的故障往往是相关的,因为它们具有相似的设计和相似的制造缺陷或瑕疵。


最后,设置任何形式的 RAID 都涉及擦除驱动器,因此如果没有备件,您将无法进行设置。

如果您的 USB 驱动器是 3.5 英寸型号,那么您很可能可以从中提取可像常规 SATA 驱动器一样使用的裸露内部硬盘驱动器。

我会考虑购买 NAS,将所有存储整合到一个独立的设备中。使用 Synology NAS,您甚至可以在 RAID 中混合搭配不同大小的驱动器,而不会浪费较大驱动器中的额外空间。这有点神奇,但它运行可靠,具有非常好的 GUI,并且不使用任何专有技术 - 如果一切都失败了,您可以将这些驱动器放入任何 PC 并通过从 USB 启动 Ubuntu 来读取它们。

相关内容