首页> 中国专利> 海量小文件存取优化方法、装置、设备及存储介质

海量小文件存取优化方法、装置、设备及存储介质

摘要

本发明涉及基架运维领域,公开了一种海量小文件存取优化方法、装置、设备及存储介质。所述海量小文件存取优化方法包括:通过预设的动态划分规则将待存储文件划分到本地磁盘存储池和高速磁盘存储池,其次通过高速磁盘存储池设定磁盘阵列结构,从而提升高速磁盘存储池的性能,随后对本地磁盘存储池中的文件进行读取并生成相应的文件读取记录,最后动态监测该文件读取记录,将读取次数大于预设阈值的文件迁移至高速磁盘存储池中,并在内存中生成对应文件的存储位置记录,当接收到这些迁移文件的读取请求时,根据内存中存储位置记录直接重定向到该文件进行读取,降低了本地磁盘访问的I/O数量,文件读取速度更快,从而提升了本地文件访问性能。

著录项

  • 公开/公告号CN113176857A

    专利类型发明专利

  • 公开/公告日2021-07-27

    原文格式PDF

  • 申请/专利权人 康键信息技术(深圳)有限公司;

    申请/专利号CN202110484057.3

  • 发明设计人 郑平;

    申请日2021-04-30

  • 分类号G06F3/06(20060101);

  • 代理机构11321 北京市京大律师事务所;

  • 代理人姚维

  • 地址 518052 广东省深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)

  • 入库时间 2023-06-19 12:00:51

说明书

技术领域

本发明涉及基架运维领域,尤其涉及海量小文件存取优化方法、装置、设备及存储介质。

背景技术

当前互联网应用中具有大量的小文件,譬如被分成小段的视频文件,购物网页中的图片,新闻网站的图片等,此外,大型的网站可能存放超过百亿级别的图片,这个数据的存储读取效率成了影响服务性能的关键问题。现实场景中还存在磁盘频繁读取的情况,这将会让磁盘高负荷工作,从而影响磁盘的性能。

针对“磁盘频繁读取而影响磁盘性能”这一现象,现有的性能优化解决方案是通过内存对频繁读取的文件进行缓存,但是这种方法还是基于本地机械磁盘进行文件读取,本地文件访问性能较低。

发明内容

本发明的主要目的在于解决当前海量小文件存取优化方法存在本地文件访问性能较低的问题。

本发明第一方面提供了一种海量小文件存取优化方法,包括:

根据预设的文件动态划分规则,将待存储的文件进行划分后存储到对应存储池,所述存储池包括本地磁盘存储池和高速磁盘存储池;

基于磁盘阵列技术为所述高速磁盘存储池设定独立冗余磁盘阵列结构;

获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录;

基于所述文件的读取操作记录,对所述本地磁盘存储池中的文件进行文件过滤,将过滤得到的文件传输至高速磁盘存储池中,当接收到所述过滤得到的文件的读取请求时,重定向至所述过滤得到的文件进行读取。

可选的,在本发明第一方面的第一种实现方式中,所述根据预设的文件动态划分规则,将待存储的文件进行划分后存储到对应的存储池包括:

获取所有待存储文件预设期望访问频率参数,根据所述期望访问频率参数,将所述待存储文件划分为高频访问文件类和低频访问文件类;

将所述高频访问文件类中的文件顺序写入所述高速磁盘存储池中的存储基元,将所述低频访问文件类中的文件顺序写入所述本地磁盘存储池中的存储基元;

根据所述文件在所述存储基元的起始地址和容量大小,确定所述文件所属的文件组以及文件在该文件组内的序号,所述文件组包含至少两个顺序存储的文件;

以所述文件组的标识号与文件的序号为索引,建立所述索引与文件的文件名之间的对应关系。

可选的,在本发明第一方面的第二种实现方式中,所述获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录包括:

获取文件读取请求,其中,所述文件读取请求中包括待读取文件所处的目标虚拟磁盘分区及所述待读取文件的虚拟逻辑地址;

根据虚拟磁盘分区与物理磁盘分区的映射关系,确定所述目标虚拟磁盘分区对应的目标物理磁盘分区;

根据所述待读取文件的虚拟逻辑地址和所述文件读取请求,在所述目标物理磁盘分区执行相应的文件读取操作。

可选的,在本发明第一方面的第三种实现方式中,所述基于所述文件的读取操作记录对所述本地磁盘存储池中的文件进行文件过滤,将过滤得到的文件传输到高速磁盘存储池中,当接收到所述过滤得到的文件的读取请求时,重定向至所述过滤得到的文件进行读取包括:

