FlashLink,Dorado V3全闪存盘控配合技术

存储与数据技术2019-03-14 15:12:36

 

FlashLink,Dorado V3全闪存盘控配合技术


  • 引言

前文《全闪存时代的盘控之道》讨论了关于闪存时代盘控配合技术的主要发展发向。多家云计算厂商近期也发布了关于Open-Channel SSD的产品或方案,如微软的Denali项目、阿里云的Open-Channel SSD等。由于Open-Channel把FTL(Flash Translation Layer)上移到主机层,让上层主机感知SSD内部数据的布局,可以结合主机应用做深度的定制优化,比较容易受到互联网厂商的追捧。但对于专业存储厂商来讲,Open-Channel需要主机承担盘片内部空间的管理和IO的细粒度调度,将加重对存储控制器的计算压力。而随着闪存颗粒容量的不断增大,存储控制器的计算和IO带宽的瓶颈将愈发突出,很难保证大容量下的系统性能。那么华为在盘控配合技术上是如何做的呢?

华为存储从2005年开始研究闪存技术,在闪存领域拥有超过13年的持续积累。从2011年发布Dorado第一代全闪存存储时,就已经对全闪存盘控配合技术持续深入研究。在盘控配合技术的道路上,Dorado V3全闪存阵列提供了以FlashLink为核心的盘控配合技术,对SSD和存储控制器进行端到端的深度优化和配合,在保证可靠性的同时,最大限度地发挥闪存的性能。

FlashLink针对闪存介质特点设计的关键技术主要有:冷热数据分流技术、端到端IO优先级调度、ROW(RedirectOn Write)满分条写,全局垃圾回收以及全局磨损均衡/反磨损均衡等,有效的解决了闪存系统中写放大、闪存寿命、垃圾回收及闪存性能抖动等问题,保障了稳定的低时延和高IOPS。


  • 冷热数据分流

大家知道,SSD是以Block为单位来整体擦除的。对于垃圾回收,SSD硬盘期望待垃圾回收的Block中所有数据都是无效的。这样就可以擦除整个Block,而不用额外搬移有效数据,可以减少系统的写放大。而存储系统中不同数据具备不同的冷热程度。比如:系统的元数据更新频繁,产生垃圾的概率比较高;而用户数据一般修改的频率相对较低,产生垃圾的概率要低。FlashLink技术通过硬盘驱动和控制器软件配合,在控制器软件中将修改频率不同的数据(元数据、用户数据)带上不同的标记发给SSD,使得修改频率不同的冷热数据存放在不同的Block中,从而增加Block中数据同时无效的概率,减少垃圾回收过程中搬移的有效数据,提升SSD的性能及可靠性。

冷热数据分流技术示意图


下图中红色代表元数据,灰白色代表用户数据。使用冷热数据分流技术前,用户数据和元数据混合分布在SSD盘片的相同Block上。由于元数据变化快,很快成为垃圾数据。盘片进行Block擦除的时候,就需要把有效的用户数据搬移到新的Block上。使用冷热数据分流技术后,元数据和数据分布到不同的Block上。对元数据所在的Block,由于元数据修改频繁,容易成为垃圾,垃圾回收的时候Block上要搬迁有效数据就比较少。冷热数据分流后,可以显著提高垃圾回收的效率,进而降低垃圾回收对系统性能波动的影响。

冷热数据分流技术效果示意图


  • 端到端IO优先级调度

为保证稳定时延,DoradoV3全闪存阵列对各类IO进行了优先级标识。根据这些标识,系统在CPU调度、资源调度、排队等方面进行控制,实现端到端的优先级保障。如SSD在接收IO时,会检查IO的优先级标识,并优先处理高优先级IO,优先保证用户的读写请求,实现SSD盘对高优先级IO的快速响应。

系统将IO分为多种类别,为不同类别赋予了不同的IO优先级,并在系统和盘片上传递和实现优先级,从整体上获得最均衡的内外部IO响应能力。

