Linux开源存储全栈详解:从Ceph到容器存储
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 存储介质的进化

NAND的存储密度在呈现高速增长的趋势,2017年达到2.77TB/in2,持续拉大了与磁盘介质的差距。

2.2.1 3D NAND

Flash芯片容量结构从大到小可以分为Device、Target、Die/LUN、Plane、Block、Page、Cell。一个Device通常包含一个或多个Target,一个Target又包含若干个Die(或LUN),每个Die/LUN包含若干个Plane,每个Plane包含若干个Block,每个Block包含若干个Page,Cell是Page中的最小操作擦写读单元。Die/LUN是接收和执行Flash命令的基本单元,不同的Die可以同时接收和执行不同的命令,但在一个Die中一次只能执行一个命令,不能对其中的某个页在写的同时又对其他页进行读访问。

而对于存储领域来说,小存储单元尺寸(Cell Size)、高性能及低功耗(Power Consumption)一直是持续追求的目标。越来越小的尺寸让每片晶圆可以生产更多的Die,高性能才能符合高速运算的需求,低功耗才能改善移动设备电池充电频率高及数据中心系统散热慢的问题。而芯片工艺的每一次提升(24nm → 14nm → 10nm…),带来的不仅仅是元件尺寸的缩小,也有性能的增强和功耗的降低。

每次NAND制程的升级都能将NAND存储密度提升到一个新的高度,但是NAND闪存的制程工艺是一把双刃剑,容量提升、成本降低的同时可靠性及性能都在下降,因为工艺越先进,NAND的氧化层越薄,可靠性也越差,厂商就需要采取额外的手段来弥补,但这又会提高成本,以至于达到某个点之后制程工艺已经无法带来优势了。

2D NAND制程上的瓶颈催生了3D NAND技术的出现。如图2-4所示,就像盖房子一样,当你不能在水平方向扩大占地面积的时候,可以向垂直方向发展,3D闪存结构就像存储器界的摩天大楼,在垂直方向构建存储单元格,而不是在晶圆平面上构建一系列的存储单元格。把存储单元立体化,这意味着每个存储单元的单位面积可以得到大幅减少。

图2-4 2D NAND与3D NAND

近几年来许多大厂商纷纷投入对3D NAND的研发,但目前只有三星、Toshiba/SanDisk/WD、SK Hynix、Micron/英特尔四组公司能够进行量产。各家的3D NAND存储单元及技术都不相同,目前量产的大多为64~72层的3D NAND。

64层3D NAND已在成本和性能方面优于2D NAND技术。不过,各大厂商并不满足64层3D NAND带来的效益,很快将苗头锁定下一代96层3D NAND技术,因为96层堆叠可将单个Die的容量提高到1TB以上,将具有更优的成本及更高的产品效能。英特尔于3年前宣布将中国大连的Fab 68晶圆厂改造为NAND工厂,总投资55亿美元,现在二期工厂已经投产,主要生产96层的3D NAND闪存。

2.2.2 3D XPoint

在如今的存储领域,3D XPoint和3D NAND是两个颇具话题性的技术。3D NAND从本质上更偏向于“演进式”(从2D到3D是从平面到立体的制程架构,是一种工艺上的提升)的出现,3D XPoint则完全是以一种“新生代”姿态面世的。它是自NAND闪存以来的首个新型非易失性存储技术,而且在2015年发布时被描述为“速度和耐久性都是NAND闪存的1000倍”,一时风头无二。

虽然1000倍的速度只是理论值,不过以颠覆者形象出现的3D XPoint技术仍然备受期待。特别是在数据中心领域,随着数据的爆发式增长和人工智能、大数据等新一代工作负载的涌现,企业对高性能存储设备的需求日益升高,所以3D XPoint夸张的1000倍理论值并不是除营造噱头外毫无作用,在某种程度上反映了3D NAND的可挖掘性。

同为非易失性存储领域的新秀,而且都是由英特尔与美光共同研发的,因此3D XPoint与3D NAND常被互相比较。严格来说,在3D NAND与3D XPoint之间进行孰优孰劣的对比是不合适的,因为它们的定位并不相同。3D XPoint的市场定位很清晰,就是一种比机械硬盘更高级的数据存储方案。3D XPoint的定位介于DRAM与3D NAND之间,它的速度与耐久性能够达到内存的水平,密度与非易失性则偏向3D NAND,成本也介于两者之间,如图2-5所示。

图2-5 3D XPoint

可以看到,除DRAM的易失性与NAND的寿命延迟不尽如人意以外,DRAM与NAND之间的性能鸿沟是一个不可回避的问题,上下两级系统存在较大的性能差距,使得级次缓存的设计方案很难体现出最佳的效果,相比DRAM和硬盘驱动器之间的性能鸿沟,NAND和DRAM的这个鸿沟略有缩小,但是本质上的变化并不明显。例如,延迟方面,DRAM的十几纳秒相比NAND的约一百微秒快了很多个数量级。

而英特尔与美光推出的3D XPoint则同时拥有高性能和非易失性两种特性。可以说,3D XPoint在原本的内存与外部存储之间开辟了一个新的层次,这也导致了外界对3D XPoint未来走向的各种解读。

第一种解读是3D XPoint将挑战DRAM内存。DRAM的特性在于延迟很低(纳秒级别)、带宽较为充裕,且寿命很长,但它的核心问题是易失性,需要不停供电才能保存数据。3D XPoint拥有达到DRAM同样性能的潜力,且正好拥有非易失性。所以有分析师认为,3D XPoint最终可能会挑战现有的内存技术DRAM。