从所述文件的读取操作记录中,获取所述本地磁盘存储池中所有文件在预设时间段内的读取次数;

若所述读取次数大于预设第一阈值,则将读取次数大于所述第一阈值的文件传输至所述高速磁盘存储池中,并在内存中生成该读取的文件在高速磁盘存储池中的存储位置记录;

当再次读取所述读取次数大于所述第一阈值的文件时,根据所述读取次数大于所述第一阈值的文件在高速磁盘存储池中的存储位置记录,直接重定向至对应的文件进行读取。

可选的,在本发明第一方面的第四种实现方式中,在所述根据所述待读取文件的虚拟逻辑地址和所述文件读取请求,在所述目标物理磁盘分区执行相应的文件读取操作之后,还包括:

获取所述高速磁盘存储池中的每个文件的访问频率;

判断各文件的访问频率是否小于阈值;

若所述访问频率小于预置阈值,则删除访问频率小于阈值对应的文件。

可选的,在本发明第一方面的第五种实现方式中,在当再次读取所述读取次数大于所述第一阈值的文件时,根据所述读取次数大于所述第一阈值的文件在高速磁盘存储池中的存储位置记录,直接重定向至对应的文件进行读取之后,还包括:

接收文件覆盖写请求;

根据所述覆盖写请求,确定待覆盖的文件以及所述待覆盖的文件在内存中的存储位置记录;

删除内存中所述待覆盖的文件的存储位置记录;

从高速磁盘存储池中删除所述待覆盖的文件并写入新的文件。

本发明第二方面提供了一种海量小文件存取优化装置,包括:

文件存储模块,用于根据预设的文件动态划分规则,将待存储的文件进行划分后存储到对应存储池,所述存储池包括本地磁盘存储池和高速磁盘存储池;

磁盘结构优化模块,用于基于磁盘阵列技术为所述高速磁盘存储池设定独立冗余磁盘阵列结构;

文件读取模块,用于获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录;

文件存取优化模块,用于基于所述文件的读取操作记录,对所述本地磁盘存储池中的文件进行文件过滤,将过滤得到的文件传输至高速磁盘存储池中,当接收到所述过滤得到的文件的读取请求时,重定向至所述过滤得到的文件进行读取。

可选的,在本发明第二方面的第一种实现方式中,所述文件存储模块具体用于:

文件划分单元,用于获取所有待存储文件预设期望访问频率参数,根据所述期望访问频率参数,将所述待存储文件划分为高频访问文件类和低频访问文件类;

文件写入单元,用于将所述高频访问文件类中的文件顺序写入所述高速磁盘存储池中的存储基元,将所述低频访问文件类中的文件顺序写入所述本地磁盘存储池中的存储基元;

索引获取单元,用于根据所述文件在所述存储基元的起始地址和容量大小,确定所述文件所属的文件组以及文件在该文件组内的序号,所述文件组包含至少两个顺序存储的文件;

索引关联单元,用于以所述文件组的标识号与文件的序号为索引,建立所述索引与文件的文件名之间的对应关系。

可选的,在本发明第二方面的第二种实现方式中,所述文件读取模块具体用于:

请求获取单元,用于获取文件读取请求,其中,所述文件读取请求中包括待读取文件所处的目标虚拟磁盘分区及所述待读取文件的虚拟逻辑地址;

分区获取单元,用于根据虚拟磁盘分区与物理磁盘分区的映射关系,确定所述目标虚拟磁盘分区对应的目标物理磁盘分区;

文件读取单元,用于根据所述待读取文件的虚拟逻辑地址和所述文件读取请求,在所述目标物理磁盘分区执行相应的文件读取操作。

可选的,在本发明第二方面的第三种实现方式中,所述文件读取模块具体还用于:

获取所述高速磁盘存储池中的每个文件的访问频率;

判断各文件的访问频率是否小于阈值;

若所述访问频率小于预置阈值,则删除访问频率小于阈值对应的文件。

可选的,在本发明第二方面的第四种实现方式中,所述文件存取优化模块具体用于:

读取次数获取单元,用于从所述文件的读取操作记录中,获取所述本地磁盘存储池中所有文件在预设时间段内的读取次数;

数据传输单元,用于若所述读取次数大于预设第一阈值,则将读取次数大于所述第一阈值的文件传输至所述高速磁盘存储池中,并在内存中生成该读取的文件在高速磁盘存储池中的存储位置记录;

