EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转—— Google说闪存不如硬盘可靠,Nimble说RAID 3P+能搞定 2 s# F' d5 D+ F' K& P; G
大家知道,前几天Goggle在USENIX FAST 2016发布了一篇论文,说在实际环境中,闪存的可靠性其实不如硬盘。/ h2 m% I+ i* L8 m' J
8 \( T3 F6 l+ j1 K这可在业界兴起了轩然大波,很多不太了解的客户就会问,这么说,全闪存时代不会这么快来了,还是暂时不考虑全闪存阵列了吧,可靠性不行啊。
{" x$ [2 n0 M9 O$ g5 o% ]其实,仔细研究论文的人,应该是没有这个想法的。因为Goggle说的闪存的可靠性不高,指的只是颗粒层面,到了SSD(我这里用SSD来表示闪存盘)层面,再到AFA(全闪存阵列)系统层面,可靠性完全是可以满足要求,甚至超过HDD系统的可靠性。+ l) b0 O, a, X/ t
这不,Nimble Storage的CTO就是这么一个爱学习的人。今天,西瓜哥就聊聊他对该论文的解读,还有Nimble Storage的应对之道。, e T7 y4 ^, ^1 A) O8 U* \
Google说,SSD和HDD的故障模式有两点不同:$ m3 O/ [+ i/ z$ ?' x
- 整盘故障(需要更换驱动器):SSD的年故障率要低于HDD;
- 部分数据丢失:SSD比HDD有很高的不可恢复错误(每一个扇区,典型大小0.5-4KB,被纠错码(ECC)保护。但一个扇区有太多的比特错误,超过了ECC的纠错能力,就会导致这个扇区的数据丢失)
5 T% {( j' f* E5 r( d, d 大家可以看到,其实SSD整盘的故障率其实比HDD低,只是在扇区层面故障率比较高。因此,存储厂商必须了解这些特点,对症下药,才能提高AFA系统的可靠性。
' ]5 i8 D6 J4 \1 Q5 C8 D6 SGoogle的论文还说,原始比特误码率(RBER) 并不能预测不可恢复错误的发生,也就是这两者没有相关性。这个好像和我们的常识不符。但具体原因,Google没有解释。& O) K p) S3 U2 s* A* c
Nimble CTO说Nimble了解闪存这些故障特点,并在Nimble系统层面已经解决这些问题,并且试图解释为什么RBER和不可恢复错误不相关。
, J9 }" G& }% j% |3 x- 整盘失效
3 _1 Z( |) N1 Z4 O L4 v) I 为啥HDD容易整个盘都坏了呢?其实原因很简单,HDD是机械部件,某个部件比如马达坏了,磁盘也就完完了。而SSD是电子器件。
; P5 D" n! \2 F g( r3 kGoggle说他们的驱动器故障率是这样的:
& o$ D+ B) s8 u. H5 {- SSD:4年多的更换率是4%-10%,平均每年1%-2.5%;
- HDD:每年2-9%. @6 ^ k2 P' h3 y, H
大家知道Nimble有一个很牛的云监控软件叫InfoInsight。Nimble CTO说,他们也监控了5年,他们的阵列的驱动器整体故障率要低于Google,但比例相似,即SSD的更换率只有HDD的1/3。" s% s* Z8 ]1 I: x. f) D- {- _
但要注意的是,SSD的固件复杂,因为要做FTL和垃圾收集。Google应该针对自己的应用定制了自己的固件,但市场上的商用产品,由于不同的固件版本,故障率可能也不同。
0 [6 A; b7 \7 q" h' e8 `0 e! F$ d另外,SSD相比HDD来说还是新事物。HDD已经有60多年历史,但现在还不断发现影响故障率的因素。比如就在同一个会议的另外一篇论文就说HDD的故障率受到湿度的影响很大。而SSD才10年多历史,未来估计还会有更多的发现。( h9 g! t8 @. W' l+ s% `* c
Nimble如何应对整盘失效呢?Nimble的triple parity RAID(也叫RAID 3P,喂,这位男同学,不要想歪了,不是那个3P)可以支持3块硬盘同时故障。: g1 n8 E7 {. M2 p2 X y0 H
当然,Nimble还留有热备盘,这样驱动器故障后可以马上进行重构,减少故障时间。
) J2 S9 \( _" t9 f3 M4 }: _你可能说,3个校验加热备,是否太浪费空间了?这个,Nimble通过增加RAID组成员的数量解决容量使用率的问题,比如20D+3P+1S,使用率也是很高的。
@9 k ?: e$ E) |8 Q$ [当然,要减少计算校验的时间和写放大,应该就是Nimble的CASL架构应该考虑的事情了。3 _5 L3 [+ |" I9 L$ L; K$ v
RAID 3P很好解决了整盘故障,但是如果SSD内部部分数据丢失怎么办?Goggle说,4年来一共有23-60%的SSD丢失过某些数据,而HDD在2.5年里只有3.5%(底层丢失数据但上层还有保护,因此应用系统是不受影响的,不要理解为系统丢失数据)。
4 [8 {, s9 X/ b如果整个盘只有几个坏块,自己能够修复其实是最好的方式。Nimble把每个盘分成很多chunk,每个chunk比如包含100个扇区,系统在每个chunk加上1个或几个校验扇区,当这个chunk有不可恢复错误时用来进行盘内修复。如果把横向的校验叫盘间校验的话,chunk的校验就叫盘内校验。盘内校验空间一般无需太大,约1%即可。 c8 J4 E- f1 Q
这样,我们可以看到,Nimble的RAID逻辑结构如下:7 [0 O/ A8 E1 ^/ g% o( E! I) l
! u& w0 W7 H: U0 F$ L1 ^+ E9 F
由于RAID 3P还多了一层盘内校验,因此,Nimble内部把这个叫做RAID 3P+,哈哈,这个是否有点华为RAID 2.0+的意思。不过,从上图我们看到,由于RAID 3P+还是保留了热备盘,重构的时候热备盘还是容易成为瓶颈。不过,Nimble的人很多从NetApp出来的,因此其CASL必然也吸取了RAID DP的优点,只是变成了RAID 3P而已。不过,基于chunk的RAID肯定比基于盘的RAID重构快,因为只需要重构写过的chunk。; y2 c$ w# G; _' w7 p
Nimble还说,其实加上热备盘(不是所有厂商都有),应该宣传RAID 3P++,哈哈。
# i" C6 D8 G9 V还有,针对静默故障,Nimble也采用checksum校验码保护每一个块。并且后台会扫描并修复发生问题的块。这个很多阵列也一样,不提。
E3 e1 `: [7 u+ g- RBER和不可恢复错误
1 `: C0 l' j& I9 X0 f. H9 L3 c 关于原始比特误码率和不可恢复错误为什么没有关系,Nimble认为应该是RBER是按照整个硬盘统计的,但其实原始比特误码并不是均匀分布的。如果集中在某些扇区,这些扇区可能就发生不可恢复错误,即ECC也纠错不了了。7 ?; Z* ^$ H+ H. i
就像雪的多少和平均海拔的关系一样。某些地方,平均海拔不高,但并不代表雪不多。因为高山多,雪就多。而某些地方,就算平均海拔比较高,但不见得雪就多,因为没有高山。
/ |" q! E; c3 H4 m3 XNimble CTO说和Google论文作者交流了他们的想法,Google认为有道理。
" s% F, r8 P& s# [2 u; G7 k【学习心得】* ^1 q3 w# N0 |& B" F
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哈!
3 o9 x6 z) C& f- f2、SSD作为较新的一种介质类型,就像HDD一样,相信以后不断会有新的故障特征被发现。因此,存储厂商需要时刻关注这些研究结果,特别是大型互联网公司的生产实践,不断创新,以较小的代价持续提高闪存系统的可靠性。$ ?/ f3 T8 I! }& l K* J) ^, `
|