端到端IO优先级调度


  • ROW满分条写

ROW满分条写入是对SSD更为友好的写入方式。对所有数据都采用新写模式,这样不需要因为传统RAID写流程所需的数据读和校验修改写而产生RAID写惩罚,有效降低了写入过程阵列控制器的CPU开销与对SSD盘的读写压力,以及颗粒磨损。相比传统的RAID覆盖写(Write In Place)的方式,ROW满分条写方式使得各种RAID级别都能实现高性能,并且提供更好的SSD写寿命。

ROW满分条写入示意


上图以RAID6(4+2)为例,对已有的数据进行修改,修改写入的数据为1、2、3、4。采用传统的覆盖写方式,对每个数据所在的CKG(Chunk Group,一个小的RAID组)均需要进行修改写。以CKG2为例,写入新数据3时,需要读取校验列P、Q和原始数据d,通过冗余算法计算出新的校验位P’、Q’,再把P’、Q’和数据3写入CKG2中。而采用ROW满分条写设计,写入数据1、2、3、4时,直接凑齐一个RAID分条一起写入硬盘,再修改数据逻辑地址的指针指向新的CKG,整个过程无需额外的预读,可以显著降低RAID写惩罚。Dorado V3全闪存阵列通过该技术实现的RAID5与RAID6性能相差5%左右,RAID6与RAID-TP(RIAD-Triple Parity)性能相差5%左右,基本做到了性能无损。


  • 全局垃圾回收

ROW满分条写的方式带来各个CKG会因为修改后数据被重定向到新的CKG而产生垃圾数据(如下图所示),系统需要进行垃圾回收操作以回收被占用的空间。垃圾回收会判断每个CKG中垃圾量占比,将垃圾量较多的CKG中的有效数据搬移到新分配的CKG上;有效数据全部搬走后,回收该CKG。在全局垃圾回收技术中,Dorado通过控制将修改频率较高或同一顺序流的数据存放在SSD相同的Block中,使得这部分数据被修改或删除时,整个Block中的数据一起成为垃圾数据的概率提高,从而可以降低SSD内部在垃圾回收时有效数据的搬迁量,实现了系统全局垃圾回收和SSD盘内垃圾回收的协同和配合。

全局垃圾回收示意图


  • 全局磨损均衡/反磨损均衡

SSD相比于HDD有个最大的不同在于每个SSD均有一定的写入数据量约束,其寿命与其写入的数据量呈反比。因此全闪存系统需要保持多块硬盘之间的数据负载均衡,防止个别盘因频繁写入而提前寿命到期。FlashLink技术利用控制器软件与硬盘驱动配合,定期向SSD控制器查询盘片磨损程度,并将磨损程度高低作为分配空间的判断依据之一,控制数据在SSD间的均衡分布,从而实现了全局的磨损均衡,保障的SSD寿命。

全局磨损均衡示意图


但是当SSD盘片进入寿命末期时,如盘片平均磨损度已达到80%以上,如果继续均衡磨损那么可能会导致多块硬盘同时故障导致数据丢失。为防止SSD出现批量故障,系统会进入全局反磨损均衡状态,选择一块磨损度最高的SSD作为反磨损对象,只要该SSD有空闲空间,立即将其分配出来用于新数据写入,确保该SSD比其它盘片更快达到寿命上限,引导用户提前进行更换,从而避免了大批SSD同时故障造成业务中断。

全局反磨损均衡示意图


  • 小结

同时,针对分布式架构及服务于华为云计算的数据底座,依托于SSD控制器和芯片的自研能力,华为也将尝试把部分计算和数据管理功能卸载到SSD盘内的盘控配合方案,提供Plog接口的SSD盘。关于Plog的介绍,我们将在后续文章中继续展开。

 

 

 


Copyright © 古田计算器虚拟社区@2017