固态硬盘 Vs RAID?是否该调整RAID以支持固态硬盘?

我的同事兼好友、存储分析师雷伊卢凯西(Ray Lucchesi)在最近一篇博客文章中指出,我们现在将固态硬盘与有限的写寿命和RAID整合在一起可能是一种危险的做法。雷伊建议对固态硬盘进行调整,以便让它们能够更好地与RAID协作。

但我认为,雷伊刚好说反了。我们不应该担心如何让固态硬盘更好地与RAID协作。 我们应该考虑的问题是,是否应该对RAID进行调整或是替换,以支持固态硬盘。

雷伊是在拜读了纳西姆尼古拉斯塔勒布(Nassim Nicholas Taleb)的最新畅销书《Antifragile:Things That Gain from Disorder》之后写下他的那篇博客文章的。塔勒布是《黑天鹅》(The Black Swan)一书的作者。塔勒布假设的前提是:有很多系统不但可以容许故障和其他应激物,而且还可以因为它们而改善。 相反,易碎的系统在受到压力时就会出现故障。反易碎的系统实际上就是那些不能杀死你反而能使你更加强壮的系统。

雷伊担心的问题是有限的写寿命会导致多块固态硬盘出现故障,从而造成数据丢失的结果。因为RAID是根据传统硬盘而设计的,传统硬盘实际上并不会出现磨损,只是会随机性出现故障,因此雷伊认为我们应该改善固态硬盘以提高它的故障的正常性或随机性。 这会在未来扩大故障的范围。因此,RAID系统可能会改造一块出现故障的固态硬盘,而且运营商可以在第二块固态硬盘出现故障之前更换掉已经出现故障的固态硬盘。

雷伊建议存储专业人士和固态硬盘厂商对我们的实际操作进行改良,以便将故障分散化,让RAID能够良好运行:

  • 在RAID中混用新旧固态硬盘,这样它们就不会同时出现故障。
  • 避免向多块固态硬盘写入相同数量的数据。
  • 在同一个RAID集中,将固态硬盘与不同写寿命水平的设备混合使用。
  • 利用故障跳过功能消除固态硬盘的磨损级别。

这些改良措施尤其是消除磨损级别可以增强固态硬盘故障的随机分布。问题是,它们也会减少固态硬盘的使用寿命。 我宁愿使用一大堆经过3万次写周期后出现故障的固态硬盘,也不愿意使用在经过1万次写周期到2.5万次写周期后随机出现故障的固态硬盘。

由于每一款固态硬盘都有SMART(自我监控、分析和报告技术)计数器,它不但可以报告有多少flash页面出现过故障,而且还可以报告设备剩余的写寿命还有多少。

如果我们的RAID控制器(当我们迁移到软件定义存储时,就还包括它们的软件控制器)只能监控这些计数器,它们就可以向管理员发出一条信息,在更好的情况下,它们还可以向厂商的支持团队发送一条信息。这些固态硬盘在写寿命耗尽之前就可以被替换下来。

我们面临的部分问题是,我们一直在使用RAID,它已经成为我们的存储根本概念中的一个根深蒂固的元素。但是RAID本身只是一种问题的解决方案。 帕特松、吉布森和卡茨最初提倡RAID是因为生产容量更大、速度更快的硬盘的成本过于高昂。RAID的设计初衷是将一系列廉价传统硬盘整合起来,让它的容量比一款大容量的昂贵磁盘的容量更大,速度更快。

固态硬盘的速度非常快,因此我们很少需要利用RAID来提高它们的速度。然而,我们对可靠性的预期也提高了,因此我们需要一些冗余来提高它们的可靠性。 我认为,闪存硬盘与传统硬盘是不同的,为了让它能够与使用了25年的RAID设计协作,调整软件比牺牲闪存硬盘的优势更好一些。

为固态硬盘和混合环境建立后RAID数据保护方案应该修改旧的镜像、对等和双对等方案,这样不仅可以防止设备出现故障,而且还可以将它们创造的写放大数值减少到最小程度。避免写数据尤其是写入少量数据可以延长固态硬盘的使用寿命和可靠性。

这样就不用消除磨损级别,因为固态硬盘控制器需要经常向空白页写入数据,因此那是很难做到的,他们应当扩展它,将磨损平均分布到一块固态硬盘的所有闪存中,乃至于平均分布到一个系统中的所有固态硬盘中。

如果我们专注于全面减少故障而不是增强故障恢复,我们就能够得到更高的正常运行率。

到底是我提出的解决方案更好,还是雷伊提出的解决方案更明智呢? 欢迎大家各抒己见,畅所欲言。