重定向读取单元,用于当再次读取所述读取次数大于所述第一阈值的文件时,根据所述读取次数大于所述第一阈值的文件在高速磁盘存储池中的存储位置记录,直接重定向至对应的文件进行读取。

可选的,在本发明第二方面的第五种实现方式中,所述文件存取优化模块具体还用于:

接收文件覆盖写请求;

根据所述覆盖写请求,确定待覆盖的文件以及所述待覆盖的文件在内存中的存储位置记录;

删除内存中所述待覆盖的文件的存储位置记录;

从高速磁盘存储池中删除所述待覆盖的文件并写入新的文件。

本发明第三方面提供了一种海量小文件存取优化设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述海量小文件存取优化设备执行上述的海量小文件存取优化方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的海量小文件存取优化方法。

本发明提供的技术方案中,海量小文件存取优化通过预设的动态划分规则将待存储文件划分到本地磁盘存储池和高速磁盘存储池,其次通过高速磁盘存储池设定磁盘阵列结构,从而提升高速磁盘存储池的性能,随后对本地磁盘存储池中的文件进行读取并生成相应的文件读取记录,最后动态监测该文件读取记录,将读取次数大于预设阈值的文件迁移至高速磁盘存储池中,并在内存中生成对应文件的存储位置记录,当接收到这些迁移文件的读取请求时,根据内存中存储位置记录直接重定向到该文件进行读取,高速磁盘存储池辅助本地磁盘存储池进行高频访问文件的存储和读取,降低了本地磁盘访问的I/O数量,并且高速磁盘拥有更好的性能,文件读取速度会更快,从而提升了本地文件访问性能。

附图说明

图1为本发明实施例中海量小文件存取优化方法的第一个实施例示意图;

图2为本发明实施例中海量小文件存取优化方法的第二个实施例示意图;

图3为本发明实施例中海量小文件存取优化方法的第三个实施例示意图;

图4为本发明实施例中海量小文件存取优化装置的一个实施例示意图;

图5为本发明实施例中海量小文件存取优化装置的另一个实施例示意图;

图6为本发明实施例中海量小文件存取优化设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种海量小文件存取优化方法、装置、设备及存储介质,可以普遍使用于任意海量小文件的存取场景。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中海量小文件存取优化方法的一个实施例包括:

101、根据预设的文件动态划分规则,将待存储的文件进行划分后存储到对应的存储池,所述存储池包括本地磁盘存储池和高速磁盘存储池;

本地磁盘存储池为常用机械硬盘,高速磁盘存储池可以是SSD(固态硬盘)或者其他闪存盘。“文件动态划分规则”是一种按照需求变动的规则,分类标准是文件的期望访问频率(Expected access frequency),在这里通过所述“文件动态划分规则”将所有的待存储文件分为了两类,第一类是“期望访问频率高”的文件,第二类是“期望访问频率低”的文件。其中,“期望访问频率”是根据最近一段时间文件实际访问的次数算出,并通过文本进行了记录备份,例如规定将最近5分钟内文件的访问频次作为期望访问频率参数的确定方式,通过将期望访问频率和设定的阈值进行比较,可以确定期望访问频率是高还是低。

对于第一类“期望访问频率高”的文件,将这类文件存储于高速磁盘存储池中,因为这类文件的访问频率高,会给磁盘带来较大的压力,而高速磁盘存储池(SSD)相比于本地磁盘存储池(机械硬盘)的性能较好,可以通过充放电来识别二进制位。对于第二类“期望访问频率低”的文件,这类文件存储于本地磁盘存储池中,访问频率低对磁盘的性能要求也同时降低。

需要注意的是,在实际运维的时候不会一块机械盘同时配备一个高速磁盘,一方面是造价不允许,一方面是实际也没那么多文件需要高速硬盘来缓存。秉承着不浪费,程序尽量做到按需配置,通过对高速磁盘来划分逻辑卷,比如前期一个磁盘可以用30G的固态硬盘,根据实际需要来动态扩展。

102、基于磁盘阵列技术为所述高速磁盘存储池设定独立冗余磁盘阵列结构;

RAID是磁盘阵列(Redundant Arrays of Inexpensive Disks),原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数据的安全性。磁盘阵列是由多个磁盘组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查的观念,在数组中任一颗硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

