转载本号文章请注明作者、出处和二维码及全文信息,否则视为侵权。
前不久华为发布Dorado V3全闪存产品,很多专业媒体和自媒体对该产品进行了全方位报道,听闻该产品采用了很多如NVMe、LDCP算法、FlashLink等新技术,所以我也是抱着好学的态度和对技术的热情一一拜读了技术相关文章。细读后发现,关于该产品技术解读却少之又少,后来通过一次技术交流才算对该产品有了比较深入的了解。今天我就把近期所学进行总结并分享给大家,通过技术和产品分析,让大家对Dorado V3及全闪产品也有深入了解。
闪存已不再是什么新概念了。在Storage Cache和Storage Tiering的企业级SSD就进入了大众视野,如今全闪存已是常态,全闪存产品更是琳琅满目。一时之间,客户的选择面临困窘,客户的声音也被不同闪存宣传淹没。所以在开始前,我们首先很有必要把市面上现有全闪存产品,简单分为Flash优化全闪存(Flash Optimized)、Flash专有设备(Flash Appliance)和面向Flash全闪存(Flash Oriented)三种类型。
Flash Optimized全闪存是为了全闪存趋势,厂商在现有HDD或Hybrid产品基础上快速推出的全闪产品,优点是继承现有产品的所有软件特性,包括NAS能力等。但受限于软件和硬件架构,使得SSD性能无法充分发挥,很多产品都是在传统阵列上插满SSD,是一种快速推出的全闪过渡产品。
Flash专有设备(Appliance)可以充分发挥SSD性能,时延可以远达到0.1ms以下。但一般采用特有硬件,无复杂增值特性。很多新推出来的产品硬件稳定性还有待验证,为保性能和时延,件堆栈缩减比较严重,现有软件无法直接使用,往往系统增值特性不足。
Flash Oriented全闪存是针对SSD的特点设计,硬件性能通过一些细节设计消除,软件堆栈需要重新开发。相比HDD,SSD数据存取方式、介质寿命、性能瓶颈、cache预取和刷盘算法等发生了变化,软硬件完全不同于传统的HDD或Hybrid产品,所以Flash Oriented全闪存怎样设计才能归避和解决上述2中产品遇到的问题,就变成了产品技术核心和难点。
有了上述这个归类,接下来就比较容易、清晰的进行技术和产品分析了。通过文章标题大家应该知道,本文对Dorado V3产品的总结只有八个字,即GRIP和FAST。GRIP包括Grained flash mamagement、ROW、Inline de-diplication&compression和Parity RAID。
FAST包括Flashlink盘控结合技术、Active-active solution、Snapshot with zero loss和RAID-TP。
这八个字基本上囊括了面向Flash全闪存应该同时具有的特性,为什么面向Flash全闪存需要具备这八个字特征,下面我们逐一讨论分析一下。
Granular Space Management
细粒度空间管理是RoW、在线数据缩减的基础,全闪存的主要应用场景就是数据库,故而4K、8K的重删粒度对数据库能否适应就变得尤为重要,因为重删粒度大于业务IO大小就根本失去意义了。Dorado V3采用ROW空间分配方式,整个系统基于Thin provisioning架构,存储空间按需分配、避免多余分配造成浪费;另外,细粒度空间管理可以与主机IO相匹配,避免IO频繁拆分,影响性能。
Redirect on Write
我们知道,在传统存储中ROW机制虽然不会导致数据拷贝,但是频繁覆盖写后,会破坏源LUN的数据分布,导致源LUN的数据空间随机分布;由于HDD盘因访问机械寻道的关系会导致读性能急剧下降,但SSD不存在该问题。因为SSD磁盘内部本身就是基于ROW,数据按照page写入,数据更新时需要以block为单位先擦除才能再写入。所以,在SSD全闪存系统相比COW快照,ROW快照不仅可以降低快照周期,而且还能实现ROW性能无损快照,通过切换快照元数据的根节点实现快照回滚;解决了传统阵列快照机制带来的主机写性能陡降问题。
Inline de-duplication & compression
在线重删、在线压缩是全闪存必备技术,它不但减少对闪存的写入磨损,还减少存储空间需求、进而减少物理空间占用。在此之所以强调Inline的原因在于,只有在线才能真正达到减少写入磨损、减少存储空间的目的。Dorado V3采用在线重删、压缩,数据进入系统后,写入闪存介质之前会对重复数据采用Hash算法按照4K或8K大小进行自动、全局删除。然后采用改进的LZ4快速压缩算法,按照1KB大小的粒度对数据单元进行压缩存放,采取先重删后压缩方式,确保针对唯一数据块执行压缩,提升效率。
关于重删、压缩率主要还是要看应用场景,VDI场景下,采用链接克隆方式,其重删、压缩率达到20:1一点都不足为奇,在采用专业重删、压缩率软件的视频文件场景下,其重删、压缩率可能很难做到2:1,所以脱离场景,单纯讨论重删、压缩率没太大实际价值。
Hash值冲突已经得到Google工程师的验证,具体可以参看我前期文章Google揭露SHA-1碰撞,加速数据重删字节对比。所以Dorado V3在采用Hash算法计算指纹数据时,我们不得不考虑Hash冲突。所以面对客户关键业务,存储产品要给客户提供选择,如果计算出新数据的Hash和存储现有Hash值一致时,需要通过组字节对比排除Hash冲突。
Parity RAID
实际上是Parity RAID2.0技术或RAID块级虚拟化技术(cRAID、vRAID和FastRAID等),RAID2.0技术在SSD全闪存系统也依然重要,传统大容量磁盘所面临的大盘故障率高、重构时间长的问题在SSD全闪存依然存在,从1.8TB SSD替换900GB,到3.6TB、7.2TB磁盘容量越来越大。这些问题说明在存储系统中不是想引入大容量磁盘就是能引入的,必须要考虑引入后对系统可靠性的影响。块级虚拟化RAID技术就比较好的解决了这个问题。但在这篇文章中,我强调的是3盘校验算法,支持3盘同时故障,这个会在稍后面会讨论。
FlashLink盘控结合技术
FlashLink是SSD盘控配合技术,只要自研闪储阵列和自研SSD控制器,才能比较好的利用盘控配合技术,Dorado V3基于RAID2.0+技术基础层和数据布局层,通过SSD驱动与控制器软件的配合,将数据更均匀的分配到每一块硬盘中,并根据硬盘的状态动态调整分配算法。同时,基于SSD的特性,将冷热数据分开存放,从而获得更好的性能和可靠性。基于数据服务层实现高效的IO调度,将所有写入合并到一个满分条一起下盘,消除了写惩罚,支持更高的RAID利用率和性能,RAID5、RAID 6、RAID TP性能所差不大,重删、压缩和快照性能无损。
FlashLink技术利用控制器软件与硬盘驱动配合,定期向SSD控制器查询盘片磨损程度,并将磨损程度高低作为分配空间的判断依据之一,从而实现了全局的磨损均衡和反磨损均衡等功能。
全局的磨损均衡通过GFTL使数据按照LBA/指纹全局打散, 数据均衡分布在所有SSD上,全局磨损均衡加强SSD可靠性。反磨损均衡启动后,选定SSD,通过GFTL分布数据使目标盘承载更多数据,全局反磨损均衡避免多盘同时失效。
Dorado Global FTL总是满条带写,控制器高效处理后端写IO, 大块IO减少交互次数,后端吞吐量高,采用系统Garbage Collector减少性能影响。后端SSD盘大块写入, SSD GC高效,写前无同步读,SSD磁盘可采用较小的Over Provisioning空间
无GFTL架构的产品,通常采用填空方式存储数据,选择空闲块最多的分条,即该分条中,空白块和无效块的数量是最多的写入数据,写前需同步读, 带来严重的读、修改、写负担,无系统Garbage Collector。依赖SSD FTL,小块写IO导致SSD GC低效,后端写IO处理前必须先同步读, 要求SSD GC对读IO干扰较小, 须预留更多的Over Provisioning空间。
全局垃圾回收综合空闲block数量、Block垃圾数据量、业务压力等因素,启动GC。通过冷、热数据分离存储元数据与数据,高引用数据块与低引用数据块分离。按照时间点,同一时间点写入的数据批量回收;减少无效数据搬移,降低GC对应用性能影响。
Active-active solution
数据中心双活也是客户数据中心建设的标配,Dorado V3继承了V3存储的特性,提供RTO和RPO均为0的高可靠业务连续性方案。容灾和业务连续性方案客户比较关心的就是网络状况,带宽、丢码率和时延,数据库等业务对网络时延RTT要求一般在2ms左右,所以链路压缩技术和数据复制协议优化不但让客户节约成本,而且增强通讯效率。
这里我们主要看看数据复制协议优化技术,SCSI协议规定数据写入存储时需要2次命令交互,第一次分配空间,第二次写入数据,即写分配和写请求,Dorado V3双活站点间把2次请求进行合并,只做一次交互,相比传统两次交互的双活复制方案,传输时延缩短一倍,同时支持链路压缩特性。
Snapshot with zero loss
基于ROW技术和GFTL技术,保证快照、重删、压缩性能无损,ROW避免迁移和拷贝数据,GFTL保证数据满条带下盘、全局垃圾回收。
RAID-TP
最后谈谈三校验的RAID保护技术RAID-TP,RAID-TP基于RAID2.0技术,类似RAID5、RAID6。当系统某块SSD损坏,整个阵列依然处于RAID-6的数据保护之下,依然可靠。RAID-TP并不是3副本,而是3个数据检验位,所以SSD的使用率该是可以做的很高。
SSD磁盘本身所保存的数据会随时间出现跳变;且出现跳变的数量,随着擦写次数的增加而增加。因此,SSD内部需要有ECC引擎进行数据检错和纠错,在SSD领域,当前标准的ECC算法是BCH算法。随着TLC颗粒在3D NandFlash中已经得到的应用,BCH算法是无法满足纠错要求的。
相比BCH,LDPC(Low Density Parity Check Code)是一个纠错能力很强的算法,复杂度较高,最早应用于通信行业。针对SSD,Dorado V3产品对LDPC算法进行面向闪存的优化,并固化到SSD控制芯片中,进而实现了延长闪存擦写寿命的目的。未来颗粒本身的磨损次数问题在全闪存或SSD控制器层面会通过软件进行加强。
至此,我们应该对GRIP和FAST为什么在全闪存系统是必配应该有了比较清晰的了解。闪存系统不但要快、而且要稳才能为客户核心业务保驾护航,另外,重载IOPS下的稳定低时延是全闪存存在的理由,任何增值特性要保证客户对IO波动的无感知。Dorado V3也对NVMe协议和标准也提供全方位支持,关于VNMe技术细节以后有时间在分享。
文章最后,我们对今天的内容进行简单总结。
全闪存种类繁杂、各有优缺点,但技术发展的方向总归是朝着Flash Oriented的方向再走,即便是您现在使用的闪存是Flash Optimized或者Flash Appliance,您的选择也没错,每种产品都有属于他的时代,因为技术本身不可能做到全覆盖、面面俱到。
FlashLink技术并非每一家都能玩,但是GFTL还是容易做到的,现在有很多闪存厂商都跟SSD厂商合作来提升闪存系统性能。如果GFTL不解决,闪存系统数据管理和垃圾回收就存在很大问题,完全依赖SSD的FTL,无用和额外的垃圾回收和多余Over Provisiong不但影响SSD性能、寿命,还会影响SSD空间使用率。
Dorado V3虽然架构重新设计,元数据查找算法从传统阵列的搜索树变为了高效的Hash Table等等,但增值特性完全继承V3,所以在数据流动、灾备解决方案、数据迁移上更能实现平滑过渡,做到对客户现网业务影响更小。
NVMe协议标准和SSD闪存就是黄金搭档,无论是基于PCIe还是Over Fabric架构。SAS SSD和PCIe SSD技术已经把Flash SSD推向了时代技术前沿,相信NVMe的出现和流行,会以它的标准化、高效通信效率和并发IO能力等特点续写新的传奇。请搜索“ICT_Architect”加入微信公众号“架构师技术联盟”获取更多精彩内容。