一种海量小文件存储读取的优化方法和系统技术方案

技术编号:17406908 阅读:33 留言:0更新日期:2018-03-07 04:47
本发明专利技术公开了一种海量小文件存储读取的优化方法和系统,能够解决因为海量小文件的存储性能不足而影响服务能力的问题,且在不明显增加成本以及不显著改变流程的前提下,加快整体的访问效率。其技术方案为:通过增加一块或多块高速磁盘来存放元数据,以使数据的访问加速提升整体的服务性能。新增的高速磁盘和原有分区整合成一个块设备,并对已新格式化好的文件系统进行优化处理,在处理完成后,将文件系统的元数据部分迁移到高速磁盘中,而原来存放元数据区域以及原来的真实数据区域,都用作新的真实数据区域来使用。此后所有元数据的读写增删等操作以及对目录的操作,都会在高速磁盘上进行,以用来加快整体访问速度。

An optimization method and system for storing and reading mass small file storage

【技术实现步骤摘要】
一种海量小文件存储读取的优化方法和系统
本专利技术涉及计算机领域的数据存储领域,尤其涉及对海量小文件存储进行读取优化的技术。
技术介绍
计算机存储数据时,是借助一个称作文件系统的软件来存放文件等数据。各通用文件系统中,文件存放时,分成两部分存放,一部分是元数据(inode),当作索引使用;另一部分是真实数据。数据读写时,是先读取元数据(inode),再根据元数据中的信息去读取真实数据。元数据中存放了文件名、文件创建时间、文件所有者等以及最重要的真实数据存放的位置。目前互联网应用中具有大量的小文件,譬如被分成小段的视频文件(ios平台),淘宝网中的图片,新闻网站的图片等,大型的网站可能存放超过百亿级别的图片,这个数据的存储读取效率成了影响服务性能的关键问题。通用文件系统适用于大文件的应用场景,其没有针对海量小文件做优化;当存放海量小文件时,读取元数据的次数和真实数据的次数相当,没有对读取元数据进行优化因此整体读取性能较差。而针对海量小文件应用的越来越多,业界逐渐形成了一种优化的方法:将若干小文件合并到一个中等文件中,以降低元数据的数量,并另外记录这些小文件在此中等文件中的位置信息。其工作原理是:通过多个逻辑文件共享同一个物理文件,将多个小文件合并存储到一个大文件中,实现高效的小文件存储。大文件加上映射表,小文件合并成为一个大文件相当于作了一层小文件系统,这种机制适合于一次写多次读的情况,多次写的不合适此模式。其实现方式是:在应用层实现了一个映射数据库,这里称作映射表。映射表中存放的是四元组:小文件名,大文件名+开始位置+长度。数据访问的一般流程如图1和图2所示。其中图1示出了小文件合并的写入流程:首先应用程序调用函数,输入为小文件名;文件映射模块,根据输入的小文件名计算hash值,查找是否存在此小文件名的映射;如果存在则返回已有的记录,记录中包含大文件名、在大文件中的开始位置、当前的长度信息,如果不存在则寻找到一个有剩余空间的大文件并记录;返回记录,记录中包含大文件名、在大文件中的开始位置、当前的长度信息。直接打开大文件,在前述的开始位置开始写入。图2示出了小文件合并的读取流程。首先根据小文件名,到映射表处查询对应的大文件名和位置信息,然后根据返回的信息,到大文件中读取相应数据。这种优化方式的优点是文件碎片会减少很多,而且元数据数量大幅度减少,比如1M的小文件,64M一个大块,那就是文件合并元数据数量只有原来的1.5%。但这种优化方式也存在明显的缺点:1、定位小文件需要先访问映射表,再访问指向大文件的指定位置;在读写时读需要两次操作才能定位到实际访问地址;增加了一次磁盘访问,性能受影响;2、如第1点所说,需要将映射表和对真实文件的操作事务化,事务化对容错的实现要求高;3、文件大小的不一致性,对实现有较大的挑战。
技术实现思路
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。本专利技术的目的在于提供了一种海量小文件存储读取的优化方法和系统,能够解决因为海量小文件的存储性能不足而影响服务能力的问题,且在不明显增加成本以及不显著改变流程的前提下,加快整体的访问效率。本专利技术的技术方案为:本专利技术揭示了一种海量小文件存储读取的优化方法,包括:步骤一:基于原有磁盘和新增磁盘,形成一个逻辑卷;步骤二:对逻辑卷进行格式化;步骤三:进行元数据的迁移调整和数据结构之间的重新映射,使新增磁盘和原有磁盘其中之一被预留成存放元数据,新增磁盘和原有磁盘其中之另一用于存放真实数据。根据本专利技术的海量小文件存储读取的优化方法的一实施例,步骤一包括:将原有磁盘和新增磁盘进行整合;将原有磁盘和新增磁盘各创建成一个物理卷;将各个物理卷串成一个物理卷组;从物理卷组中划出所有空间做成一个逻辑卷。根据本专利技术的海量小文件存储读取的优化方法的一实施例,在步骤三中,在格式化刚结束且文件系统未被使用之前进行元数据的迁移调整和数据结构之间的重新映射。根据本专利技术的海量小文件存储读取的优化方法的一实施例,步骤三进一步包括:步骤1:读取第一个元块组中的第一个块组,将第一个块组中的超级块开始到元数据索引表为止的数据复制到第一个元块组的起始位置并记录结束位置为偏移量;步骤2:对第一个元块组中的后续的每一个块组,依次将每个块组中的超级块开始到元数据索引表为止的数据复制到偏移量开始的地址中,更新偏移量的数值,并将被复制的地址的内容清空;步骤3:对第一个元块组之后的每一个元块组,以上述步骤1和步骤2的处理方式,依次将所有的元块组中的元数据复制到文件系统的前部,从而使所有的元数据全部迁移到原有磁盘和新增磁盘其中之一;步骤4:将偏移量开始的后续起始元块组的第一个块组地址,作为块数据的起始地址,存放到第一个元数据中的块位图/元数据位图/元数据索引表中,并将位图信息清零,并将偏移量的值更新为下一个块组的地址,如果当前处理的元块组结束,则将偏移量的值更新为下一个元块组的第一个块组的地址;步骤5:重复步骤4处理所有的元块组,将所有的真实数据和元数据进行关联;步骤6:对所有包含超级块/块描述表在内的特殊元数据,进行重新填充,根据块数据的分布构建块描述表的数据结构,填充到块描述表或保留在块描述表的结构中。根据本专利技术的海量小文件存储读取的优化方法的一实施例,新增磁盘的读写速度大于原有磁盘。根据本专利技术的海量小文件存储读取的优化方法的一实施例,方法还包括:步骤四:当创建目录时,将目录的真实数据存放到新增磁盘中以使后续对目录的读写操作都在新增磁盘上进行。本专利技术还揭示了一种海量小文件存储读取的优化系统,包括:逻辑卷生成模块,基于原有磁盘和新增磁盘,形成一个逻辑卷;格式化模块,对逻辑卷进行格式化;数据迁移及结构重构模块,进行元数据的迁移调整和数据结构之间的重新映射,使新增磁盘和原有磁盘其中之一被预留成存放元数据,新增磁盘和原有磁盘其中之另一用于存放真实数据。根据本专利技术的海量小文件存储读取的优化系统的一实施例,逻辑卷生成模块包括:整合单元,将原有磁盘和新增磁盘进行整合;物理卷创建单元,将原有磁盘和新增磁盘各创建成一个物理卷;物理卷组创建单元,将各个物理卷串成一个物理卷组;逻辑卷创建单元,从物理卷组中划出所有空间做成一个逻辑卷。根据本专利技术的海量小文件存储读取的优化系统的一实施例,数据迁移及结构重构模块在格式化模块刚完成格式化且文件系统未被使用之前进行元数据的迁移调整和数据结构之间的重新映射。根据本专利技术的海量小文件存储读取的优化系统的一实施例,系统还包括:目录处理模块,当创建目录时,将目录的真实数据存放到新增磁盘中以使后续对目录的读写操作都在新增磁盘上进行。本专利技术对比现有技术有如下的有益效果:本专利技术通过增加一块或多块高速磁盘(譬如SSD)来存放元数据,以使数据的访问加速提升整体的服务性能。新增的高速磁盘和原有分区整合成一个块设备,并对已新格式化好的文件系统进行优化处理,在处理完成后,将文件系统的元数据部分迁移到高速磁盘中,而原来存放元数据区域以及原来的真实数据区域,都用作新的真实数据区域来使用本文档来自技高网
...
一种海量小文件存储读取的优化方法和系统