例如,在实际的运维过程中发现高速磁盘坏掉之后,所有磁盘的缓存将失效,因为一个机器上公用一块高速磁盘来做缓存,会导致整个业务系统缓慢,影响线上用户的请求。对于这种单点故障,通过给高速磁盘做raid1来避免这种局面,如果其中一块坏掉,还有一块可以提供服务,做好报警措施,及时更换坏的那块高速磁盘。做Raid目前最广泛的方式,是采用硬Raid卡,先将硬盘接入到Raid控制器上,Raid控制器再接入到系统PCIE总线上,最后在系统设定中更改硬盘模式。

103、获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录;

本实施例对磁盘读取文件的方式并不做限定,磁盘读取文件的方式取决于文件的存储方式,例如是基于裸盘写入,可以根据文件标识找到对应的索引,索引里面可以存储的是偏移量(offset)和长度(length),根据这两个值就可以读取;也可以基于文件系统,比如XFS来存储,这个时候直接根据文件标识作为文件名就可以读取,具体内部细节是由这里的文件系统来完成。具体在什么盘,由上层路由来决定。由存储池对应的程序(osd)记录每一次文件的读取操作,包括文件名称,读取时间等。

在本实施例中,其中读取请求包括待读取文件所处的虚拟磁盘分区和待读取文件的索引,其次根据虚拟磁盘分区确定对应的物理磁盘分区,然后根据所述待读取文件的索引在对应的物理磁盘内的分区里查找到相应的文件,执行读取操作。

例如读取请求为“A盘/11501”,而A盘对应的真实物理磁盘为SSD中逻辑卷G,那么在逻辑卷G中根据索引“11501”查找到相应的文件,例如索引号定义的规则为“文件组标识号+文件序号”,那么可以确定的是,待读取文件的所述文件组标识号为“1”,待读取文件的文件序号为“1501”。

在本实施例中,所述103还包括以下步骤:

获取文件读取请求,其中,所述文件读取请求中包括待读取文件所处的目标虚拟磁盘分区及所述待读取文件的虚拟逻辑地址;

根据虚拟磁盘分区与物理磁盘分区的映射关系,确定所述目标虚拟磁盘分区对应的目标物理磁盘分区;

根据所述待读取文件的虚拟逻辑地址和所述文件读取请求,在所述目标物理磁盘分区执行相应的文件读取操作。

在需要对虚拟磁盘分区上的文件执行读取时,可以向终端发起文件读取请求,在文件读取请求中包含有待读取文件所处的目标虚拟磁盘分区,也即虚拟磁盘分区中的某个分区,例如,在终端A上展示的虚拟磁盘分区包括分区1、分区2和分区3,在对分区3上执行某个文件的读操作时,则分区3即为目标磁盘分区。

在文件读取请求中还可以包括待读取文件的虚拟逻辑地址,也即目标虚拟磁盘分区上的逻辑地址,通过虚拟逻辑地址可以明确待读取文件的索引、起始位置和读取长度等等,从而可以与物理磁盘分区相对应,以在物理磁盘分区上执行相应的读取操作。

在系统中预先存储有虚拟磁盘分区与物理磁盘分区的映射关系,例如,物理磁盘分区包括分区a、分区b和分区c,虚拟磁盘分区包括分区1、分区2和分区3,分区a与分区2对应,分区b与分区1对应,分区c域分区3对应。当然,在移动终端系统中还可以为上述映射关系创建数据库,以数据库的形式保存上述映射关系。在获取待读取文件所处的目标虚拟磁盘分区之后,可以根据虚拟磁盘分区与物理磁盘分区的映射关系,确定出与目标虚拟磁盘分区对应的目标物理磁盘分区。

在系统中还保存有虚拟逻辑地址与物理逻辑地址的对应关系,在根据文件读取请求获取待读取文件的虚拟逻辑地址(即待读取文件在目标虚拟磁盘分区上所处的地址)之后,可以根据虚拟逻辑地址匹配得到物理逻辑地址,即目标物理磁盘分区上的物理逻辑地址,进而根据物理逻辑地址可以确定与待读取文件对应的目标物理磁盘分区上的目标文件所处的物理逻辑地址,也即目标文件的起始位置。文件读取请求可以包含有对目标文件的读操作,如在目标文件中读取指定长度的数据,或从目标文件的某个字节开始写入指定长度的数据等等操作。

在本实施例中,在所述103之后还包括:

获取所述高速磁盘存储池中的每个文件的访问频率;

判断各文件的访问频率是否小于阈值;

若所述访问频率小于预置阈值,则删除访问频率小于阈值对应的文件。

