运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

Google说闪存不如硬盘可靠,Nimble说RAID 3P+能搞定

运维开发网 https://www.qedev.com 2021-04-28 08:24 出处:51CTO 作者:mob604756f37073
大家知道,前几天Goggle在USENIXFAST2016发布了一篇论文,说在实际环境中,闪存的可靠性其实不如硬盘。这可在业界兴起了轩然大波,很多不太了解的客户就会问,这么说,全闪存时代不会这么快来了,还是暂时不考虑全闪存阵列了吧,可靠性不行啊。其实,仔细研究论文的人,应该是没有这个想法的。因为Goggle说的闪存的可靠性不高,指的只是颗粒层面,到了SSD(我这里用SSD来表示闪存盘)层面,再到A

Google说闪存不如硬盘可靠,Nimble说RAID 3P+能搞定

大家知道,前几天Goggle在USENIX FAST 2016发布了一篇论文,说在实际环境中,闪存的可靠性其实不如硬盘。

Google说闪存不如硬盘可靠,Nimble说RAID 3P+能搞定

这可在业界兴起了轩然大波,很多不太了解的客户就会问,这么说,全闪存时代不会这么快来了,还是暂时不考虑全闪存阵列了吧,可靠性不行啊。

其实,仔细研究论文的人,应该是没有这个想法的。因为Goggle说的闪存的可靠性不高,指的只是颗粒层面,到了SSD(我这里用SSD来表示闪存盘)层面,再到AFA(全闪存阵列)系统层面,可靠性完全是可以满足要求,甚至超过HDD系统的可靠性。

这不,Nimble Storage的CTO就是这么一个爱学习的人。今天,西瓜哥就聊聊他对该论文的解读,还有Nimble Storage的应对之道。

Google说,SSD和HDD的故障模式有两点不同:

整盘故障(需要更换驱动器):SSD的年故障率要低于HDD;

部分数据丢失:SSD比HDD有很高的不可恢复错误(每一个扇区,典型大小0.5-4KB,被纠错码(ECC)保护。但一个扇区有太多的比特错误,超过了ECC的纠错能力,就会导致这个扇区的数据丢失)

大家可以看到,其实SSD整盘的故障率其实比HDD低,只是在扇区层面故障率比较高。因此,存储厂商必须了解这些特点,对症下药,才能提高AFA系统的可靠性。

Google的论文还说, 原始比特误码率(RBER) 并不能预测不可恢复错误的发生,也就是这两者没有相关性。这个好像和我们的常识不符。但具体原因,Google没有解释。

Nimble CTO说Nimble了解闪存这些故障特点,并在Nimble系统层面已经解决这些问题,并且试图解释为什么RBER和不可恢复错误不相关。

整盘失效

为啥HDD容易整个盘都坏了呢?其实原因很简单,HDD是机械部件,某个部件比如马达坏了,磁盘也就完完了。而SSD是电子器件。

Goggle说他们的驱动器故障率是这样的:

SSD:4年多的更换率是4%-10%,平均每年1%-2.5%

HDD:每年2-9%

大家知道Nimble有一个很牛的云监控软件叫InfoInsight。Nimble CTO说,他们也监控了5年,他们的阵列的驱动器整体故障率要低于Google,但比例相似,即SSD的更换率只有HDD的1/3。

但要注意的是,SSD的固件复杂,因为要做FTL和垃圾收集。Google应该针对自己的应用定制了自己的固件,但市场上的商用产品,由于不同的固件版本,故障率可能也不同。

另外,SSD相比HDD来说还是新事物。HDD已经有60多年历史,但现在还不断发现影响故障率的因素。比如就在同一个会议的另外一篇论文就说HDD的故障率受到湿度的影响很大。而SSD才10年多历史,未来估计还会有更多的发现。

Nimble如何应对整盘失效呢?Nimble的triple parity RAID(也叫RAID 3P,喂,这位男同学,不要想歪了,不是那个3P)可以支持3块硬盘同时故障。

当然,Nimble还留有热备盘,这样驱动器故障后可以马上进行重构,减少故障时间。

你可能说,3个校验加热备,是否太浪费空间了?这个,Nimble通过增加RAID组成员的数量解决容量使用率的问题,比如20D+3P+1S,使用率也是很高的。

当然,要减少计算校验的时间和写放大,应该就是Nimble的CASL架构应该考虑的事情了。

* 部分数据丢失

RAID 3P很好解决了整盘故障,但是如果SSD内部部分数据丢失怎么办?Goggle说,4年来一共有23-60%的SSD丢失过某些数据,而HDD在2.5年里只有3.5%(底层丢失数据但上层还有保护,因此应用系统是不受影响的,不要理解为系统丢失数据)。

如果整个盘只有几个坏块,自己能够修复其实是最好的方式。Nimble把每个盘分成很多chunk,每个chunk比如包含100个扇区,系统在每个chunk加上1个或几个校验扇区,当这个chunk有不可恢复错误时用来进行盘内修复。如果把横向的校验叫盘间校验的话,chunk的校验就叫盘内校验。盘内校验空间一般无需太大,约1%即可。

这样,我们可以看到,Nimble的RAID逻辑结构如下:

Google说闪存不如硬盘可靠,Nimble说RAID 3P+能搞定

由于RAID 3P还多了一层盘内校验,因此,Nimble内部把这个叫做RAID 3P+,哈哈,这个是否有点华为RAID 2.0+的意思。不过,从上图我们看到,由于RAID 3P+还是保留了热备盘,重构的时候热备盘还是容易成为瓶颈。不过,Nimble的人很多从NetApp出来的,因此其CASL必然也吸取了RAID DP的优点,只是变成了RAID 3P而已。不过,基于chunk的RAID肯定比基于盘的RAID重构快,因为只需要重构写过的chunk。

Nimble还说,其实加上热备盘(不是所有厂商都有),应该宣传RAID 3P++,哈哈。

还有,针对静默故障,Nimble也采用checksum校验码保护每一个块。并且后台会扫描并修复发生问题的块。这个很多阵列也一样,不提。

* RBER和不可恢复错误

关于原始比特误码率和不可恢复错误为什么没有关系,Nimble认为应该是RBER是按照整个硬盘统计的,但其实原始比特误码并不是均匀分布的。如果集中在某些扇区,这些扇区可能就发生不可恢复错误,即ECC也纠错不了了。

就像雪的多少和平均海拔的关系一样。某些地方,平均海拔不高,但并不代表雪不多。因为高山多,雪就多。而某些地方,就算平均海拔比较高,但不见得雪就多,因为没有高山。

Nimble CTO说和Google论文作者交流了他们的想法,Google认为有道理。

【学习心得】

1、针对闪存的特点,看来传统的RAID方式难满足要求了。Nimble的RAID 3P+给我们一些很好的启示。EMC的DSSD的Cubic RAID(参考1分钟看懂EMC DSSD的Cubic RAID原理)更是一种创新,虽然Nimble其实也是一种多维RAID,我个人感觉Cubic RAID更完善一些。而Pure Storage的RAID 3D,EMC XtremIO的XDP等都没有采用传统的RAID形式。据了解,华为的新一代全闪存阵列Dorado V3虽然还是采用RAID 2.0+,但是可能采用3校验的方式,支持同时坏3块SSD,不知道华为是否会宣传RAID 2.0+ 3P呢?O(∩_∩)O哈!

2、SSD作为较新的一种介质类型,就像HDD一样,相信以后不断会有新的故障特征被发现。因此,存储厂商需要时刻关注这些研究结果,特别是大型互联网公司的生产实践,不断创新,以较小的代价持续提高闪存系统的可靠性。

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号