随着数字经济的蓬勃发展,自动驾驶,大数据,人工智能,高性能计算等新技术的应用,数据呈现爆发式增长,数据形式及访问负载也呈多样化趋势,对存储的容量与性能提出了更高的要求。Scale Out分布式存储以其高扩展性,多协议访问,高性能,高可靠,生态开放的特征,正逐渐成为海量多样化数据应用的最佳底座。同时数据量的增长,存储的绿色节能也逐渐成为关键刚需,相比传统的机械硬盘,闪存拥有众多无可比拟的优势,相同容量下,闪存技术可以比机械硬盘节能65%以上,同时闪存性能比机械硬盘高,闪存化在降低整体存储能耗的情况下,也有助于提升应用性能,从而加快数据经济的发展。
闪存虽然拥有诸多好处,但是要全闪化还是有不小的挑战。 如相比机械硬盘,闪存依然价格较贵,寿命也有约束。下面我们来详细了解一下,OceanStor Pacific Scale out存储如何应对这一挑战。
基本概念及技术难点SSD基本工作原理
为了更好的理解SSD盘的寿命问题,这里简单介绍一下SSD盘的一些基础原理。SSD内部一般使用NAND Flash来作为存储介质,Nand Flash内部主要的两个概念是Block与Page,一个Block由若干个Page组成,Block是Nand Flash擦除操作的最小单元,Page是Nand Flash读取写入操作的最小单元。当Page写入新位置时可以直接写入,但是如果需要改写时,则需要一个额外的擦除(erase)动作,擦除的单位是Block粒度。当某个Block单元长时间被反复擦写时,不仅会造成写入的性能问题,而且会大大缩短SSD的使用寿命。为了解决这个问题,SSD盘内部引入了Wear levering的机制,依赖于SSD内保留一部分OP空间(Over Provisioning),通过重映射的方式来延迟擦除动作,减少均衡损耗。当需要改写某个page时,写入新的block,老的page就作为垃圾数据,等待后台任务会定时GC回收(Garbage Collection)。一般SSD盘内会预留较多的OP空间来平衡盘片的寿命与性能。
Append 机制
上一章节简单介绍了SSD盘的Wear levering机制,Wear levering机制减少了SSD盘的写放大,一定程度上提升了盘的寿命,但是如果上层存储软件依然是传统write in place模式,会加剧盘内的GC过程,从而影响性能与寿命。采用ROW(Redirect On Write)只追加写的形式,可以较好的抑制盘内GC,减少写放大,如下图所示,每次覆盖写都会新写一个位置,不会覆盖写老的位置,这样做的好处是,尽量抑制盘内的GC,坏处是存储系统需要增加GC垃圾回收机制。如何平衡这两层GC,对上层存储系统,尤其是Scale out大规模系统是一个很大的挑战。
NVMe SSD
机械硬盘大多数使用SATA/SAS接口,AHCI协议,队列深度最多32,也就是可以同时接收处理32条命令。早期存储系统性能瓶颈在机械盘,而不在协议与访问接口,随着SSD介质技术的发展(NAND Flash介质比传统机械盘性能高很多),盘的性能越来越快,瓶颈就转移到访问协议与访问接口了。为此NVMe随之出现,NVMe全称Non-Volatile Memory Express,NVMe标准是面向PCIeSSD的,PCIe通道与CPU直连,传统的方式,是需要通过南桥控制器中转再到CPU,同时NVMe可以把最大队列深度从32提升到64000,巨大的性能提升使得IO瓶颈从盘向上进行了转移,传统的存储软件栈已无法发挥出NVMe SSD盘的最大性能。
OceanStor Pacific的解决之道
上一章节简单描述了下SSD盘的基本原理及存储系统面临的挑战,如何在发挥出SSD盘的最大性能的前提下,又解决SSD盘的寿命与成本问题,对存储系统来说是具大的挑战,OceanStor Pacific也做出了一些尝试。
数控分离架构
打开传统的IO路径来看,从应用到真正存放数据的盘介质之间,需要经过众多的部件处理环节,在这条路径上还矗立了协议墙、IO墙、内存墙、算力墙,它们共同形成了存储性能提升的巨大瓶颈,最终NVMe SSD的具大性能优势没法发挥出来。OceanStor Pacific产品采用数控分离的架构,数据从网卡直通到盘,免去中间多部件/多协议处理,避免中间CPU参与,免除IO路径上的多次内存拷贝,实现数据的高速公路。元数据采用全局shard打散的策略,让所有的节点均衡处理元数据,避免元数据操作的瓶颈,支持海量数据的scale out扩展。
依据上述的SSD原理,OceanStor Pacific在数据持久化上采用了Append机制,即所有的写都新分配SSD空间,老的数据需要在存储系统进行垃圾回收处理。OceanStor Pacific采用智能算法加持的Global GC机制,全局精准识别垃圾量,在不影响前台业务的前提下,完美抑制盘内GC的发生,从而让盘只需要预留很少的OP空间,把空间释放出来给用户使用,提升盘寿命的同时,进一步降低了盘的成本。
LSM索引
上述ROW机制,解决了数据的覆盖写问题,但是会产生大量的元数据管理开销,元数据大量下盘依然会对SSD盘寿命造成较大的影响,为了降低元数据下盘次数,提升元数据的写盘效率,OceanStor Pacific采用了LSM tree(Log-Structure Merge Tree)来管理元数据,把大量的元数据修改转换成大段的顺序写,充分利用SSD的写性能。如下图所示,大量元数据的插入及修改操作,先进入内存memtable,然后聚集成大块后序列化到SSD。 L0->L1->L_last逐层进行merge,每一层往下一层merge时,会生成新的树,merge完成后把当前这一层的元数据块整体释放,对于SSD来说基本上就是连续大块写入,连续大块释放,整个Block级别的分配与释放,大大减少了垃圾回收的处理。
总之,OceanStor Pacific产品引入LSM tree将大量元数据的小块随机写合并成为大块的顺序写,元数据在实际下盘前还进行了压缩处理,尽一步减少IO的次数,将IOPS的瓶颈转化为吞吐量的瓶颈,提高写入性能。
盘控配合上面提到了存储系统自已做高效GC抑制盘内GC,在提升性能的同时也能让盘释放更多的OP预留空间给用户,但是通常的存储系统是无法和标准SSD控制器深度联动的,如上面章节描述的盘内Wear levering机制,上层的存储系统不能很好的感知,这就导致同时跑多种混合业务时,IO会对SSD盘形成争抢,上下两层GC依然会同时运转,非但盘片的性能不能得到100%发挥,SSD盘内还要为垃圾回收预留较多的OP空间,极大的降低了系统的性价比。OceanStor Pacific产品采用自研的palm/half palm SSD,存储系统与自研SSD控制器芯片联合使用盘控配合的FlashLink技术,由自研盘片提供独创的联动接口,和存储软件实现精细化联动,支持按业务类型设置优先级、识别冷热数据分流,对于产生垃圾概率较高的数据定义为热数据,修改频率较低的数据定义为冷数据,配合盘的多流技术,把冷热数据存放在不同的Block中,增加Block中数据同时无效的概率,达到减少垃圾回收中搬移的数据量,在充分发挥SSD盘性能同时,有效抑制盘内垃圾回收的运行,释放出更多的OP空间给用户使用。数据缩减
以上的技术主要针对盘控配合,抑制或避免盘内GC,释放更多的盘内OP空间给用户,在发挥SSD盘性能的同时,降低SSD盘成本,提升盘的寿命。但是对于SSD盘片来说,控制下盘的IO数是提升SSD盘寿命的本质,为解决这个问题,OceanStor Pacific产品提供了自适应的全局的前台与后台结合的重删及基于自研的HZ10高效算法的压缩能力,最大化降低下盘的IO数量。
小结
OceanStor Pacific产品通过数控分离架构,Append Only的写模式,Global GC,基于LSM tree的索引技术,在线数据缩减技术最大限度的发挥出SSD盘的性能,平衡盘的寿命。但是还不够极致,OceanStor Pacific将持续尝试更低成本的SSD盘(QLC),更加深度的盘控配合的黑科技,进一步平衡SSD盘性能与寿命的问题,达成全场景替换HDD的目标,促进数字经济的绿色持续发展。