第二种解读是3D XPoint与NAND的互补结合。这是一种很靠谱的说法,事实上英特尔与美光都比较支持这种互补理念,而且英特尔已经推出了面向数据中心的存储解决方案,不仅通过3D NAND实现了大容量存储,并通过3D XPoint实现了加速,两相结合。英特尔认为,3D XPoint的性能可以让用户根据不同的需求来选择新的存储系统组合,如DRAM+3D XPoint+NAND三级存储系统、 3D XPoint接管DRAM+NAND、DRAM+3D XPoint的方案,甚至3D XPoint+NAND的系统,不同方案的成本、侧重点和性能都有所不同,结局是开放性的,可以根据市场选择来搭配合适的方案。

此外,还有人认为,3D XPoint将打破内存与外部存储两极分化的现状。3D XPoint拥有NAND的非易失性,性能与耐久性更接近DRAM,而且价格只有DRAM的一半。内存的易失性问题已经解决,如果3D XPoint能够在未来的发展中彻底消除DRAM与NAND之间的性能鸿沟,且逐渐降低成本,那么打破两极分化也不是没有可能的。从长远来看,这种现实意义上的融合可能确实将成为一种趋势。但这种目标太过遥远,即使在今天仍有很多企业还在使用价格更低的硬盘驱动器来存储数据,而且冷热数据的资源配给与成本问题不可忽略,同时价格、容量、性能、耐久等因素都是需要长时间的努力来进行优化的,但3D XPoint的出现,至少提供了一个未来的努力方向。

如图2-6所示,3D XPoint存储器采用两层堆叠架构,使用20nm工艺可实现128千兆位的密度,它的读取延迟降低到纳秒级,约为125ns,可擦写次数为20万次。3D XPoint的读/写速度和寿命均为NAND闪存的1000倍,延迟是NAND闪存的千分之一,内存(DRAM)的10倍,存储密度则是内存的10倍。在这个3D交叉矩阵结构中,3D XPoint摒弃了之前存储结构中的电容、晶体管设计,只保留内存单元(存数据的地方)、选择器和读/写总线。原有的“闲杂人等”(电容、晶体管)被统统“踢”走,腾出来的空间塞进了更多的内存单元,因此存储容量得到了大幅度的扩展。

图2-6 3D XPoint存储器架构

那么3D XPoint又是怎样实现比NAND快1000倍的读/写速度的呢?在3D XPoint中,内存单元和选择器被存储总线交叉叠加在一起,每一层的总线又会被导线连接。这又该怎么理解呢?按原来的方式,内存单元之间访问就像两个住在楼梯房的好朋友,每次去其中一家串门都需要走过道爬楼梯。而3D XPoint则是相当于为他们设置了一个直达电梯,每次串门“叮”的一声就到了。这样一来,数据访问效率就会高很多。

同时,3D XPoint上的电阻材质非常特殊,在电压的作用下该材质形态会发生巨大的变化,从而实现阻值的改变。在这个过程中,电阻材质形态的改变带来的损耗非常小,就像雾和雪一样,两者形态的转变最多只是热量的流失,而水的本质不变。相比于NAND上多次读/写后就会出现的绝缘层损耗,3D XPoint的损耗基本可以被忽略。所以我们可以看到,3D XPoint的寿命是NAND的1000倍。

2.2.3 Intel Optane

前面提到,DRAM与NAND之间在容量、性能和延迟时间等方面存在着巨大的差距,3D XPoint在原本的内存与外部存储之间开辟了一个新的层次。英特尔基于3D XPoint技术分别开发出Optane Memory(傲腾内存)和Optane SSD(傲腾固态盘),对存储层次模型进行重新划分和定义,如图2-7所示。

图2-7 基于3D XPoint的新的存储层次模型

英特尔称Optane Memory为Apache Pass,是为高性能和灵活性而设计的革命性的SCM(Storage Class Memory);称Optane NVMe SSD为Coldstream,是世界上最快的、可用性和服务性最好的固态硬盘。3D XPoint(包括Apache Pass DIMM和Coldstream SSD)位于DRAM和NAND之间,用于弥补DRAM和NAND之间的性能和延迟时间差距。

从应用场景分析,Coldstream SSD主要用在NAND Flash SSD之上,用于对系统日志、Memory Page和系统元数据进行加速;Apache Pass DIMM主要定位于替代DRAM,用于支撑Persistent Memory或In-Memory应用。

随着固态硬盘单盘容量的不断变大,元数据的量也在不断增大。当元数据的量增加到一定程度时,DRAM已无法完全缓存,采用Coldstream作为扩展缓存,将元数据缓存在Coldstream上,并且配合相应的算法,可以提高大容量下元数据的访问性能,从而提升阵列在大容量下的整体性能。通过对哈希、Radix tree、B-Tree等各种索引数据结构和算法进行充分比较,选取对Coldstream上的存储内容高效的索引数据结构和算法,从而既能快速访问索引和Coldstream上的内容,又能占用较少的CPU和内存资源。

在实际应用中,大部分应用都存在热点数据。在数据缓存的设计中,可以使用高效的热点识别算法对数据进行识别,将频繁访问的热数据缓存在内存中,次热数据缓存在Coldstream盘中,从而直接从内存或Coldstream访问热数据,减少由固态硬盘读取数据的操作,进而缩短延迟时间,最大限度地加快热点数据的访问速度。