一种云存储中小文件的合并方法及装置与流程

文档序号:11250720阅读:699来源:国知局
一种云存储中小文件的合并方法及装置与流程

本发明涉及数据存储技术领域,特别涉及一种云存储中小文件的合并方法及装置。



背景技术:

随着现代社会科技的发展,云存储作为一种新兴的网络存储技术已经广泛应用到人们的生活中。hdfs(hadoopdistributedfilesystem)是一种具有高度容错性质的分布式文件系统模型,可以部署在支持java运行环境的普通机器或虚拟机上,能够提供高吞吐量的数据访问,非常适合部署云存储平台。

hdfs采用主从式架构设计模式(master/slavearchitecture),一个名称节点(namenode)和若干数据节点(datanode)构成hdfs集群。hdfs的这种单名称节点的设计极大地简化了文件系统的结构,然而也因此引发了hdfs的小文件存储效率低的问题。

现有技术中,解决如基于hdfs的存储系统的云存储中小文件存储效率问题的主流思想是将小文件合并或组合为大文件,目前主要的方法分为2种,一种是利用hadoop归档(hadooparchive,har)等技术实现小文件合并的方法,另一种则是针对具体的应用而提出的文件组合方法。这两种方法都是基于文件的合并或组合来解决小文件存储效率不高的问题,然而这两种方法均存在以下问题:未考虑云存储系统的负载状况,云存储作为一个完整的系统,在提高小文件存储效率的同时,也应该考虑到系统的负载状况,因为不管是文件合并还是文件组合,对与如hdfs的云存储系统而言都是一个额外的操作;并且未对小文件合并规模进行研究,即尚未确定多少个小文件合并为一个大文件可以使系统性能达到最优。因此,如何根据云存储系统的负载状况,对达到一定规模小文件进行合并,实现云存储系统的负载均衡,优化小文件存储效率,是现今急需解决的问题。



技术实现要素:

本发明的目的是提供一种云存储中小文件的合并方法及装置,以采用序列文件技术将小文件合并为大文件,并利用系统负载预测算法实现系统的负载均衡,优化小文件存储效率。

为解决上述技术问题,本发明提供一种云存储中小文件的合并方法,包括:

接收sfq发送的队列满信号;

通过系统负载预测算法计算系统的负载;

判断所述负载是否小于第一阈值;

若否,则将当前时刻的所述sfq存储的小文件的索引号存储至对应的一个bq;其中,每个bq存储各自对应的一个时刻的所述sfq的索引号;

若是,则合并所述sfq存储的索引号对应的小文件,或合并所述sfq和全部bq各自存储的索引号对应的小文件。

可选的,所述将当前时刻的所述sfq存储的小文件的索引号存储至对应的一个bq,包括:

判断已存储索引号的bq是否达到预设数量;

若是,则合并所述sfq和全部bq各自存储的索引号对应的小文件;

若否,则将当前时刻的所述sfq存储的索引号存储至对应的一个bq。

可选的,所述接收sfq发送的队列满信号之前,还包括:

基于序列文件技术,将用户上传的小文件的所述索引号存储至所述sfq;

所述sfq存储的所述索引号的数量达到第二阈值时,发送所述队列满信号。

可选的,所述通过系统负载预测算法计算系统的负载,包括:

通过基于层次分析法的系统负载预测算法计算所述负载。

可选的,所述接收sfq发送的队列满信号,包括:

识别接收到的信号;其中,所述信号包括所述队列满信号和定时器发送的时间到信号;

若所述信号为所述队列满信号,则执行所述通过系统负载预测算法计算系统的负载的步骤;

若所述信号为所述时间到信号,则通过所述系统负载预测算法计算所述负载;

判断所述负载是否小于所述第一阈值;

若所述负载小于所述第一阈值,则合并全部bq各自存储的索引号对应的小文件。

可选的,所述识别接收到的信号之前,还包括:

所述定时器按预设时间间隔发送所述时间到信号。

此外,本发明还提供了一种云存储中小文件的合并装置,包括:

