很长时间以来,我听说一个大型(> 5TB?)RAID-5arrays的想法有多糟糕,只是因为另一个驱动器出现故障的风险很高。
RAID-Z1是否设法为任何大小的数组(如果你绝对需要一个数字考虑4x2TB或5x2TB)的补救? 也许更安全的方式来重新复制所有驱动器上不那么激烈的数据?
即使给出了其他的答案,也就是说ZFS只适用于实际使用的块而不是空的空间,是的,制作一个大的RAIDZ1 vdev还是很危险的。 大多数游泳池的使用量至less达到30-50%,许多游泳池的使用率最高可达80%(有些游泳池已经过去了,我强烈build议您不要这样做,因为性能方面的原因),所以ZFS只处理与使用块是不是一个巨大的胜利。 另外,其他一些答案让听起来像是一个错误的阅读是什么原因造成的问题。 事实并非如此。 在一个块里面有点烂是不是会在这里搞砸你的,通常,这是另一个磁盘刚刚变平变坏,而第一个磁盘坏了仍然会继续下去,这将会杀了你..和3 TB磁盘在一个大型raidz1中,可能需要几天甚至几周的时间才能重新启动到新的磁盘上,所以发生这种情况的可能性并不是很小。
我个人对客户的build议是永远不要使用超过750GB的RAIDZ1(RAID5等效)磁盘,以避免很多潜在的不愉快。 对于他们打破这个规则,我一直没有问题,因为其他原因(系统在其他地方有备份,数据不是那么重要等等),但是通常我会尽我所能推动RAIDZ2作为一个最小的选项,大磁盘。
另外,由于多种原因,我通常build议在raidz2条纹中不要超过8-12个磁盘,在raidz3条纹中不要超过11-15个磁盘。 您应该使用3TB磁盘处于这些范围的低端,也可能在1TB磁盘上的这些范围的高端。 这将有助于您远离更多的磁盘将失败,而重启正在进行的想法只是其中的一个原因,但一个大的。
如果你正在寻找一些合理的经验规则(编辑04/10/15 – 我只写了这些规则,只考虑旋转磁盘 – 因为它们也是合乎逻辑的[你为什么要在raidz1中less于3个磁盘]他们即使对于SSD池也有一定的意义,但是当我写下这些时,全SSD池不在我脑中):
RAID-Z和R5一样坏,没有。 是否像R1或R10一样好,通常没有。
RAID-Z知道驱动器上的空白点,而R5不在。 所以RAID-Z只需要读取数据的区域来恢复丢失的磁盘。 而且,数据不一定在所有磁盘上分布。 一个非常小的文件可能驻留在一个磁盘上,并在另一个磁盘上存在奇偶校验。 因为这个RAID-5将不得不读取与arrays上使用的空间一样多的数据(如果在5TBarrays上使用1mb,那么重build只需要读取1MB)。
换一种方式,如果大数组中的大部分数据已满,则大部分数据将需要从所有磁盘读取。 与R1或R10相比,只需要将数据精确地从一个磁盘中拔出(每个故障磁盘;如果多个磁盘只在arrays仍然可恢复的情况下发生故障)。
你担心的是,在每个扇区读取操作中,你都有可能find一个没有被正确写入或者不可读的扇区。 对于一个典型的驱动器,这些天约1×10 ^ -16(不是所有的驱动器是平等的,所以查找您的驱动器上的规格来找出他们的评级)。 这是非常罕见的,但每1PB大约出现一次; 对于一个10TBarrays,有1%的机会可以让你的arrays烤面包,而你只有在尝试恢复时才知道。
ZFS还有助于缓解这一机会,因为在开始尝试重buildarrays之前 ,大多数不可读的扇区都是显而易见的。 如果您定期清理您的ZFSarrays,擦洗操作将吸取这些错误并解决它们(或提醒您,以便您可以更换磁盘,如果这是您如何滚动)。 他们build议你每月清理一到四次企业级磁盘; 和消费级驱动器至less每周一次或更多。
与传统的RAID-5相比,RAID-Z的一些优点是不需要专门的硬件,而且通过避免RAID-5写入漏洞更加可靠。
但是,RAID-Z和RAID-5都不能承受多于一个的磁盘故障。
如果您希望在ZFS中存在两个磁盘故障,则可以使用RAIDZ2和三个磁盘故障RAIDZ3 。