【技术保护点】
一种海量小文件存储读取的优化方法,包括:步骤一:基于原有磁盘和新增磁盘,形成一个逻辑卷;步骤二:对逻辑卷进行格式化;步骤三:进行元数据的迁移调整和数据结构之间的重新映射,使新增磁盘和原有磁盘其中之一被预留成存放元数据,新增磁盘和原有磁盘其中之另一用于存放真实数据。

【技术特征摘要】
1.一种海量小文件存储读取的优化方法,包括:步骤一:基于原有磁盘和新增磁盘,形成一个逻辑卷;步骤二:对逻辑卷进行格式化;步骤三:进行元数据的迁移调整和数据结构之间的重新映射,使新增磁盘和原有磁盘其中之一被预留成存放元数据,新增磁盘和原有磁盘其中之另一用于存放真实数据。2.根据权利要求1所述的海量小文件存储读取的优化方法,其特征在于,步骤一包括:将原有磁盘和新增磁盘进行整合;将原有磁盘和新增磁盘各创建成一个物理卷;将各个物理卷串成一个物理卷组;从物理卷组中划出所有空间做成一个逻辑卷。3.根据权利要求1所述的海量小文件存储读取的优化方法,其特征在于,在步骤三中,在格式化刚结束且文件系统未被使用之前进行元数据的迁移调整和数据结构之间的重新映射。4.根据权利要求1所述的海量小文件存储读取的优化方法,其特征在于,步骤三进一步包括:步骤1:读取第一个元块组中的第一个块组,将第一个块组中的超级块开始到元数据索引表为止的数据复制到第一个元块组的起始位置并记录结束位置为偏移量;步骤2:对第一个元块组中的后续的每一个块组,依次将每个块组中的超级块开始到元数据索引表为止的数据复制到偏移量开始的地址中,更新偏移量的数值,并将被复制的地址的内容清空;步骤3:对第一个元块组之后的每一个元块组,以上述步骤1和步骤2的处理方式,依次将所有的元块组中的元数据复制到文件系统的前部,从而使所有的元数据全部迁移到原有磁盘和新增磁盘其中之一;步骤4:将偏移量开始的后续起始元块组的第一个块组地址,作为块数据的起始地址,存放到第一个元数据中的块位图/元数据位图/元数据索引表中,并将位图信息清零,并将偏移量的值更新为下一个块组的地址,如果当前处理的元块组结束,则将偏移量的值更新为下一个...

【专利技术属性】
技术研发人员:丁晓杰颜新波曹敬涛朱雷军徐启亮
申请(专利权)人:上海凯翔信息科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1