考虑到高速磁盘的空间有限性,需要定时对磁盘空间进行清理。本实施例中通过将访问频次记录在每个存储对应的程序(osd)的内存里面,比如统计每分钟的文件的访问频次,如果超过一定频次阈值,就发生到高速磁盘的迁移,如果低于某个频次阈值就可以把磁盘里面的内容标记为失效,触发对应的磁盘内容删除操作,这样的一个好处是无需花费扫描日志的代价就可以达到应用的效果,即使对应程序重启,可以把高速磁盘里面对应的缓存全部标记为失效,触发回收的过程,其中所述的频次阈值可以根据需求进行做适应性的改变。

例如高速磁盘osd中文件a和文件b的访问频次分别为10次/5分钟,6次/5分钟,系统下设定的频次阈值为8次/5分钟,那么文件a的访问频次超过了设定的频次阈值,触发磁盘内容的迁移机制,对于文件b而言,其访问频次低于设定的频次阈值,文件b则被标记为失效,当检测到磁盘内存在失效内容时,触发磁盘的删除操作。

104、基于所述文件的读取操作记录,对所述本地磁盘存储池中的文件进行文件过滤,将过滤得到的文件传输至高速磁盘存储池中,当接收到所述过滤得到的文件的读取请求时,重定向至所述过滤得到的文件进行读取;

为了降低本地机械磁盘的访问压力,尽可能将访问频繁的文件转移到高性能的高速磁盘上进行读取。本实施例中通过加速检测确定一个文件是否属于频繁访问,本实例例中通过统计访问次数与阈值比较的方式确定。通过该方式将本地磁盘存储池中的访问频繁文件过滤出来并将它们传输到高性能的高速磁盘存储池中,并在内存中记录这些文件传输到高速磁盘存储池中的位置,当后续对这些文件进行访问读取时,直接读取内存中保存的位置记录,在位置记录中的地址中查找到该文件并进行读取。

在本实施例中,在所述104之后还包括:

接收文件覆盖写请求;

根据所述覆盖写请求,确定待覆盖的文件以及所述待覆盖的文件在内存中的存储位置记录;

删除内存中所述待覆盖的文件的存储位置记录;

从高速磁盘存储池中删除所述待覆盖的文件并写入新的文件。

在上述步骤中,若本地磁盘中的文件为访问频繁的文件,那么则将该文件传输一份到高速磁盘中,所以一份文件可能存在本地磁盘中也可能存在高速磁盘中,如果同时都存在就要注意文件一致性的问题。如果接收到覆盖写的请求时,那么这种情况下需要对本地磁盘存储池中的文件和高速磁盘存储池中的备份文件同时进行修改,否则用户可能读取到错误的数据。对于某个文件需要覆盖写这种情况,本实施例中通过在内存中将该文件的地址缓存记录删除,同时异步向高速磁盘(SSD)发出删除指令,删除该文件在高速磁盘(SSD)中存储的备份文件。

本发明在传统的本地机械磁盘的基础上添加了一个高速磁盘作为辅助磁盘,高速磁盘辅助本地磁盘进行高频访问文件的存储和读取,降低了本地磁盘访问的I/O数量,并且高速磁盘拥有更好的性能,文件读取速度会更快,从而提升了本地文件访问性能。

请参阅图2,本发明实施例中海量小文件存取优化方法的另一个实施例包括:

201、获取所有待存储文件预设期望访问频率参数,根据所述期望访问频率参数,将所述待存储文件划分为高频访问文件类和低频访问文件类;

对于每一个待存储的文件来说,都存在一个对应的期望访问频率参数,该参数由是根据最近一段时间文件实际访问的次数算出,并通过文本进行了记录备份,例如规定将最近5分钟内文件的访问频次作为期望访问频率参数的确定方式,当需要获取这个参数的时候仅需要从记录文件中获取对应的数据字段。其次,将获取到的期望访问频率参数与预先设定的阈值进行数值大小的比较,根据比较的结果为对应的文件添加相应的标识,不限于文件名标识、数据标识等方式,最终确定文件所属的类别。

例如,获取到记录文件中评估的文件a的期望访问频率为0.6,文件b的期望访问频率为0.3,预先设定的阈值为0.5,将文件a的期望访问频率、文件b的期望访问频率与阈值0.5进行数值比较,比较结果为文件a的期望访问频率大于阈值0.5,文件b的期望访问频率小于阈值0.5,根据此结果为文件a添加文件名标识,例如添加文件名前缀A-,为文件b添加文件添加文件名标识B-,最终得到两类文件:A类:文件A-a,B类:文件B-b。

