很长一段时间以来,我都听说过大型(> 5TB?)RAID-5 阵列的想法是多么糟糕,因为另一个驱动器发生故障的风险很高。
RAID-Z1 是否已设法针对任何大小的阵列解决此问题(如果您绝对需要一个数字,请考虑 4x2TB 或 5x2TB)?也许是一种更安全的方法来重新复制所有驱动器上不那么密集的数据?
Chr*_*s S 11
RAID-Z 和 R5 一样糟糕吗?是不是和R1或R10一样好,通常没有。
RAID-Z 知道驱动器上的空白点,而 R5 则没有。因此 RAID-Z 只需读取有数据的区域即可恢复丢失的磁盘。此外,数据不一定跨所有磁盘条带化。一个非常小的文件可能只驻留在一个磁盘上,而奇偶校验位于另一个磁盘上。因此,RAID-5 必须读取与阵列上使用的空间完全一样多的数据(如果在 5TB 阵列上使用 1mb,则重建只需读取 1 mb)。
反过来说,如果大型阵列的大部分已满,则需要从所有磁盘读取大部分数据。与 R1 或 R10 相比,R1 或 R10 只需要从一个磁盘中提取数据(每个故障磁盘;如果多个磁盘仅在阵列仍然可恢复的情况下发生故障)。
您担心的是,在每次扇区读取操作中,您都有可能发现未正确写入或不再可读的扇区。对于如今的典型驱动器,大约为 1x10^-16(并非所有驱动器都是相同的,因此请查看驱动器上的规格以找出它们的等级)。这种情况非常罕见,但大约每 1PB 出现一次;对于 10 TB 阵列,您的阵列有 1% 的可能性是吐司,直到您尝试恢复它时您才知道。
ZFS 还有助于减少这种机会,因为在您开始尝试重建阵列之前,大多数不可读的扇区都很明显。如果您定期清理 ZFS 阵列,清理操作将拾取这些错误并解决它们(或提醒您以便您可以更换磁盘,如果这是您的滚动方式)。他们建议您每月擦洗企业级磁盘一到四次;和消费级驱动器至少每周一次或更多次。
即使考虑到这里列出的其他答案之一,即 ZFS 仅适用于实际使用的块而不是空白空间,是的,制作大型 RAIDZ1 vdev 仍然很危险。大多数池最终的利用率至少为 30-50%,许多池达到了建议的最大值 80%(有些超过了它,出于性能原因,我强烈建议您根本不要这样做),因此 ZFS 仅处理使用过的块并不是一个巨大的胜利。此外,其他一些答案听起来像是阅读不好是导致问题的原因。事实并非如此。一个块内的一点点腐烂不会让你在这里搞砸,通常,它是另一个磁盘刚刚坏了,而第一个磁盘坏了的重新同步仍在继续,这会杀了你......在 3 TB 磁盘上在大型 raidz1 中,可能需要数天甚至数周的时间 重新同步到新磁盘上,因此发生这种情况的机会并非微不足道。
我个人对客户的建议是,永远不要使用 RAIDZ1(相当于 RAID5)和 750 GB 以上的磁盘,只是为了避免很多潜在的不愉快。由于其他原因(系统在其他地方有备份,数据不是那么重要等),我对他们违反此规则感到满意,但通常我会尽力推动 RAIDZ2 作为具有大容量的最小选项磁盘。
此外,出于多种原因,我通常建议在 raidz2 条带中不要使用超过 8-12 个磁盘或在 raidz3 条带中使用 11-15 个磁盘。您应该处于具有 3 TB 磁盘的这些范围的低端,并且在具有 1 TB 磁盘的这些范围的高端可能没问题。这将有助于让您远离在重新同步进行时更多磁盘将出现故障的想法,这只是其中一个原因,但却是一个重要原因。
如果您正在寻找一些理智的经验法则(编辑 04/10/15 - 我在编写这些规则时只考虑了旋转磁盘 - 因为它们也是合乎逻辑的 [为什么你会在 raidz1 中使用少于 3 个磁盘] 他们即使对于 SSD 池也有一定意义,但是当我写下这些时,我脑子里并不是全 SSD 池):