楼飞燕
(浙江广厦建设职业技术学院,东阳 322100)
大数据存储系统架构是目前大数据管理所面临的重要问题之一,由于磁盘读写性能的挑战,和主存速度差距不断增加,传统主存-磁盘存储架构已无法适应大数据管理需求,无法构建有效的大数据存储性能。新型存储如固态盘、PCM等技术则具有价格与寿命的劣势,目前混合利用新型存储介质与传统存储介质架构存储系统是应用广泛的一种技术[1],但该技术面临的关键问题则在于I/O性能的不足,直接影响了大数据的存储效率,进而影响了系统整体性能,如何提高大数据存储系统的I/O性能是目前大数据存储的重要研究方向之一。本研究对目前存储系统架构优化、I/O性能优化等方面的技术进行简要总结。
负载多样性是目前大数据存储系统的主要负载特征之一,在并发访问中,I/O负载性能的优化是存储系统架构的新要求,对I/O高层库、中间层、存储系统层分别给予相应的优化是主要优化方法。高层库的优化可以通过应用程序接口(API)的灵活化设计完成,可有效应对用户在运行系统时对I/O负载特征复杂性描述的需求,如非连续内存访问模式(NUSA)[2],负载特征能够直接向中间件层与存储系统层进行传递,便于各层后续进行针对性优化。在中间件层中,由于大数据存在请求数据量少、非对称性与非连续性等负载特征,可通过列表I/O、数据类型I/O、聚集I/O、MPI-I/O、远程过程调用协议库等优化方法,提高不同I/O访问模式应用所需要的I/O负载性能。在存储系统层,可采用相应的缓存替换策略或相应存储系统优化策略的配置,动态化调整并优化存储系统架构与存储策略,以解决存储系统对复杂负载特征的负载适用性。如基于对象存储技术,是一种分布式并行存储系统,包括客户端、元数据服务器与存储节点3个部分,数据通路与控制通路相分离,每个对象存储设备对自身设备数据对象分布进行智能管理,该存储体系架构充分实现了元数据与文件数据的并行性及文件数据在对象存储设备中的并行性,优化了系统I/O性能[3]。
缓存是元数据I/0性能优化的主要方法之一,随着固态硬盘(SSD)在大数据存储系统中的广泛应用,大量缓存读写对于SSD寿命的影响成为一个重要问题,I/O密集型应用的不断发展需要缓存架构的持续优化,以解决SSD寿命和元数据访问性能问题。目前的技术中,可通过就地更新策略减轻SSD写负载[4]。混合存储结构或异构存储是目前解决元数据存储与读写速度的一种熟练的技术。利用f l ash作为元数据服务器(MDS)的存储介质,提高元数据读写速度,Lustre、Hybrid MDSL等均是该技术的有效应用,结合日志文件,按照访问热度,制定元数据迁移机制,能够有效提高SSD利用效率,优化I/O性能。SSD与DRAM协作式技术也是解决方法之一,DRAM是SSD的调整缓冲,SSD则是主存,可架设一个基于对象数据的存储系统。为降低写放大,还可以log结构顺序块组织SSD,在这种混合架构中融入Memcached,以提升性能[5]。
Flash是目前随机I/O性能良好的一种存储介质,可广泛应用于HDD与SSD的混合架构或闪存转换层(FTL)是文件系统与闪存芯片之间的中间层,可掩盖闪存特性,能够使文件系统以访问传统磁盘的方法访问闪存,能够执行地址转换、损耗均衡与垃圾回收等功能,设计一种基于新型FTL接口的f l ash存储系统架构,既能发挥f l ash的随机读写优势,又能够提升I/O性能。也可采取降低SSD垃圾回收负载的方法提高I/O性能[6]。还可通过日志文件系统的改善,根据数据块热度差异进行划分,以减少SSD的随机写操作[7]。Facebook的Flashcache是目前混合分层存储系统应用较为广泛的一种块设备缓存模块,在使用时能够以内核模块形式实施动态加载,无需修改内核,能够很好地维持磁盘原有数据布局,对于SSD读写性能优势与硬盘廉价且耐久的优势良好地结合在一起,从而构建了一个特有的存储块设备,SSD是硬盘的一个缓存,可提高块设备访存速度,虚拟块设备一一对应磁盘逻辑地址,文件系统层对虚拟设备的访问模式与磁盘相同[8]。
目前PCM、STT-RAM、FRAM等新型非易失存储介质应用范围也在逐步扩大,这些存储介质较f l ash更快,企业级中广泛应用的PCIe即属于该存储介质的应用,在这一存储系统中,I/O栈面临更大的瓶颈,针对此问题,有研究提出了优化设计I/O协议栈,以构建一个高性能闪存SSD,进一步提高I/O性能,该方法主要从设备驱动层与硬件设备上入手,基于原型系统,加入了内核缓存旁路优化技术、多请求队列与多中断优化技术、本地命令队列优化技术等,大幅提升了PCIe闪存SSD性能,读写宽带进一步提升[9]。也可采用PCM与DRAM协作式的存储架构,较小的DRAM可作PCM缓存使用,通过DRAM缓存延迟PCM写操作,进而降低PCM写次数[10]。
第一,基于散列的数据查询方法。该方法是通过散列文件访问路径对文件所在MDS进行定位。基于此技术,可引入分布式哈希表与Chord结构对分布式文件系统进行查询,存储节点和数据均采取环形分布式散列技术,数据能够均匀地散列于各个节点中,可应用于并行性数据查询,减少了查询时延,同时有利于数据迁移[11]。第二,Bloom filter+k-d-tree技术,利用Bloom filter技术建立各分区目录表,快速缩小数据查找空间,利用k-d-tree在分区内建立内在索引,为多维属性查找提供便利[12]。
目录树是目前数据存储系统的主要显示形式,大数据需要庞大的目录树支撑,严重降低了元数据搜索性能。目前,针对元数据搜索性能的I/O优化技术主要包括三种:第一,基于索引式的元数据搜索技术。如Compact、BitMap、C-index分布式索引等技术,其中C-index分布式索引是一种基于树结构的索引技术,可应用于云平台,能够支持一维或多维范围的查询,能够在合理时间内构建大数据集的索引,且索引独立于文件系统之外[13]。第二,基于语义相似性搜索技术,该技术目前包括了M-Chord、R-Chord、MCAN、SIMIPEER、RT-CAN、DiST、DKDT、P2RP-tree、NR-tree、pSearch、SSW等技术,主要是通过聚类划分、RPC划分、R-tree、k-d-tree、CAN等方法进行空间划分,基于Chord、拓扑、CAN、Super-peer、树形、DHT、SSW等拓扑结构,可提供范围查询、窗口查询、KNN查询等方法,部分搜索技术可支持数据更新[14]。第三,基于采样的搜索技术,该技术是对目录树中的各个分支给予采样打分后,根据分值,对目录分支进行快速剪切,不断缩小分层目录的搜索范围,进而提高搜索速度。第四,基于事件通知的搜索技术。该技术可利用时间通知机制,替换不活跃的缓存文件,提高缓存利用率。
元数据存储是大数据存储系统中最为关键的一种元数据访问操作,其I/O优化技术主要包括两种:第一,优化文件创建交互协议。在文件创建时利用子操作合并、数据文件句柄出租、数据文件预创建等方法,确保文件创建的过程保持数据一致性,减少非必要的数据交互操作,提升元数据创建性能。第二,优化元数据存储方法,即对元数据在MDS上的存储方式进行优化,以提高元数据的持久存储写入性能,进而提升文件创建性能。
I/O负载均衡是充分发挥各个数据服务器性能的重要方法,其优化方法主要包括两种:第一,静态负载均衡,该方法是在程序运行之间,根据负载比例对文件数据进行分块处理,向不同I/O服务器进行映射,使各服务器实现负载均衡,如NCUC方案,对分布式NameNode集群通过Chord协议实施快速、一致性的哈希计算,该方案能够自动向NameNode节点分配元数据。第二,动态负载均衡,即对文件负载特征信息未知的前提下,结合系统运行的动态负载信息,对数据服务器之间的负载分布进行实时调整,进而消除负载热点,提高I/O性能。该方法对于异构性能差异存储系统有良好的适应性,如,基于时间预测模式的优化方法,在I/O调度前,构建一个时间预测模型评估各节点性能,按照节点性能分布I/O任务,确保各节点任务完成时间的均衡性;基于主动负载复制与被动负载迁移的分布式NameNode算法动态负载均衡策略;基于模块化结构的对象存储系统动态负载均衡优化方法等。
写操作是I/O负载占用比例很高的一个操作,在HDD、SSD中均会被放大,进而影响I/O性能,优化写操作是优化I/O性能的重要途径。目前的优化方法主要是:通过非阻塞写操作,消除异步预取页,增加写操作并行化运行速率;加入一个基于Flash的写加速层,或建立一个应用型访问负载模型,将应用数据划分至一个独立的Flash存储空间中,进而提升I/O写操作性能;也可利用索引结构进行优化,如采用未修改过的操作系统内核架构,将写优化的负面影响降低到最小化,或将日志延迟绑定、分区与范围删除等技术,同时确保写操作性能的优化与其他操作性能的正常进行;也可通过垃圾收集机制的研究减少写操作的干扰因素。如基于固态盘的一种非对称I/O路径混合缓存方法MOLAR,该方法采用内在驱逐计数筛选算法,能够使SSD选择缓存数据块,设定阈值后,该缓存数据块可缓存到SSD,既不会牺牲缓存命中率,又能够减轻SSD写负载压力,优化写性能;系统将SSD逻辑地址分为两个独立区域,即长活跃与短活跃数据块区域,短活跃数据块的被替换可能性较高,可聚合在一个集中度相对较高的地址空间内,进而减少SSD垃圾回收对写操作的影响,优化I/O性能;该系统对于SSD写负载压力的降低至少达到一个数量级,提高了读/写性能与I/O吞吐率。又如通过静态条带化技术优化随机写操作的CD-RAIS,将SSD连续或非连续请求分配到同一个条带中,尽量减少静态条带对于校验信息的频繁更新,通过滞后数据置无效操作与不同条带更新合并的操作,减少了检验信息数据块的更新,对于随机小写操作有更强的优化性。
I/O转发架构是一种新型的基于Flash存储介质的缓存容量扩展方法,是一种利用分层I/O架构,对计算资源中的I/O请求进行逐层规约,利用聚合、重组与缓存I/O请求等方法减少计算节点与文件系统之间的交互操作,以缩小CPU与I/O组件性能之间的差距,同时有利于并行文件系统和计算节点日益增长之间的互连提出的可扩展性需求问题。该方法可在I/O中转节点中建立一个基于主存与SSD之间的异构缓冲区,接入一个高速存储介质,以提高缓存容量,提升I/O性能。同时,利用主动数据处理技术,发挥I/O中转节点中全功能多核CPU的强大计算能力,主动处理传输至I/O中转节点中的各类数据,可提供加密、压缩、数表转换与字符统计等服务。该主动数据处理块与多线程并发数据处理服务能够加速处理I/O中转节点中的数据,计算可缩小的数据大小,降低I/O中转节点与磁盘之间的I/O路径数据传送量,减少磁盘访问次数,增加带宽,提高I/O吞吐率。
缓存技术对于改善数据访问性能有广泛的适用性,客户端数据缓存技术能够提高大数据存储系统I/O性能。第一,缓存数据结构优化,该方法是基于数据块的优化技术。第二,缓存管理方法。通过缓存管理优化缓存分配,是调节各存储设备I/O负载分布的有效方法,可使存储设备获得与其自身服务能力相匹配的负载,进而消除性能瓶颈。有研究设计了一种基于负载特征识别与访问性能预测的缓存分配技术Caper,该算法首先要建立CART模型,预测I/O请求对不同存储设备的性能要求。该算法将应用负载划分为随机访问、顺序访问与循环访问三类负载进行分析,能够减少异构存储设备的性能差异;同时,该算法还改进了时钟算法,不同I/O访问特征对应的缓存块有不同权值大小的设置,能够进一步改善缓存效益。或者基于反馈结构与公平队列建立一种缓存分配方法,如Qaca算法,主要由基于开始时间公平队列的服务请求顺序控制模块与基于反馈结构的缓存管理模块组成,可通过Qos控制I/O请求服务顺序,通过缓存分区方法周期性调整缓存分区大小。
大数据存储系统I/O性能优化在未来仍然面对更快的技术进步及相应的技术优化,存储平台、存储管理、混合存储缓存技术、I/O宽带、快速存储介质应用及系统优化、数据I/O写性能优化等将成为未来大数据存储系统性能优化的重要路径及重要研究方向。