近30年来,计算机系统的I/O性能与CPU处理性能的差距迅速扩大,而且随着多核技术的快速发展,这种差距还将越来越大,与此同时,社交网络、物联网、移动互联网等多种新型应用的出现,以及高性能计算趋于精细的处理要求,导致数据处理规模的急剧增长,频繁的I/O请求制约了计算机系统所提供的应用处理能力,因而I/O能力正成为计算机系统中急需解决的问题。
传统磁盘存储系统为此作出了诸多努力,磁盘系统通过RAID技术发挥多磁盘的并行存取,I/O请求被分发到多个磁盘设备,通过多设备的并行T作提供聚合带宽,在设备内部,磁盘系统通过数据分布以及I/O调度等多种手段顺序化数据的访问,减少寻道时间,以提高磁盘的吞吐率。
尽管磁盘存储系统有效提升了带宽,但访问延迟难以得到有效解决,依然不能满足延迟要求较高的应用,同时,由于需要提供多磁盘设备的并行访问的性能,存储系统往往部署了远多于实际容量需求的磁盘数目,系统规模也随之扩大,系统规模的扩大一方面提高了系统的复杂性,另一方面也提升了能耗。
近年来,随着闪存芯片容量的增加和价格的下降,闪存芯片的部署正从移动设备中走到个人计算机以及大规模数据中心中去,闪存的低延迟、低能耗、体积小、重量轻、抗震等特点使得闪存在数据中心的应用正受到极大的关注。
1 闪存存储现状
闪存设备主要由闪存介质、闪存控制器两部分构成,如图1所示,闪存操作以闪存页(page)为读写单元,以闪存块(block)为擦除单元,设备内部的介质访问提供了通道(channel)、颗粒封装(package)、颗粒(die)、闪存片(plane)等多个级别的并行。设备内部以多通道方式组织闪存颗粒封装,每个通道上可连接多个颗粒封装,多颗粒封装之间共享传输通道,但可独立执行指令,每个颗粒封装内部包含两个或多个闪存颗粒,每个颗粒可被独立选中执行指令,颗粒内部可分为多个闪存片,每个闪存片含有一个闪存页大小的寄存器缓存,用于暂存读写数据,通过多个级别的指令并行执行,闪存设备充分利用介质的存取性能,闪存控制器主要负责地址映射、垃圾回收和磨损均衡,闪存通过异地更新的方式缓解闪存单元写前擦除的延迟,由于闪存单元的擦除次数有限,闪存控制器通过磨损均衡算法平衡设备内部闪存块之间的擦除次数,同时垃圾回收算法尽量选取擦除效率较高的块回收以控制写放大(writeamplification),闪存控制器既要维护高效的数据地址映射查询,也要均衡设备内部磨损,控制写放大,以提高设备的整体寿命。
图1 闪存内部结构图
闪存存储主要以固态盘(solid state drive,SSD)以及裸闪存两种形式存在,固态盘的方式是在设备内部通过闪存转换层(flash translation layer,FTL)的转换可处理SATA命令,其外部的使用接口与传统磁盘没有差别,固态盘与传统磁盘在外部使用上差异极小,固态盘可以简单地替换磁盘,因而固态盘的形式为当前闪存存储的主要形式,包括个人笔记本、服务器、存储阵列等。
然而,固态盘的形式限制了闪存优势的有效发挥,在硬件接口上,由于闪存内部并发可以有效聚合访问带宽,SATA接口的标准已经远不能满足要求,硬件接口成为闪存存储系统的瓶颈,在存储子系统上,以文件系统为代表的系统软件在存储管理上大多以磁盘为假设进行优化,较少考虑闪存特性,闪存优势难以得到充分利用,现有在固态盘上构建的软件系统存在的不足主要体现在以下几个方面:
1)冗余工作
文件系统对文件的管理既包括文件目录树的维护信息,也包括对于文件逻辑块到存储设备物理块的映射,同时也包括存储设备空间管理,闪存设备内部需要提供地址映射以实现数据块的异地更新,文件系统中从文件逻辑块到设备物理块的映射,与闪存设备转换层中逻辑地址到物理地址的映射,构成了闪存系统的双层映射,双层映射的出现既增加了元数据的管理与存储开销,也可能造成双层的优化之间存在冲突。
2)语义缺失
闪存设备转换层封装了对闪存介质的操作,向上层提供了统一的块设备接口,设备内部接收到以页面为单位的数据,却不能理解数据页面之间的关系,也就难以优化数据页面的读写顺序与分布圈,除此之外,闪存设备也难以感知文件系统的操作,不能及时处理,以至于影响下次关联操作困,例如,文件系统对于文件的擦除操作仅修改对应元数据,而数据的擦除操作直到下次写操作才被闪存设备感知,影响闪存设备的垃圾回收效率。
3)特性错失
闪存设备提供了异地更新的特性,数据的更新会写人新分配的闪存页,旧闪存页一直保留到垃圾回收的时刻,而文件系统、数据库管理系统或者其他上层应用为提供操作的原子性,通常使用WAL(writeahead logging)的方式,先申请新的存储空间记录数据更新作为redo日志,然后在原地进行数据的更新,这样的原子性以两次写操作的代价保证,既增加了延迟,也损害了闪存寿命,同样,文件系统为容错而采用多版本信息也不能直接索引到旧的闪存页。
4)分工欠妥
闪存设备的容量不断增加,设备内部的处理能力以及内存的需求也在不断增长,这既提升了存储设备的制造成本,也提高了设备的能耗,影响闪存的优势,而主机在等待闪存设备读写时,主机CPU与内存有不少空闲,另外,多层的处理与缓存也造成访问延迟与数据可靠性的问题,主机与闪存设备在数据处理与缓存以及数据存储方面应寻求最佳的职能分工,以达到整体系统的最优。
简单地用固态盘替换磁盘的存储系统不能充分发挥闪存的性能,因而闪存存储系统倾向于直接管理闪存介质,重新设计或调整软硬件结构,优化存取路径,丰富存储语义,增强特性功能,以提升闪存存储系统的整体性能。
2 闪存存储系统
基于闪存介质直接构建闪存存储系统是当前的研究热点,构建形式多样,包括闪存加速卡、闪存阵列以及近年来提出的基于闪存的分布式集群系统。
2. 1闪存加速卡
闪存加速卡用于服务器中,主要用于本地数据的缓存处理,相比于传统的PCIe固态盘RAID卡,以FusionIO为代表的厂商推出了PCIe闪存卡,有效地降低了存储访问延迟,扩大了访存带宽。
磁盘阵列的访问需要经过主机HBA、网络交换、阵列控制器等访问模块,如图2(a)所示;PCIe固态盘RAID卡也需要经过RAID控制器、元数据处理模块后才能访问数据,如图2(b)所示;FusionIO采用裸闪存PCIe卡,主机直接访问闪存芯片,缩减了I/O传输路径,提供了极低的访问延迟。
图2磁盘阵列、PCIe固态RAID卡及FusioIO ioDrive的I/O路径比较
FusionIO在主机端实现了闪存转换层,称为VSL(virtualized storage layer),VSL实现了闪存转换层所需要的映射机制、磨损均衡、可靠性等多种功能,相比于传统闪存固态盘在设备内部采用嵌人式处理器的处理方式相比,VSL能充分利用主机的冗余计算与缓存能力,大大提高了处理性能,此外,利用闪存异地更新的特性,依据VSL中映射转换的日志机制,VSL实现了多闪存页的原子写(atomic write)操作,从而避免了上层应用为提供多数据页更新所花费的重复写,整体上延长闪存设备寿命,利用VSL中提供的空间管理和原子写特性,DFS基于VSL重新设计闪存文件系统,提供了很好的性能,降低了文件系统的复杂性。
基于闪存介质构建的闪存加速卡在软件层实现闪存介质管理,并与软件系统结合,提供灵活的机制,大大提升了单机存储子系统的效率,这类加速卡引起业界关注,Intel及众多存储厂商制定了NVMe标准,以提供统一接口标准支持。
2. 2闪存阵列
闪存加速卡难以实现存储容量的扩展及存储共享,类似于传统的磁盘阵列设计,多家存储厂商推出了闪存阵列,其中包括采用固态盘与传统阵列控制器的演进式设计,以及采用闪存芯片与全新阵列控制器的革新式设计。
Violin Memory与Toshiba合作设计闪存阵列,通过Violin闪存阵列控制器对闪存介质颗粒级别进行优化,Pure Storage根据闪存特性完全重新设计控制器控制逻辑,充分发挥闪存的并行性,采用阵列内全局的磨损均衡算法,以提供全局更好的性能与寿命,刚被EMC收购的以色列闪存阵列公司XtremeIO认为传统阵列控制器主要考虑磁盘特性的优化,例如顺序I/O等,针对这一问题,XtremeIO设计了新型闪存阵列控制器,发挥闪存较好的随机访问性能,并利用闪存异地更新特性在阵列内实现了删冗、快照/镜像、精简配置等多项功能。
2. 3基于闪存的分布式集群系统
2.3.1 FAWN
FAWN(a fast array of wimpy nodes)是卡内基梅隆大学(Carnegie Mellon University, CMU)基于闪存介质构建的可扩展、低能耗、高性能的集群系统,与闪存加速卡和闪存阵列仅关注于I/O子系统的性能和可靠性的设计不同,FAWN从集群整体设计的角度考虑闪存与处理器的匹配以降低系统整体能耗。
在数据密集型计算环境下,I/O速度远不及CPU处理速度,CPU很多时候处于空闲等待状态,同时CPU的能耗随着频率的提高呈现超线性增长,FAWN采用低频低能耗CPU与闪存存储相匹配,提供数据密集型计算的集群系统,提高系统各组成部分的利用率,降低能耗,FAWN实现了键值存储系统,以日志的方式进行更新,实现闪存的异地更新,FAWN可提供每焦耳高达364次查询请求,相比于桌面硬盘系统的每焦耳1.96次查询性能提升数百倍。
2.3.2 Gordon和Moneta/Onyx
Gordon系统是加州大学圣地亚哥分校(University of California, San Diego,UCSD)设计的,与FAWN类似的采用低频处理器以构建低能耗数据中心的集群系统,与FAWN关注键值存储系统的高性能与低能耗不同,Gordon主要工作在于设计闪存转换层与匹配处理器与闪存芯片的性能和能耗,Gordon闪存转换层在发挥闪存芯片间的并发特性上采取了多种措施,包括地址动态映射、多物理页组合成大物理页、以及同时采用并发与流水机制,Gordon在单板上集成了256 GB的闪存和2.5GB的DRAM,一个16个单板的封装节点可提供4TB的闪存存储和高达14.4 GBps聚集带宽,Gordon系统已经被用于San Diego超级计算中心,主要应用在天体物理、基因组测序等数据密集型计算领域,并将其部署在TeraGrid中,当完全配置和部署时,Cordon将拥有300TB闪存存储容量,由1024块英特尔710系列高性能固态存储组成,将拥有16384个处理器内核,理论性能峰值达到340Tfps。
Moneta和Onyx是UCSD基于PCM构建的存储系统,Moneta认为软件延迟占低延迟存储介质整体访问延迟的比例越来越大,因此软件系统需要重新考虑以降低整体访问延迟,Moneta采用DRAM模拟PCM,该系统绕开了操作系统中IO调度等操作过程,通过spin的等待而不是中断调用等对系统的修改,能够减少60%的访问延迟,提升18倍的带宽,Moneta是采用PCIe接口的模拟PCM存储系统,Onyx是对Moneta改进的第2代原型,Onyx替换PCIe接口为DIMM接口,并采用了定制的PCM模块,进一步提升了系统性能。
2.3.3 RAMCIoud
在采用非易失性存储器件构建存储系统之外,加州大学伯克利分校(University of California,Berkeley,UC Berkeley)提出采用DRAM构建分布式存储系统RAMCIoud,RAMCIoud利用服务器集群中服务器DRAM构建统一命名空间的存储系统,所有数据存储在DRAM中,磁盘仅用作备份,相比于传统的磁盘存储系统网络访问远端磁盘5~10ms的延迟,RAMCIoud的访问延迟可达到5μs,提升100-1000倍的性能,尽管闪存存储系统“FlashCloud”可提供略低于RAMCIoud,但在查询吞吐量要求越高的情况下,RAMCIoud总体拥有成本越低。
持久性与可用性是RAMCIoud最为关心的问题,RAMCIoud采用磁盘作为备份存储,在内存中维护日志记录,记录每次更新,通过聚集写(bulkwrite)刷入磁盘,以提供持久性,在可用性上,RAMCIoud在不同的服务器上放置3个副本,且不同的数据副本分散到不同的服务器,在出现故障时,可以并行地从其他节点恢复,实验原型可在1-2s的时间内恢复64GB的数据。
能耗是RAMCIoud另一个引起争论的问题,RAMCIoud认为在以每操作焦耳数为衡量指标时,RAMCIoud因为性能的优势可以提供高吞吐量应用下的低能耗。
2.3.4 Mangix
清华大学的Mangix是基于固态存储设计的分布式存储系统,Mangix分离了文件系统的目录树维护与空闲空间管理功能,将空闲空间管理与管理闪存的闪存转换层相结合,重新优化软件层次,以减少冗余工作。
闪存转换层在软件层实现,通过感知文件系统的文件语义优化对闪存的数据分布与垃圾回收策略,闪存转换层直接管理闪存介质,减少I/O路径冗余,通过数据分布发挥闪存的高效并发。
Mangix采用分布式对象文件系统管理,数据及元数据以对象形式存储于集群中的闪存介质上,闪存转换层以远程过程调用的方式相互通信,实现分布式原子性操作以及多节点均衡等特性。
2.4小结
上述系统分别在低延迟、低能耗、多设备磨损均衡等多方面考虑对软件重构或调整,基于存储介质构建新型的闪存存储系统,其特点如表1所示,闪存加速卡、闪存阵列摒弃传统固态盘的方式,根据闪存特性调整闪存管理模块,提升了存储子系统的效率,但扩展性不够理想,FAWN与Gordon通过匹配I/O与CPU计算能力,从集群的角度构建分布式节能系统,其在多节点间闪存特性协作上有进一步研究的可能,基于PCM的Moneta/Onyx同样以重构软件系统的方式实现了极低延迟的I/O访问,RAMCIoud基于DRAM构建了分布式存储系统,降低存储系统的I/O延迟,Mangix通过软件直接管理闪存介质,通过软硬件协作构建基于固态存储的分布式集群存储系统。
表1闪存存储系统比较
总之,闪存的出现给原有针对磁盘优化的软件系统提出了挑战,为了充分发挥闪存低延迟、高并发、异地更新等特性,多数闪存系统重新设计或者修改了阵列控制器或软件模块,以充分发挥闪存优势。
3 闪存存储系统关键技术
闪存介质访问呈现低延迟、读写不对称的特点,与磁盘介质访问相比,随机性能提升很多,传统针对磁盘优化设计的软件系统直接用于闪存系统时,一方面带来了软件系统不必要冗余功能,另一方面隐藏了闪存可能带来优势,闪存的可靠性与传统磁盘设备不同,闪存单元的擦除次数有限,可靠性随着擦除次数的增加而下降,闪存的可靠性与闪存设备负载相关,此外,闪存体积小、能耗低,给低能耗的系统设计带来了机遇。
针对闪存的特性,当前的闪存存储系统的研究主要集中在以下3个方面。
3.1基于I/O栈调整与重构的存储性能优化
在新型存储系统中,存储介质的访问延迟越来越低,相对应的软件开销所占比例越来越高,报告指出,传统磁盘存储系统中软件开销占0.3%PCIe闪存卡系统中软件开销占比21.9%,而随着非易失性器件的发展,预计软件开销所占比率将高达94.09%,如图3所示:
图3软件开销占比趋势
软件开销一方面因软件抽象的层次化设计所致,层次化设计中I/O存储路径较长;另一方面针对磁盘寻道所作的顺序化的优化设计也带来了不必要的软件开销。
除了软件开销导致的时延之外,利用闪存特性提供特定的功能,通过感知上层文件语义更好地布局闪存数据等都是当前研究的热点问题。
3.1.1硬件接口与通知机制
硬件接口的带宽限制影响了闪存设备的性能,磁盘的从设备缓存到磁介质的数据读写需要经过磁头的寻道与定位,机械部件的旋转速度尽管可达15000转,但读写带宽仍不能显著提升,如表2所示,目前希捷企业级磁盘15K.3的读写带宽为202MBps,其使用SAS6.0Gbps的硬件接口,可见磁盘内部的读写是带宽瓶颈,在闪存设备,扫,闪存并发性能可达到极高的数值,硬件接口成为瓶颈,闪存单芯片可提供330MBps读带宽、33MBps写带宽,闪存设备内部通过多通道并发,以及芯片间流水指令执行,可提供外部极高的并行访问带宽,如表2所示,IntelX25-E的读带宽达到250MBps,SATA3Gbps接口成为瓶颈,FusionIO采用PCIe的硬件接口,ioDriveOctal可达到6GBps的读带宽和4.4GBps的写带宽。
除带宽之外,访问延迟也需要新型高速的硬件接口,FusionIO通过PCIe接口直接使用DMA在闪存与内存之间传输数据,从而避免SAS/SATAHBA与RAID等模块的处理延迟,如图1所示,FusionIO可减少2-v8个模块的处理延迟,UCSD在PCM原型系统中升级Moneta的PCIe接口到Onyx的DIMM接口,进一步降低了访问延迟。
表2几种主流高端存储设备的硬件接口与读写性能
新存储器件访问延迟的降低使得传统基于中断的软硬件通知机制开销增大,在传统方式中,数据读写命令发送给设备之后,可由DMA进行数据传输,主机可继续执行指令,而不必等待数据的完成,设备完成数据传输之后,通过中断指令通知主机CPU以进行后续处理,在新存储器件出现后,低延迟访问会造成频繁的中断,上下文切换的代价已超出循环等待的代价,文献[33]认为在新型存储系统中I/O完成采用轮询方式会优于中断方式,I/O请求可采用同步完成的机制,UCSD的Moneta原型系统也采用了spin等待的方式检查I/O请求是否完成,以避免频繁中断带来高昂的上下文切换代价。
3.1.2软件存取路径
在I/O路径上,因软件的模块化需求,软件系统对多层进行了抽象,包括虚拟文件系统层、块设备层以及SCSI驱动层,在软件的各层次中,由具体的文件系统、设备、驱动进行注册以实现正确的数据传输,软件层次屏蔽了多层异构特性,但也导致了不必要的处理与转换。
在设备驱动上,FusionIO直接使用DMA通过PCIe接口在闪存和内存之间传输数据,从而避免了传统SCSI的3层传输模型,SCSI的3层传输模型命令之间的转换及处理既带来了延迟开销,也限制了命令集的扩展。
在块设备层中,现有的IO调度策略都是基于磁盘存取顺序性等问题,因而在固态盘的使用中,不少人提出使用noop的调度策略,即不进行I/O的调度,闪存访问也有独特的特征,读写性能不对称会导致读操作会被写操作引人很大的延迟,而且读写请求不能充分利用闪存设备内部的并发特性将导致带宽浪费,文献[29〕提出闪存设备上的FIGS调度算法,该算法通过选取合适的时间片,并分离读写之间的干扰,既利用了闪存设备的并发特性,也保证了访问请求的公平性。
在文件系统层,Princeton研究人员与FusionIO合作,在FusionIO设备上实现了新型闪存文件系统,该文件系统利用了FusionIO的VSL管理闪存存储空间的功能,从而避免了文件系统空间管理与闪存设备FTL管理的冗余管理开销,Wisconsin大学的研究人员提出了nameless writes的做法,通过文件系统与闪存设备间新的软件程序接口的方式,由闪存设备自主选择数据写的物理地址,然后通知文件系统进行地址的更新记录, nameless writes的做法减少了重复的映射管理开销,也提供了设备内部进行垃圾回收、磨损均衡等操作的灵活性。
在应用层,UCSD基于PCM原型系统Moneta实现了在用户态直接进行数据存取的系统MonetaD,Moneta-D通过硬件实现了权限验证,以及从设备通知应用程序机制的支持,实现了用户程序与存储设备间的直接IO请求,从而避免了用户态与内核态切换开销以及文件系统权限验证的开销。
3.1.3软件程序接口
系统软件与存储设备的软件程序接口仅有两个基本操作接口:READ和WRITE,闪存介质的状态更新不可逆,更新的物理页必须在擦除完成之后才能进行,因而多数采用异地更新,异地更新后数据的旧版本通过垃圾回收进行空间的回收,垃圾回收时选择擦除的单元是闪存块,因为需要将闪存块中有效闪存页移动到新的闪存块后才能进行闪存块的擦除,垃圾回收时有效闪存页的移动是写放大最主要的来源,在文件删除时,传统文件系统通过修改元数据的方式删除文件,并不对数据页进行标识,闪存设备直到该逻辑页被写人新数据才能感知该闪存页被置为无效,导致设备保持的有效页的数量远大于实际系统的有效页(很多已删除的数据页在闪存设备内仍然被错误地认为有效),进而导致写放大,闪存性能和寿命均受到影响,TRIM接口的引人提供了数据显式删除的语义,文件系统通过TRIM命令通知闪存设备已经删除的数据页的范围,使得设备可以及时置无效位,除TRIM命令外,文献[6}提出PTRIM和EXISTS的接口命令,由于TRIM命令仅在设备缓存中提示数据页的无效,在掉电情况下显式删除命令不能确保完成,PTRIM采用持久性删除的语义,解决TRIM在掉电情况下失效的问题,EXISTS命令用于检查数据页的存在性,通过PTRIM与EXISTS命令,文件系统可以通过FTL来管理存储空间。
新的软件程序接口不仅用于文件系统对闪存设备的信息通知,也用于闪存设备对上层系统提供新的增强功能,主要集中在用闪存支持原子写的研究上,Atomic write FTL利用log block记录多个物理页的更新,在每个更新页的元数据(spare area)区域记录事务号,通过AtomicWriteStart)和AtomicWriteCommit()的调用实现原子操作的起始与提交操作,Atomic write FTL主要用于移动设备环境下,设备以裸Flash的形式接入系统,由闪存文件系统直接管理,也就是闪存文件系统实现了FTL的功能,OSU的研究人员与FusionIO合作,提出了基于FusionIO VSL的atomic-write操作接口,FusionIOAtomic-write利用VSL中映射页以日志形式追加的特点记录映射页的状态改变,通过映射页中标记位标记事务的完成,TxFlash[8]提出了较为通用的原子写实现机制,在原子写操作内各个物理页的元数据区域记录前继页面的页地址,从而使原子写内的多个物理页构成环,并通过环结构的检测判断该原子操作是否完整,Flag Commit与TxFlash类似,改进了TxFlash的环结构表示。
3.2系统可靠性
闪存单元的擦除会削弱闪存单元保存电子的能力,导致存储的数据易被干扰,从而降低可靠性,闪存单元的擦除次数在10000-100000次之间,随着闪存密度的增加,闪存单元可靠性变得更低,为延长闪存设备的使用寿命,FTL内实现了磨损均衡策略,与磁盘不同,上层系统的负载与闪存的寿命密切相关,减少上层应用的写数据量也是延迟闪存寿命的一个重要途径,因而,从系统角度实现负载优化与磨损均衡对闪存系统的可靠性有着重要的意义。
3.2.1通道内可靠性
在单系统内部,通过I/O路径内部上层应用与底层设备的优化提高通道内可靠性,通道内可靠性主要包括两个方面:系统数据的删冗与压缩、设备内部多版本机制。
CAFTL在FTL上通过双层映射检测冗余更新数据,对其进行重复数据删除和合并,减少固态盘写入数据量,CA-SSD将基于内容寻址(contentaddressable storage,CAS)的思想引入到固态盘中,数值局部性的存在减少了数据写入量,延长了固态盘的寿命,在数据库系统中,记录更新的大小远小于闪存物理页的大小,频繁的记录更新会导致大量的闪存物理页的更新,造成闪存寿命问题,针对这一问题,文献提出了in-page logging(IPL)的机制,通过在闪存块中保留8 KB大小的log区域,将记录的更新追加到log区域,然后通过延迟合并机制更新数据,减少了闪存页的整体更新,同一逻辑地址的页面写多数情况下是对原有数据的更新,因而重复率比较高,Delta FTL通过对同一逻辑地址的页面的写进行比较压缩,记录压缩后的数据,合并多个写操作的压缩数据记录到delta log区域,减少闪存页的更新,同时,通过维护映射表的deltamapping table以提供最新数据的查询,闪存阵列厂商Pure Storage和XtremeIO均通过重复数据删除技术减少阵列的数据写入量。
从设备内部多版本数据提供数据容错从另一个角度提高了闪存系统的可靠性,闪存的异地更新未立刻擦除旧版本,文献等提出在闪存文件系统中维护单个文件两个一致性的版本,当最新的版本出错时通过回退到上一个一致性版本的方式提供文件的容错。
3.2.2跨设备可靠性
闪存系统中设备整体故障出错率虽不及闪存单元磨损出错率,但出于设备在线替换及数据可用性的考虑,在多设备间维护冗余数据以提高可靠性仍有必要,然而传统RAID容错的假设是磁盘之间出错相互独立,该条件在闪存存储系统中不再成立,由于RAID尽可能均衡负载,这导致RAID各闪存设备以近似的速度磨损,当多个闪存设备同时接近寿命极限时,各设备出错概率上升,也造成整体出错概率的上升,Diff-RAID调整校验值(parity)在不同闪存设备间的分布,差异化各设备的磨损速度,从而降低设备同时出错的概率,也就提高了固态盘RAID的可靠性,存储阵列厂商Pure Storage阵列内部实现了全局的磨损均衡,以提高阵列的整体寿命。
多设备的可靠性也体现在错误恢复的速度上,RAMCIoud采用了多副本的技术,将数据的副本分布于不同的服务器上,并且不同数据的数据副本均匀分布于集群中的所有服务器,这样在出错恢复时可以通过并发恢复降低错误恢复的时间开销。
3.2.3混合系统可靠性
写入数据量对磁盘可靠性影响微乎其微,在磁盘与固态盘的混合系统中将写数据尽可能分布于磁盘介质上,可以有效减少闪存介质所承受的数据写人量,文献[42]把磁盘用作固态盘的缓存,通过以追加写的形式顺序地在磁盘上写入更新的数据,由于数据的时间局部性,有很大一部分的数据存在覆盖写,通过延迟将数据更新到固态盘的做法可以减少大量的数据写,I-CASH是利用固态盘作为磁盘缓存的混合存储系统,其将读操作频繁但写操作很少发生的数据缓存在固态盘中,而将对固态盘中缓存数据的更新变化以delta的形式追加写到磁盘中,以减少对固态盘的写操作。
3.3体积与能耗
闪存的体积小、能耗低,为构建低能耗计算机系统或数据中心提供了机会,EXCES利用固态盘作为磁盘缓存,将磁盘的数据预取、缓存、缓冲在固态盘,从而减少磁盘访问,以达到节能的目的。
在数据中心设计中,FAWN和Gordon都提出了匹配集群节点的计算处理能力与I/O能力,通过使用低频率的CPU和低延迟的闪存芯片以减少计算处理与I/O之间的差距,CPU的能耗随频率超线性增长,相对于现有服务器的高频CPU,低频CPU所需能耗很低,由于闪存芯片体积小,可在单块板子上集成大量的闪存芯片,去除服务器不需要的冗余功能,可实现单板的集群服务器,从而大大减少数据中心的占地面积,此外,在服务器中使用闪存盘或闪存卡也可降低系统对传统磁盘阵列或服务器数目的需要,从而降低系统规模,以节省能耗。
3. 4小结
在以低延迟访问介质构建的存储系统中,软件系统的开销逐渐占据较大的比例,以FusionIO为代表的闪存加速卡以及UCSD基于PCM的Moneta/Onyx在I/O栈上减少了软件处理模块,以降低软件开销,当前不少研究工作在设备驱动、缓存调度、文件系统上分别提出了针对闪存介质的优化,在软件程序接口方面,TRIM指令已广泛应用于固态盘系统,但其他指令多为针对特定场景提出,如PTRIM/EXISTS指令用于文件系统借用闪存转换层进行空间管理;Nameless write的多种接口实现将空间分配功能交由闪存转换层完成;Atomic write用于闪存转换层向上层系统导出原子写功能,在硬件接口与通信机制上,SATA向PCIe接口过渡已得到大多数人的认可,硬件通信上频繁中断的效率不及轮询机制也得到了关注,I/O栈的调整或重构对提升闪存存储系统性能相对明显,然而现有研究工作大多基于纯软件闪存转换层的方式,或者纯硬件的闪存转换层的方式,对于软硬件分工讨论较少,而且现有研究仅针对闪存介质优化,而忽略对传统磁盘或未来其他新型存储介质的支持,因而,如何进行软硬件(系统软件与设备内硬件控制)合理分工,并实现有效的接口语义,以及如何重构软件系统以提供多种访问介质的存储系统的管理,都值得进一步研究。
在闪存存储系统的可靠性上,存储可靠性不仅取决于设备本身,而且与外部负载密切相关,现有的研究分别在系统通过对写操作的删冗压缩、多设备间的磨损与恢复、混合存储系统优劣势互补上开展工作,从系统缓存、文件系统组织方面对写负载影响的研究工作还比较少。
在利用闪存构建低能耗计算机系统或数据中心方面,通过闪存的高性能以减少存储规模,利用闪存缓存数据以较少磁盘使用或者直接利用闪存重构节能数据中心等几个方面都有所研究,直接利用闪存重构节能数据中心的方式对未来数据中心的构建较有启发,但针对不同负载情形下计算与I/O比例不同,以及对网络互联与软件系统等产生的影响,还需要进一步的研究。
4 总结与展望
本文介绍了当前集中典型的闪存存储系统,并从I/O栈调整与重构、闪存系统可靠性、体积与能耗3个角度对闪存系统构建中的关键技术和热点问题进行了探讨,闪存系统呈现与传统磁盘系统迥然相异的特性,简单的设备替换限制了闪存性能的发挥,难以克服闪存如磨损等劣势,也不利于利用闪存提供原子写等新功能。
如何充分利用闪存特性并通过修改或重构软件系统以提供友好支持,是构建闪存系统的研究热点,也是需要进一步研究的方向,首先,在软件系统的I/O栈上,如何减少软件冗余,以及缓存调度I/O请求以发挥闪存低延迟与并发特性仍是闪存存储系统构建中的一大挑战,其次,闪存可靠性是与系统负载密切相关的,如何从负载及系统的角度设计闪存的可靠性也是值得研究的问题,闪存与传统磁盘的可靠性模型发生变化,现有系统构建较少考虑闪存寿命,从系统构建的角度减少数据写以提高闪存寿命也是系统构建时需要考虑的因素,最后,闪存系统的设计也应当考虑新型存储器件可能对系统带来的影响,以提高软件系统在多种存储器件下的普适性,现有文件系统多数优化是基于磁盘特性的,而随着闪存存储以及PCM等新型存储器件的出现,系统与存储硬件之间的分工协作需要权衡,并且系统应尽可能提供多种存储设备的管理。
闪存部署已较为广泛,其可靠性与成本问题逐渐被人们接受,闪存存储系统的构建还处在起步阶段,但通过系统级提供对闪存的友好支持,可充分发挥闪存优势,也将会给计算机系统带来重要的改变。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:闪存存储系统综述