202、将所述高频访问文件类中的文件顺序写入所述高速磁盘存储池中的存储基元,将所述低频访问文件类中的文件顺序写入所述本地磁盘存储池中的存储基元;

存储基元是用于存储数据的一个基本存储单位。在本实施例中存储基元指存储磁盘上的存储块。接收待存储的文件后,可随机选择一个存储基元进行写入操作,也可按照一定的“选择规则”有针对性地选择一个“恰当”的存储基元进行写入操作。这里的“选择规则”可以体现为多种具体形式,比如根据存储基元的存储空间占用情况,选择空闲空间较大的存储基元用于写入文件,还比如根据存储基元的访问繁忙程度、数据接收处理能力等负载信息,选择一个负载较轻的存储基元用于写入文件等等,通过这些“选择规则”实现写入的负载均衡。当将存储基元的负载信息作为存储基元的选择决定因素时,为了提高存储基元的选择效率,可另行维护一个高速缓存,该缓存实时地收集各存储基元的负载信息,收集方式可以是存储基元负载发生变化后即主动上报自己的负载情况,也可以由缓存周期性地发起负载询问请求,由存储基元返回自身的负载信息,当有文件需要写入文件时,先查询缓存内存储的存储基元的负载情况,根据查询结果选择一个负载较轻的存储基元,作为写入文件的存储基元。实际应用过程中,可通过DataService(数据管理服务)程序执行写操作。值得注意的是:本实施例在将接收的文件写入存储基元时以顺序的方式写入,以便后续操作准确获得文件在文件组内的序号。

因为高频文件类中的文件访问频率高,而文件访问频率高会为磁盘带来一定的读写压力,所以选择将高频文件类中的文件全部存储于高性能的高速磁盘存储池中;而对于低频文件类中的文件来说,它们对应的文件访问频率不会太高,本地磁盘存储池(机械盘)足以应付这样的压力,不会造成硬盘过热,系统卡顿等硬盘带来的系统异常状况。

203、根据所述文件在所述存储基元的起始地址和容量大小,确定所述文件所属的文件组以及文件在该文件组内的序号,所述文件组包含至少两个顺序存储的文件;

将文件写入存储基元,整个文件的存储过程并未完成,存储的目的在于访问,因此,需要建立访问时的路径。文件存储到存储基元后,将返回文件在存储基元上的起始地址和文件的容量大小,文件的容量大小可通过对文件的起始地址和结束地址作差得到,也可通过直接解析文件得到。获得文件的起始地址和容量大小后,即可将该起始地址和文件组的预设起始地址和容量大小进行比较,从而确定该文件存储的文件组的标识号,以及文件在该文件组内的序号。这里的“文件组”是对多个顺序存储的文件的统称,它对应一个虚拟的存储空间,它的预设起始地址也是该文件组内的第一个文件的起始地址,它的结束地址是该文件组内的最后一个文件的结束地址。

比如,文件1在存储基元1上占用的地址为1000~1500(为便于说明,这里以十进制表示地址空间),文件2在存储基元1上占用的地址为1501~1800,文件3在存储基元1上占用的地址为1801~2000,如果文件组1的预设大小为1000,则该文件组1内包括三个文件,该文件组的起始地址为第一个文件(文件1)的起始地址即1000,其结束地址为第三个文件(文件3)的结束地址即2000。在该例中,假设还有文件组2、文件组3,其预设存储空间分别为2001~2600、2601~3000。如果文件2写入到存储基元1后,通过将其起始地址和容量大小与文件组的起始地址和容量大小进行比较,即可判断文件2所在的文件组标识号,即文件2属于文件组1。

同样的道理,可获得文件在该文件组内的序号,该序号可以直接表现为文件的起始地址相对于文件组起始地址的偏移量,如本例中文件2的序号为1501,由于文件顺序写入存储基元,所以该序号逐步增加,不会发生错乱。此外。文件的序号也可以编制为连续增长的自然序列,该自然序列与文件的偏移量存在对应关系。

204、以所述文件组的标识号与文件的序号为索引,建立所述索引与文件的文件名之间的对应关系。