接收模块,用于接收sfq发送的队列满信号;

计算模块,用于通过系统负载预测算法计算系统的负载;

判断模块,用于判断所述负载是否小于第一阈值;

存储模块,用于当所述负载不小于所述第一阈值时,将当前时刻的所述sfq存储的小文件的索引号存储至对应的一个bq;其中,每个bq存储各自对应的一个时刻的所述sfq的索引号;

合并模块,用于当所述负载小于所述第一阈值时,合并所述sfq存储的索引号对应的小文件,或合并所述sfq和全部bq各自存储的索引号对应的小文件。

可选的,所述存储模块,包括:

第一判断子模块,用于判断已存储索引号的bq是否达到预设数量;

第一合并子模块,用于当已存储索引号的bq达到所述预设数量时,合并所述sfq和全部bq各自存储的索引号对应的小文件;

存储子模块,用于当已存储索引号的bq未达到所述预设数量时,将当前时刻的所述sfq存储的索引号存储至对应的一个bq。

可选的,该装置还包括:

分类存储模块,用于基于序列文件技术,将用户上传的小文件的所述索引号存储至所述sfq;

发送模块,用于所述sfq存储的所述索引号的数量达到第二阈值时,发送所述队列满信号。

可选的,所述接收模块,包括:

识别子模块,用于识别接收到的信号;若所述信号为所述队列满信号,向所述计算模块发送第一启动信号;若所述信号为所述时间到信号,则向计算子模块发送第二启动信号;

所述计算子模块,用于通过所述系统负载预测算法计算所述负载;

第二判断子模块,用于判断所述负载是否小于所述第一阈值;

第二合并子模块,用于当所述负载小于所述第一阈值时,合并全部bq各自存储的索引号对应的小文件。

本发明所提供的一种云存储中小文件的合并方法,包括:接收sfq发送的队列满信号;通过系统负载预测算法计算系统的负载;判断所述负载是否小于第一阈值;若否,则将当前时刻的所述sfq存储的小文件的索引号存储至对应的一个bq;其中,每个bq存储各自对应的一个时刻的所述sfq的索引号;若是,则合并所述sfq存储的索引号对应的小文件,或合并所述sfq和全部bq各自存储的索引号对应的小文件;

可见,本发明通过接收sfq发送的队列满信号,可以利用sfq(sequencefilequeue,序列文件队列)存储序列文件技术下的小文件的索引号;通过系统负载预测算法计算系统的负载,可以对云存储系统的负载状况进行计算;通过当负载小于第一阈值时,合并sfq存储的索引号对应的小文件,或合并sfq和全部bq(backupqueue,备用队列)各自存储的索引号对应的小文件,可以在系统负载不高的情况下,利用序列文件技术将sfq或每个bq存储的全部索引号各自对应的小文件合并成一个大文件,实现了系统的负载均衡并提高了系统性能,优化了小文件存储效率,提升了用户体验。此外,本发明还提供了云存储中小文件的合并装置,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种云存储中小文件的合并方法的流程图;

图2为本发明实施例所提供的另一种云存储中小文件的合并方法的流程图;

图3为本发明实施例所提供的另一种云存储中小文件的合并方法的处理流程示意图;

图4为本发明实施例所提供的一种云存储中小文件的合并装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种云存储中小文件的合并方法的流程图。该方法可以包括:

步骤101:接收sfq发送的队列满信号。

其中,队列满信号可以为sfq存储的小文件的索引号的数量达到可合并的阈值时发送的信号。对于队列满信号的具体内容,也就是sfq发送的内容,可以由设计人员自行设置,本实施例对此不做任何限制。

可以理解的是,本实施例所提供的方法可以云存储系统中控制小文件进行合并的控制器所执行的方法,还可以在本实施例所提供的方法的基础上加入云存储系统中其他模块执行的步骤,如接收模块基于序列文件技术,将用户上传的小文件的索引号存储至sfq和sfq模块当sfq存储的索引号的数量达到第二阈值时,发送队列满信号。本实施例对此不做任何限制。

