大数据存储系统I/O性能优化技术研究进展
肖利民,霍志胜
北京航空航天大学计算机学院,北京 100191
摘要:大数据存储系统的I/O性能是影响大数据应用整体性能的关键因素之一,总结了当前在存储系统架构、元数据I/O性能、数据I/O性能方面开展的大数据存储系统I/O性能优化工作,并指出了未来大数据存储系统I/O性能优化的一些研究方向。
关键词:大数据存储系统;存储系统架构;元数据I/O性能;数据I/O性能;性能优化技术
doi:10.11959/j.issn.2096-0271.2017062
论文引用格式:肖利民, 霍志胜. 大数据存储系统I/O性能优化技术研究进展[J]. 大数据, 2017, 3(6): 65-84.
XIAO L M, HUO Z S. Review of I/O performance optimization technology for big data storage system[J]. Big Data Research, 2017, 3(6): 65-84.
1 引言
大数据已成为当前IT领域的重点研发内容和产业发展方向,我国把应对大数据问题带来的机遇和挑战提升到了国家战略层次,国家自然科学基金、国家重点研发计划等国家科技计划设置专项引导我国大数据研发工作,国务院颁布《促进大数据发展行动纲要》推动我国大数据产业发展工作。根据《自然》杂志对大数据及其应用的论述,数据存储是大数据处理和利用过程中不可或缺的关键环节。大数据存储系统是满足大数据应用存储需求的基础设施,其输入/输出(input/output,I/O)性能直接决定大数据存储效率,是影响大数据应用整体性能的关键因素。因此,如何提升大数据存储系统I/O性能是当前大数据领域的研究热点。
大数据存储系统大多沿用传统存储技术构建,甚至大多直接由传统存储系统扩展或升级而来,在大数据应用环境的巨大负载压力下,元数据I/O和数据I/O性能极易成为大数据存储过程中的性能瓶颈。例如,在大数据应用环境中,元数据I/O在整个存储系统I/O活动中占比很高,而支持元数据I/O的传统目录树结构组织方式往往是针对小规模数据设计的,不适应大数据应用导致的日益庞大的目录树规模,因此,元数据I/O极易成为影响存储系统I/O性能的关键瓶颈。同时,在大数据应用环境中,数据规模超过PB级甚至EB级,文件数量达到万亿级别,用户数量急剧增长,用户I/O负载呈现出多样性特征,且存在数据服务器中数据分布不合理、I/O带宽资源竞争剧烈、小文件大量存在等因素,数据I/O同样容易成为影响存储系统I/O性能的瓶颈。
为了适应和满足大数据应用环境中数据存储的需求,针对当前存储系统中元数据I/O和数据I/O面临的性能瓶颈问题,国内外学术界和工业界主要从存储系统架构优化、元数据I/O性能优化、数据I/O性能优化3个维度开展了大量的大数据存储系统I/O性能优化工作,如图1所示。因此,本文首先总结和分析了当前在存储系统架构优化方面的工作,包括基于负载特征的存储系统架构、密集型元数据I/O缓存架构、基于Flash的存储系统架构、新型元数据管理架构;其次,总结和分析了当前存储系统元数据I/O性能优化技术,包括元数据搜索、元数据查找、元数据创建3方面的优化技术;再次,总结和分析了当前存储系统数据I/O优化技术,包括数据I/O的文件级分条方法、数据I/O的负载均衡方法、数据I/O的最小化访问冲突方法、数据I/O的写优化技术、数据I/O的缓存容量扩展技术、数据I/O的带宽分配技术、数据I/O的客户端缓存技术;然后,分析和指出了未来大数据存储系统I/O性能优化可能的一些研究方向;最后,对全文进行了总结。
图1 大数据存储系统I/O性能优化相关研究工作
2 存储系统架构优化技术
在大数据应用环境中,当前存储系统架构主要面临如下问题。
大数据应用的负载特征呈现出多样性,存储系统的通用架构无法有效应对多样化的负载,从而造成存储系统I/O性能的异常起伏。
大数据应用使得元数据I/O请求呈现密集型负载特征,导致元数据服务器I/O带宽资源的竞争加剧,从而引起元数据I/O性能下降。
支持元数据I/O的传统目录树组织方式是为较小规模的存储系统设计的,不适应大数据应用中日益庞大的目录树规模,从而限制了元数据I/O性能。
随着新型Flash存储介质的大量应用,亟需研究新的存储系统架构,以充分利用Flash随机读写性能优势,从而提高存储系统I/O性能。
针对上述问题,当前学术界和工业界从存储系统架构角度出发,开展了大量I/O性能优化工作。
2.1 基于负载特征的存储系统架构
在大数据应用环境中,存储系统服务的I/O负载通常来自多种类型的大数据应用,普遍采用“one-size-fits-all”的存储系统架构设计,无法很好地满足大数据应用负载对存储资源访问的多样性需求,往往导致底层存储系统的性能未被充分利用。
在具有不同负载特征的并发大数据应用环境中,优化I/O负载的性能给存储系统的架构设计带来了新的需求和挑战。首先,不同类型应用对存储资源的访问具有多样性的需求,根据负载特征设计合理的I/O优化策略是满足存储需求的必要手段,并且,还需要细粒度地配置和管理启用的I/O优化策略,而目前的存储系统如并行虚拟文件系统(parallel virtual file system,PVFS)、 Lustre等只支持文件数据分布等少数优化策略。其次,在系统运行过程中,针对I/O负载产生的请求,需要选择符合其特征的优化策略,以满足相应的存储访问需求,而现有的存储系统架构主要面向大规模科学计算应用而设计,难以在优化策略的实现以及I/O请求的处理过程中,区分I/O负载的数据存储和访问方式。最后,存储系统需要支持在系统不停机的情况下,根据负载特征的变化情况动态调整处理I/O请求使用的优化策略,并保证调优过程中并发访问的正确性,而现有的静态配置和动态配置方法无法同时满足上述需求。
为优化存储系统架构,使其更好地适应负载多样性,通常分别从存储系统架构的I/O 高层库、I/O中间件层、存储系统层开展相应的优化,具体如下。
●基于负载特征的I/O高层库优化:通常的思路是设计一套灵活的应用程序编程接口(application programming interface,API),以支持用户在运行时描述其复杂的I/O负载特征,如非连续内存访问结构[1]等,从而将应用负载特征传递到中间件层和存储系统层,以便后续开展针对性优化。
●基于负载特征的I/O中间件层优化:针对大数据应用存在的请求数据量小、非连续、非对称等典型负载特征,在I/O中间件层采取列表I/O(list I/O)[2]、 数据类型I/O(datatype I/O)[3]、聚集 I/O[4]、 聚集缓存[5]、预取[6]、数据析取[4]、 高性能便携式MPI-I/O(R OM I/O)[7]、网络文件系统用户空间远程过程调用协议库(vNFS)[8]等针对性优化方法,以提高不同I/O访问模式的应用负载的I/O性能。
●基于负载特征的存储系统层优化:针对不同类型负载特征,动态调整和优化存储系统架构及其策略,选择合适的缓存替换策略或配置相应的存储系统优化策略[9-15]