通过上述步骤得到文件所属文件组的标识号与文件在该组内的序号后,即可以“文件组标识号与文件序号”为索引,建立其与文件的文件名之间的对应关系。具体的索引可表现为:“文件组标识号+文件序号”、“文件序号+文件组标识号”等等。比如,文件2的所属文件组标识号为1,文件1在该文件组内的序号为1501,则可建立“11501”与文件2之间的索引表。如果进行文件1的访问,先查询该索引表,得到文件2对应的索引“11501”,第一个数字“1”解析为文件组号,第二串数字“1501”解析为文件1在文件组内的序号,根据这两个参数即可从存储基元上读取文件2,从而实现访问过程。构建出“文件组的标识号与文件的序号”与文件的文件名之间的索引后,文件的存储过程结束。

205、基于磁盘阵列技术为所述高速磁盘存储池设定独立冗余磁盘阵列结构;

206、获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录;

207、基于所述文件的读取操作记录,对所述本地磁盘存储池中的文件进行文件过滤,将过滤得到的文件传输至高速磁盘存储池中,当接收到所述过滤得到的文件的读取请求时,重定向至所述过滤得到的文件进行读取。

在本实施例,详细描述了待存储文件的划分以及存储方法。通过将待存储文件按照期望访问频率参数划分为高低频访问文件后储池于不同的磁盘,实现了文件的分类存储,不仅方便了文件的读取,从而提升文件读取速度,而且减少了本地磁盘的I/O读取数量,提升了本地磁盘性能。

请参阅图3,本发明实施例中海量小文件存取优化方法的第三个实施例包括:

301、根据预设的文件动态划分规则,将待存储的文件进行划分后存储到对应存储池,所述存储池包括本地磁盘存储池和高速磁盘存储池;

302、基于磁盘阵列技术为所述高速磁盘存储池设定独立冗余磁盘阵列结构;

303、获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录;

304、从所述文件的读取操作记录中,获取所述本地磁盘存储池中所有文件在预设时间段内的读取次数;

本实例中,通过将高速磁盘(SSD)当做内存进行缓存数据,在内存中对本地磁盘存储池中的所有文件进行统计维护,每一次的文件访问记录都做缓存。

305、若所述读取次数大于预设第一阈值,则将读取次数大于所述第一阈值的文件传输至所述高速磁盘存储池中,并在内存中生成该读取的文件在高速磁盘存储池中的存储位置记录;

当监测到某一文件在一段时间内的读取次数大于了预设的阈值时,即确定该文件属于访问频繁的文件,将该文件传输到高速磁盘(SSD)中,同时在内存中缓存该文件在高速磁盘(SSD)中的保存地址(逻辑卷+文件组标识号+文件序号)。

306、当再次读取所述读取次数大于所述第一阈值的文件时,根据所述读取次数大于所述第一阈值的文件在高速磁盘存储池中的存储位置记录,直接重定向至对应的文件进行读取。

当再次访问该文件时先在内存中查看是否存在该文件的地址缓存记录,如果存在地址缓存记录,则直接访问地址缓存记录中的文件地址,读取到该文件在高速磁盘中的备份文件。

在本实施例中,详细描述了高频文件迁移到高速磁盘后的重定向读取过程。重定向读取基于高速磁盘进行读取,文件读取速度更快,且不影响本地磁盘的性能。

上面对本发明实施例中海量小文件存取优化方法进行了描述,下面对本发明实施例中海量小文件存取优化装置进行描述,请参阅图4,本发明实施例中海量小文件存取优化装置的一个实施例包括:

文件存储模块401,用于根据预设的文件动态划分规则,将待存储的文件进行划分后存储到对应存储池,所述存储池包括本地磁盘存储池和高速磁盘存储池;

磁盘结构优化模块402,用于基于磁盘阵列技术为所述高速磁盘存储池设定独立冗余磁盘阵列结构;

文件读取模块403,用于获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录;

文件存取优化模块404,用于基于所述文件的读取操作记录,对所述本地磁盘存储池中的文件进行文件过滤,将筛选得到的文件传输至高速磁盘存储池中,当接收到所述筛选得到的文件的读取请求时,重定向至所述筛选得到的文件进行读取。

本发明在传统的本地机械磁盘的基础上添加了一个高速磁盘作为辅助磁盘,高速磁盘辅助本地磁盘进行高频访问文件的存储和读取,降低了本地磁盘访问的I/O数量,并且高速磁盘拥有更好的性能,文件读取速度会更快,从而提升了本地文件访问性能。

参阅图5,本发明实施例中海量小文件存取优化装置的另一个实施例包括:

文件存储模块501,用于根据预设的文件动态划分规则,将待存储的文件进行划分后存储到对应存储池,所述存储池包括本地磁盘存储池和高速磁盘存储池;