需要说明的是,本实施例所提供的方法可以为控制器只接收队列满信号对小文件进行合并,从而达到优化小文件存储效率的目的;还可以为接收队列满信号和时间到信号对小文件进行合并,也就是云存储系统中还包括按预设时间间隔向控制器发送时间到信号的定时器,从而进一步提高云存储系统的负载均衡。本实施例对此不做任何限制。

步骤102:通过系统负载预测算法计算系统的负载。

其中,系统负载预测算法可以为基于层次分析法(analytichierarchyprocess,ahp)的系统负载预测算法,也可以为其他算法,只要可以通过系统负载预测算法计算系统的负载,对于系统负载预测算法的具体内容和类型,本实施例不做任何限制。

可以理解的是,只要可以计算出云存储系统的负载,对于通过系统负载预测算法计算云存储系统的负载的具体方式,本实施例不做任何限制。

步骤103:判断负载是否小于第一阈值;若否,则进入步骤104;若是,则进入步骤105。

其中,第一阈值可以为设计人员自行设置的数值,当云存储系统负载达到该数值时,证明云存储的负载较高。对于第一阈值的具体数值的设置,本实施例不做任何限制。

步骤104:将当前时刻的sfq存储的小文件的索引号存储至对应的一个bq;其中,每个bq存储各自对应的一个时刻的sfq的索引号。

其中,本步骤的目的可以为在系统的负载达到第一阈值时,将当前时刻的sfq存储的索引号放到一个bq,避免在系统负载较高时,进行小文件合并的步骤。

可以理解的是,云存储系统中可以为每个用户建立一个sfq和多个bq,每个bq存储的是不同时刻的sfq存储的多个小文件的索引号。发送存储满信号的sfq或每个bq存储的多个索引号对应的多个小文件可以为合并为一个大文件。

需要说明的是,本步骤中将sfq存储的索引号存储至对应的一个bq,可以为将sfq存储的索引号存储至建立好的一个未存储索引号的bq,也可以为将sfq存储的索引号存储至新建的一个bq,本实施例对此不受任何限制。

优选的,为了避免系统中的bq数量过多,本步骤可以包括判断已存储索引号的bq是否达到预设数量;若已存储索引号的bq达到预设数量,则合并sfq和全部bq各自存储的索引号对应的小文件;若已存储索引号的bq为达到预设数量,则将当前时刻的sfq存储的索引号存储至对应的一个bq。本实施例对此不受任何限制。

步骤105:合并sfq存储的索引号对应的小文件,或合并sfq和全部bq各自存储的索引号对应的小文件。

其中,本步骤可以为合并小文件的步骤,可以根据系统中是否存在已存储索引号的bq对应合并小文件,若系统中不存在已存储索引号的bq,则可以只将sfq存储的索引号对应的小文件合并成一个大文件;若系统中存在已存储索引号的bq,则将每个已存储索引号的bq各自存储的索引号对应的小文件合并成一个大文件,并将sfq存储的索引号对应的小文件合并成一个大文件。

可以理解的是,对于本步骤中合并小文件的具体方式,可以为将sfq存储的索引号合并为一个大文件的索引号,并将每个索引号对应的小文件的内容合并成一个大文件的内容,也可以为其他方式,只要可以将sfq或每个bq存储的索引号对应的小文件合并成一个大文件,对于具体的合并方式,本实施例不做任何限制。

本实施例中,本发明实施例通过接收sfq发送的队列满信号,可以利用sfq存储序列文件技术下的小文件的索引号;通过系统负载预测算法计算系统的负载,可以对云存储系统的负载状况进行计算;通过当负载小于第一阈值时,合并sfq存储的索引号对应的小文件,或合并sfq和全部bq各自存储的索引号对应的小文件,可以在系统负载不高的情况下,利用序列文件技术将sfq或每个bq存储的全部索引号各自对应的小文件合并成一个大文件,实现了系统的负载均衡并提高了系统性能,优化了小文件存储效率,提升了用户体验。