磁盘结构优化模块502,用于基于磁盘阵列技术为所述高速磁盘存储池设定独立冗余磁盘阵列结构;

文件读取模块503,用于获取文件的读取请求,并根据所述读取请求,在所述存储池中执行相应的文件读取操作,并生成文件的读取操作记录;

文件存取优化模块504,用于基于所述文件的读取操作记录,对所述本地磁盘存储池中的文件进行文件过滤,将筛选得到的文件传输至高速磁盘存储池中,当接收到所述筛选得到的文件的读取请求时,重定向至所述筛选得到的文件进行读取。

其中,所述文件存储模块501包括:

文件划分单元5011,用于获取所有待存储文件预设期望访问频率参数,根据所述期望访问频率参数,将所述待存储文件划分为高频访问文件类和低频访问文件类;

文件写入单元5012,用于将所述高频访问文件类中的文件顺序写入所述高速磁盘存储池中的存储基元,将所述低频访问文件类中的文件顺序写入所述本地磁盘存储池中的存储基元;

索引获取单元5013,用于根据所述文件在所述存储基元的起始地址和容量大小,确定所述文件所属的文件组以及文件在该文件组内的序号,所述文件组包含至少两个顺序存储的文件;

索引关联单元5014,用于以所述文件组的标识号与文件的序号为索引,建立所述索引与文件的文件名之间的对应关系。

其中,所述文件读取模块503包括:

请求获取单元5031,用于获取文件读取请求,其中,所述文件读取请求中包括待读取文件所处的目标虚拟磁盘分区及所述待读取文件的虚拟逻辑地址;

分区获取单元5032,用于根据虚拟磁盘分区与物理磁盘分区的映射关系,确定所述目标虚拟磁盘分区对应的目标物理磁盘分区;

文件读取单元5033,用于根据所述待读取文件的虚拟逻辑地址和所述文件读取请求,在所述目标物理磁盘分区执行相应的文件读取操作。

可选的,所述文件读取模块503具体还用于:

获取所述高速磁盘存储池中的每个文件的访问频率;

判断各文件的访问频率是否小于阈值;

若所述访问频率小于预置阈值,则删除访问频率小于阈值对应的文件。

其中,所述文件存取优化模块504包括:

读取次数获取单元5041,用于从所述文件的读取操作记录中,获取所述本地磁盘存储池中所有文件在预设时间段内的读取次数;

数据传输单元5042,用于若所述读取次数大于预设第一阈值,则将读取次数大于所述第一阈值的文件传输至所述高速磁盘存储池中,并在内存中生成该读取的文件在高速磁盘存储池中的存储位置记录;

重定向读取单元5043,用于当再次读取所述读取次数大于所述第一阈值的文件时,根据所述读取次数大于所述第一阈值的文件在高速磁盘存储池中的存储位置记录,直接重定向至对应的文件进行读取。

可选的,所述文件存取优化模块504具体还用于:

接收文件覆盖写请求;

根据所述覆盖写请求,确定待覆盖的文件以及所述待覆盖的文件在内存中的存储位置记录;

删除内存中所述待覆盖的文件的存储位置记录;

从高速磁盘存储池中删除所述待覆盖的文件并写入新的文件。

本发明通过将待存储文件按照期望访问频率参数划分为高低频访问文件后储池于不同的磁盘,按照划分结果存储于不同磁盘方便文件读取。同时,重定向读取基于高速磁盘进行读取,文件读取速度更快,且不影响本地磁盘的性能。

上面图4和图5从模块化功能实体的角度对本发明实施例中的海量小文件存取优化装置进行详细描述,下面从硬件处理的角度对本发明实施例中海量小文件存取优化设备进行详细描述。

图6是本发明实施例提供的一种海量小文件存取优化设备的结构示意图,该海量小文件存取优化设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)610(例如,一个或一个以上处理器)和存储器620,一个或一个以上存储应用程序633或数据632的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器620和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对海量小文件存取优化设备600中的一系列指令操作。更进一步地,处理器610可以设置为与存储介质630通信,在海量小文件存取优化设备600上执行存储介质630中的一系列指令操作。

海量小文件存取优化设备600还可以包括一个或一个以上电源640,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口660,和/或,一个或一个以上操作系统631,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图6示出的海量小文件存取优化设备结构并不构成对海量小文件存取优化设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种海量小文件存取优化设备,所述海量小文件存取优化设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述海量小文件存取优化方法的步骤。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述海量小文件存取优化方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号