请参考图2和图3,图2为本发明实施例所提供的另一种云存储中小文件的合并方法的流程图;图3为本发明实施例所提供的另一种云存储中小文件的合并方法的处理流程示意图。该方法可以包括:

步骤201:基于序列文件技术,将用户上传的小文件的索引号存储至sfq。

其中,序列文件(sequencefile)是hdfs提供的一种二进制文件技术,这种二进制文件直接将<key,value>对序列化到文件,文件序列化时可实现基于记录或数据块的压缩。在云存储系统中,对二进制文件采用sequencefile技术将小文件合并为大文件,以小文件的索引号为key,内容为value的形式进行合并,合并的同时实现基于数据块的压缩,这样,在节省名称节点内存空间的同时也节省了数据节点的磁盘空间。

具体的,在云存储系统中,本实施例所提供的方法的处理流程可以如图3所示。为提高对小文件的处理效率,云存储系统为可以每个用户建立了3种队列:第1种可以为序列文件队列(sequencefilequeue,sfq),第2种可以为序列文件操作队列(sequencefileoperationqueue,sfoq),第3种可以为备用队列(backupqueue,bq)。其中,sfq用于小文件的合并,sfoq用于对合并后小文件的操作,bq用于操作的小文件数超过sfq或sfoq长度的情况。3种队列的长度可以一致,对于队列长度的具体数值,也就是每个队列存储索引号的数量可以由设计人员根据实用场景和用户需求自行设置,本实施例对此不做任何限制。

需要说明的是,本步骤可以如图3所示,云存储系统的服务器接收用户上传的本地的文件(过程1),对该文件的类型进行判断(过程2),如果是小文件,则将该文件的索引号存储至sfq中(过程3)。对于本步骤中的具体过程,如对文件类型判断的具体方式,可以使用与现有技术相同或相似的方式,也可以使用其他方式,只要可以将接收到的小文件的索引号存储至每个用户对应的sfq中,对于具体的存储过程,本实施例不做任何限制。

步骤202:sfq存储的索引号的数量达到第二阈值时,发送队列满信号。

其中,第二阈值可以为合并成一个大文件的小文件的数量,对于该数量的具体数值的设置,可以由设计人员根据实用场景和用户需求自行设置,本实施例对此不受任何限制。

具体的,本步骤可以如图3中虚线a所示,当sfq存储的索引号的数量达到第二阈值时,也就是sfq满时,向控制器发送队列满信号(qf信号)。

步骤203:定时器按预设时间间隔发送时间到信号。

其中,预设时间间隔可以为设计人员根据实用场景或用户需求设置的判断是否合并小文件的时间间隔,如30min。本实施例对此不做任何限制。

具体的,本步骤可以如图3中虚线b所示,当定时器达到预设时间间隔的时间点时,向控制器发送时间到信号(tu信号)。

步骤204:识别接收到的信号。

可以理解的是,本步骤可以为控制器识别接收的信号,对于具体的识别过程和识别方式,可以由设计人员自行设置,本实施例对此不受任何限制。

步骤205:当信号为队列满信号时,通过系统负载预测算法计算系统的负载。

步骤206:判断负载是否小于第一阈值;若否,则进入步骤207;若是,则进入步骤210。

其中,步骤205和步骤206与步骤102和步骤103相似,在此不再赘述。

可以理解的是,本步骤可以如图3所示,控制器对系统负载进行计算(过程4.2),决定是否进行小文件的合并(过程5)。

步骤207:判断已存储索引号的bq是否达到预设数量;若是,则进入步骤208;若否,则进入步骤209。

可以理解的是,为了避免系统中已存储索引号的bq的数量过多,可以通过本步骤对系统中已存储索引号的bq的数量是否达到预设数量进行判断,然后通过步骤208,在已存储索引号的bq的数量达到预设数量时,合并sfq和全部bq各自存储的索引号对应的小文件。

需要说明的是,对于预设数量的数值的设定,可以由设计人员根据实用场景和用户需求自行设置,本实施例对此不受任何限制。

具体的,本步骤可以如图3所示,控制器读取sfq和bq的相关信息(过程4.1),决定是否进行小文件的合并(过程5)。

步骤208:合并sfq和全部bq各自存储的索引号对应的小文件。

可以理解的是,本步骤的目的是将云存储系统中,该用户上传的全部可合并的小文件合并成对应的大文件。

步骤209:将当前时刻的sfq存储的索引号存储至对应的一个bq。

其中,本步骤的目的是在系统的负载较高且系统中的bq数量不多时,通过本步骤避免对小文件的合并。

步骤210:合并sfq存储的索引号对应的小文件,或合并sfq和全部bq各自存储的索引号对应的小文件。

其中,本步骤与步骤105相似,在此不再赘述。

步骤211:当信号为时间到信号时,通过系统负载预测算法计算负载。

步骤212:判断负载是否小于第一阈值;若是,则进入步骤213;若否,则结束本次流程。

其中,步骤211和步骤212与步骤102和步骤103相似,在此不再赘述。

步骤213:合并全部bq各自存储的索引号对应的小文件。

可以理解的是,本步骤的目的是通过定时器发送的时间到信号,在sfq存储的索引号未达到第二阈值且系统负载不高时,对系统中已存储索引号的bq对应的小文件进行合并,进一步保证系统的负载均衡。

本实施例中,本发明通过判断已存储索引号的bq是否达到预设数量,可以避免云存储系统中已存储索引号的bq的数量过多;通过当信号为时间到信号时,通过系统负载预测算法计算负载,可以在sfq存储的索引号未达到第二阈值且系统负载不高时,对系统中已存储索引号的bq对应的小文件进行合并,进一步保证了系统的负载均衡。

请参考图4,图4为本发明实施例所提供的一种云存储中小文件的合并装置的结构图。该装置可以包括:

接收模块100,用于接收sfq发送的队列满信号;

计算模块200,用于通过系统负载预测算法计算系统的负载;

判断模块300,用于判断负载是否小于第一阈值;

存储模块400,用于当负载不小于第一阈值时,将当前时刻的sfq存储的小文件的索引号存储至对应的一个bq;其中,每个bq存储各自对应的一个时刻的sfq的索引号;

合并模块500,用于当负载小于第一阈值时,合并sfq存储的索引号对应的小文件,或合并sfq和全部bq各自存储的索引号对应的小文件。

可选的,存储模块400,可以包括:

第一判断子模块,用于判断已存储索引号的bq是否达到预设数量;

第一合并子模块,用于当已存储索引号的bq达到预设数量时,合并sfq和全部bq各自存储的索引号对应的小文件;

存储子模块,用于当已存储索引号的bq未达到预设数量时,将当前时刻的sfq存储的索引号存储至对应的一个bq。

可选的,该装置还可以包括:

分类存储模块,用于基于序列文件技术,将用户上传的小文件的索引号存储至sfq;

发送模块,用于sfq存储的索引号的数量达到第二阈值时,发送队列满信号。

可选的,接收模块100,可以包括:

识别子模块,用于识别接收到的信号;若信号为队列满信号,向计算模块发送第一启动信号;若信号为时间到信号,则向计算子模块发送第二启动信号;

计算子模块,用于通过系统负载预测算法计算负载;

第二判断子模块,用于判断负载是否小于第一阈值;

第二合并子模块,用于当负载小于第一阈值时,合并全部bq各自存储的索引号对应的小文件。

本实施例中,本发明通过接收模块100接收sfq发送的队列满信号,可以利用sfq存储序列文件技术下的小文件的索引号;通过计算模块200利用系统负载预测算法计算系统的负载,可以对云存储系统的负载状况进行计算;通过合并模块500当负载小于第一阈值时,合并sfq存储的索引号对应的小文件,或合并sfq和全部bq各自存储的索引号对应的小文件,可以在系统负载不高的情况下,利用序列文件技术将sfq或每个bq存储的全部索引号各自对应的小文件合并成一个大文件,实现了系统的负载均衡并提高了系统性能,优化了小文件存储效率,提升了用户体验。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的云存储中小文件的合并方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1