小文件处理方法及分布式系统与流程

文档序号:17537087发布日期:2019-04-29 14:06阅读:282来源:国知局
小文件处理方法及分布式系统与流程
本申请涉及通信
技术领域
,尤其涉及小文件处理方法及分布式系统。
背景技术
:目前人类已经进入信息化时代,文件尤其是小文件正在呈现爆炸式增长,百万数量级的小文件称为海量小文件。目前采用分布式系统来存储海量小文件。用户终端可以借助于分布式系统访问小文件,可以理解的是,用户终端对不同小文件的访问量是不同的,所以分布式系统中访问量高的小文件经常被调用,而访问量低的小文件通常不被调用。为了防止数据损坏,通常要做冗余处理,而小文件目前的冗余方式,是完整文件的多份拷贝,这种方式占用了大量的存储空间。技术实现要素:鉴于此,本申请提供一种分布式系统及文件处理方法,以采用分布式系统来存储海量小文件。为了实现上述目的,本申请提供了下述技术特征:一种小文件处理方法,应用于分布式系统的存储节点组,所述存储节点组包括元数据服务器和与所述元数据服务器相连多个块数据服务器;所述小文件处理方法包括:所述元数据服务器确定所述存储节点组中小文件的访问量;对于访问量低的小文件减少小文件的备份数量;对于访问量高的小文件增加小文件的备份数量。可选的,在分布式系统中向所述存储节点组存储小文件的情况下,向所述存储节点组中至少三个块数据服务器存储该小文件。可选的,所述对于访问量高的小文件增加小文件的备份数量,包括:所述元数据服务器向访问量高的小文件所属的一块数据服务器发送备份操作指令;所述块数据服务器响应于所述备份操作指令,向所述分布式系统中至少一个其它存储节点组发送该小文件,以供其它存储节点备份所述小文件。可选的,所述对于访问量低的小文件减少小文件的备份数量,包括:所述元数据服务器确定所述存储节点组中访问量低的多个小文件,从所述存储节点组中确定一块数据服务器,向所述块数据服务器发送用于对所述多个小文件进行合并操作的合并操作指令;所述块数据服务器响应于所述合并操作指令,从所述存储节点组中获取到所述多个小文件,合并所述多个小文件为大文件,按大文件存储方式存储所述大文件至所述存储节点组,并删除所述存储节点组中所述多个小文件。可选的,所述合并操作指令包括与所述多个文件一一对应的多个文件标识,每个文件标识对应该文件于所述存储节点组中的所有存储位置;则所述从所述存储节点组中获取到所述多个小文件,包括:所述块数据服务器针对每个文件标识执行下述步骤:基于文件标识对应所有存储位置中任一个存储位置,向该存储位置所属的块数据服务器发送获取指令以获取该存储位置处存储的小文件;则所述删除所述存储节点组中所述多个小文件,包括:所述块数据服务器针对每个文件标识执行下述步骤:基于文件标识对应的所有存储位置,向所有存储位置所属的块数据服务器发送删除指令,以使接收删除指令的块数据服务器删除小文件。可选的,所述元数据服务器设置有存储大文件所使用的预设磁盘存储方式匹配的数据块大小,条带分块数量,与预设磁盘存储方式匹配的多个块数据服务器的服务接口;所述块数据服务器按大文件存储方式存储所述大文件至所述存储节点组,包括:所述块数据服务器向所述元数据服务器请求存储大文件的块数据服务器的服务接口和条带分块数量;所述块数据服务器循环按数据块大小,从所述大文件读取条带分块数量个数据块,对条带分块数量个数据块计算校验位,通过服务接口存储数据块和校验位至块数据服务器;循环上个步骤直到大文件存储至多个块数据服务器中。可选的,所述预设磁盘存储方式包括raid6,在raid6中条带分块数量为n的情况下,所述块数据服务器获取到n+2个块数据服务器的服务接口,其中2个块数据服务器用于存储校验位;则所述块数据服务器按预设数据块大小循环从所述大文件读取条带分块数量个数据块,对条带分块数量个数据块计算校验位,通过服务接口存储数据块和校验位至块数据服务器,包括:所述块数据服务器按预设数据块大小,从所述大文件中连续读取n个条带数据块,并通过n个服务接口顺序存储n个条带数据块至n个块数据服务器中;按raid6校验位计算方式,计算所述n个条带数据块的两个校验位,通过2个服务接口分别存储2个校验位至2个块数据服务器中。可选的,所述块数据服务器还用于确定所述数据块大小对应的计算空间是否大于当前可用内存空间;在所述数据块大小对应的计算空间大于当前可用内存空间情况下,则对条带分块数量个数据块计算校验位包括:将条带分块数量个数据块分别切分成小数据块,以使条带分块数量个数据块组成的条带形成多个小条带,分别计算多个小条带的两个校验位,将多个小条带的相同校验位合并为一大校验位。可选的,所述元数据服务器还用于在确定大文件中条带分块数量个数据块组成的条带中损坏不超过两个数据块的情况下,选择一块数据服务器,向该块数据服务器发送数据块迁移指令;该块数据服务器,用于响应所述数据块迁移指令,根据该条带已有完整数据块和两个校验位恢复已损坏数据块获得恢复数据块,存储所述恢复数据块至状态良好的块数据服务器。可选的,所述元数据服务器还用于在确定小文件损坏情况下,向其它存储该小文件的块数据服务器发送小文件迁移指令;该块数据服务器,用于响应于所述小文件迁移指令,向其它状态良好的块数据服务器发送小文件,以使其它块数据服务器备份所述小文件。一种小文件处理方法,应用于分布式系统中存储节点组,所述小文件处理方法包括:确定存储节点组中小文件的访问量;对于访问量低的小文件减少小文件的备份数量;对于访问量高的小文件增加小文件的备份数量。可选的,所述存储节点组对于小文件至少存储三份。可选的,所述对于访问量高的小文件增加小文件的备份数量,包括:对于访问量高的小文件,向所述分布式系统中其它存储节点备份所述小文件。可选的,所述对于访问量低的小文件减少小文件的备份数量,包括:确定所述存储节点组中访问量低的多个小文件;合并所述多个小文件为大文件;按大文件存储方式存储所述大文件至所述存储节点组;删除所述存储节点组中所述多个小文件。可选的,所述合并操作指令包括与所述多个文件一一对应的多个文件标识;则所述删除所述存储节点组中所述多个小文件,包括:对于每个文件标识,删除所述存储节点组中与文件标识对应的所有小文件。可选的,所述存储节点组设置有存储大文件所使用的预设磁盘存储方式匹配的数据块大小和条带分块数量;则所述按大文件存储方式存储所述大文件至所述存储节点组,包括:循环按数据块大小,从所述大文件读取条带分块数量个数据块,对条带分块数量个数据块计算校验位,存储数据块和校验位;循环上个步骤直到大文件存储完毕。可选的,所述对条带分块数量个数据块计算校验位包括:在所述数据块大小对应的计算空间大于当前可用内存空间情况下,将条带分块数量个数据块分别切分成小数据块,以使条带分块数量个数据块组成的条带形成多个小条带;分别计算多个小条带的两个校验位;合并多个小条带的相同的校验位,从而获得两个合并校验位。可选的,在确定存储节点组中大文件中一条带中损坏不超过两个数据块的情况下,根据该条带已有完整数据块和两个校验位恢复已损坏数据块获得恢复数据块;存储恢复数据块至所述存储节点组中状态良好的块数据服务器。可选的,在确定小文件损坏情况下,根据存储节点组中该小文件的备份,再备份至所述小文件至所述存储节点组中状态良好的数据服务器。一种分布式系统,包括:访问数据服务器中心,用于接收用户终端发送的上传请求,向用户终端分配访问数据服务器组中一访问数据服务器;与访问数据服务器中心相连的访问数据服务器组中的访问数据服务器,用于接收用户终端上传的当前文件,若确定所述当前文件为小文件,则按小文件存储方式存储所述当前文件至存储节点组;与访问数据服务器组中访问数据服务器相连的存储节点组,用于存储所述当前文件;还用于确定所述存储节点组中小文件的访问量,对于访问量低的小文件减少小文件的备份数量,对于访问量高的小文件增加小文件的备份数量。通过以上技术手段,可以实现以下有益效果:为了提高分布式系统的访问效率,本申请中元数据服务器确定所述存储节点组中小文件的访问量;对于访问量不同的小文件,区别对待访问量不同的小文件的占用空间,对于访问量低的小文件减少小文件的备份数量;对于访问量高的小文件增加小文件的备份数量,从而可以节省大量存储空间并提高分布式系统的访问效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1a-1b为本申请实施例公开的一种分布式系统的结构示意图;图2为本申请实施例公开的一种文件处理方法的流程图;图3为本申请实施例公开的一种raid6的示意图;图4为本申请实施例公开的一种分布式系统的结构示意图;图5为本申请实施例公开的又一种文件处理方法的流程图。具体实施方式下述实施例涉及的术语的中英文释义:访问数据服务中心,adscenter(accessdataservercenter)。访问数据服务器,ads(accessdataserver)。元数据服务中心,mdscenter(matadataservercenter)。元数据服务器,mds(matadataserver)。块数据服务器,bds(blockdata)。本实施中对于存储海量小文件的分布式系统而言,考虑用户终端对于海量小文件的访问量,并对于访问量不同的小文件进行区别对待其占用的存储空间。对于访问量低的小文件减少小文件的备份数量,以减少对分布式系统存储空间的占用,对于访问量高的小文件增加小文件的备份数量,以提高小文件的访问效率;从而提高分布式系统的访问效率。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。参见图1a或1b为分布式系统的示意图,分布式系统包括:存储海量小文件的多个存储节点组100;以及,与多个存储节点组100相连的访问数据服务器200。每个存储节点组100包括:元数据服务器11;以及,与元数据服务器11相连多个块数据服务器12。可以理解的是,存储节点组可以包括至少一个元数据服务器11,图1a实例中包含一个元数据服务器。通常情况下采用图1b所示实施例,存储节点组包含两个元数据服务器;且,两个元数据服务器采用主、备方式工作。分布式系统中访问数据服务器200,用于接收用户终端上传的当前文件,若确定所述当前文件为小文件,则按小文件存储方式存储当前文件至存储节点组中,若确定所述当前文件为大文件,则按大文件存储方式存储当前文件至存储节点组中。存储节点组100中元数据服务器11用于管控多个块数据服务器12,多个块数据服务器12用于按大文件存储方式存储大文件以及校验位,按小文件存储方式存储小文件以及校验位。根据本申请提供的一个实施例,提供一种小文件处理方法。由于分布式系统中每个存储节点组的执行过程均是一致的,所以本实施例以一个存储节点组为例进行详细说明。参见图2,小文件处理方法可以包括以下步骤:步骤s201:元数据服务器确定存储节点组中小文件的访问量。可以理解的是,访问数据服务器200向存储节点组中块数据服务器12存储小文件后,块数据服务器12会向元数据服务器11反馈小文件信息。小文件信息可以包括小文件存储地址、小文件标识和小文件大小,当然小文件信息还可以包含其它内容,在此不再赘述。元数据服务器11存储小文件信息并为小文件添加一个字段,用于记录小文件的访问量。元数据服务器可以根据小文件访问情况来动态调整小文件的访问量。例如,访问量的初始值可以设置为100(可配置),小文件被访问一次,则访问量加1;若一小文件最近一个月没有被访问,则访问量减去100,若访问量减去100后小于0,则访问量为0。当然上述对访问量的动态调整仅仅是一个举例而已,还可以采用其它方式来动态调整访问量。例如,小文件的访问量情况为0,小文件被访问一次则加访问量1,小文件未访问则不调整访问量。可以理解的是,可以根据实际应用场景不同而采用不同的动态调整方式。在此不再赘述。步骤s202:元数据服务器确定访问量高的小文件,对于访问量高的小文件增加小文件的备份数量。元数据服务器11设置有预设高访问量,当一小文件的访问量大于预设高访问量,则表示该小文件属于访问量高小文件。为了提高访问量高小文件的访问效率,对于访问量高的小文件增加小文件的备份数量。由于本存储节点组已经存储有小文件,所以可以向分布式系统中其它存储节点组中存储该小文件。在实现时,存储节点组可以采用下述步骤:步骤1:元数据服务器向访问量高的小文件所属的一块数据服务器发送备份操作指令。其中,备份操作指令包括分布式系统中其它存储节点中至少一个块数据服务器的地址。步骤2:块数据服务器响应于所述备份操作指令,向所述分布式系统中至少一个其它存储节点组发送该小文件,以供其它存储节点备份所述小文件。该块数据服务器与备份操作指令中地址对应的块数据服务器建立数据链接,发送小文件至其它存储节点组中的块数据服务器,以供其它块数据服务器备份该小文件。在分布式系统中有多个存储节点组中存储有一小文件时,该小文件可以同时较多的用户终端所访问,所以可以提高访问量高小文件的访问效率。步骤s203:元数据服务器确定访问量低的小文件,对于访问量低的小文件减少小文件的备份数量。对于访问量居中的小文件,维持小文件的当前备份数量。在实现时存储节点组可以采用如下步骤:步骤1:元数据服务器确定所述存储节点组中访问量低的多个小文件。元数据服务器11每天闲时对小文件信息进行扫描,若存储节点组中小文件的访问量小于预设低访问量,则确定为访问量低小文件。步骤2:元数据服务器从所述存储节点组中确定一块数据服务器,向该块数据服务器发送合并操作指令。元数据服务器在小文件信息中获取访问量低小文件的小文件大小,并计算小文件大小的和值,若和值大于预设和值,则说明访问量低的小文件占用存储空间较大,需要进行再处理。若和值不大于预设和值,则说明访问量低的小文件占用存储空间不大暂不用处理,以保证小文件的访问效率。存储节点组具有多个块数据服务器,元数据服务器在确定和值大于预设和值情况下,可以通过负载均衡方式在多个块数据服务器中选择一块数据服务器,并向该块数据服务器发起合并操作指令。例如,延续上述访问量的举例,若当前访问量为0(预设低访问量)的文件大小综合大于1g(预设总和,预设总和可配置)时,元数据服务器发起合并操作。步骤3:块数据服务器响应于所述合并操作指令,从所述存储节点组中获取到所述多个小文件。本实施例中小文件不必分块存储而是整体存储于块数据服务器中,为了保证数据可用性,在分布式系统中向所述存储节点组存储小文件的情况下,向所述存储节点组中至少三个块数据服务器存储该小文件,以便在两个块数据服务器出现故障情况下,仍然可以使用小文件。合并操作指令包括与所述多个文件一一对应的多个文件标识,每个文件标识对应该文件于所述存储节点组中的所有存储位置。为了便于理解,合并操作指令可以参见下表示意:文件标识1存储位置1存储位置2……文件标识2存储位置1存储位置2…………………………文件标识3存储位置1存储位置2……以文件标识1为例,存储位置1、存储位置2等等所有存储位置,用于表示存储节点组中文件标识1对应的文件所存储的块数据服务器标识以及在块数据服务器中的存储地址。块数据服务器针对每个文件标识执行下述步骤:基于文件标识对应所有存储位置中任一个存储位置,向该存储位置所属的块数据服务器发送获取指令以获取该存储位置处存储的小文件。步骤4:块数据服务器合并所述多个小文件为大文件。优选情况下,块数据服务器合并多个小文件为一个大文件。步骤5:块数据服务器按大文件存储方式存储所述大文件至所述存储节点组。块数据服务器按大文件存储方式存储大文件至存储节点组中的多个块数据服务器,并更新元数据服务器中多个小文件的存储位置。对于大文件而言由于其数据量较大,所以采用分块存储方式存储至存储节点组中块数据服务器。一份大文件仅存储一份不会存储备份,因此按大文件存储合并多个小文件后的大文件,相当于仅存储一份访问量低的多个小文件。元数据服务器设置有存储大文件所使用的预设磁盘存储方式匹配的数据块大小,条带分块数量,与预设磁盘存储方式匹配的多个块数据服务器的服务接口;则块数据服务器按大文件存储方式存储所述大文件至所述存储节点组进行详细介绍包括:步骤51:所述块数据服务器向所述元数据服务器请求存储大文件的块数据服务器的服务接口和条带分块数量。步骤52:所述块数据服务器循环按数据块大小,从所述大文件读取条带分块数量个数据块,对条带分块数量个数据块计算校验位,通过服务接口存储数据块和校验位至块数据服务器。步骤53:循环上个步骤2直到大文件存储至多个块数据服务器中。接上述步骤5进入步骤6:删除所述存储节点组中所述多个小文件。所述块数据服务器针对每个文件标识执行下述步骤:基于文件标识对应的所有存储位置,向所有存储位置所属的块数据服务器发送删除指令,以使接收删除指令的块数据服务器删除小文件。在访问量低的多个小文件按大文件存储方式存储后,为了节省分布式系统的存储空间,删除存储节点组中原有的多个小文件,以用于分布式系统存储其它文件。步骤s204:在小文件出现损坏情况下,在存储节点组中再备份该小文件,以使小文件达到备份数量。假设存储节点组中设定小文件存储三份情况下,若小文件不超过两份出现损坏的情况下,可以再备份小文件,以达到存储节点组存储三份小文件。步骤1:若元数据服务器在确定小文件出现损坏情况下,向其它存储该小文件的块数据服务器发送小文件迁移指令。若元数据服务器可以接收块数据服务器发送的文件异常消息,此时可以确定小文件出现损坏,元数据服务器在确定损坏数量不大于两份的情况下,可以确定其它存储该小文件的块数据服务器。在损坏数量为一份的情况下,在存储节点组中通过负责均衡选择一个状态良好的块数据服务器,在损坏数量为二份的情况下,在存储节点组中通过负责均衡选择二个状态良好的块数据服务器。元数据服务器向其它存储该小文件的块数据服务器发送小文件迁移指令,小文件迁移指令包括:小文件标识和状态良好的块数据服务器的地址。步骤2:该块数据服务器用于响应于所述小文件迁移指令,向其它状态良好的块数据服务器发送小文件,以使其它块数据服务器备份所述小文件。步骤s205:在大文件一条带中数据块出现损坏情况下,恢复出现损坏的数据块。可以理解的是,大文件切分后成数据块后,按照数据块存储方式存储至多个块数据服务器中。参见图3,为以raid6方式存储大文件至块数据服务器中一种示意。存储节点组中多个块数据服务器上形成多个条带,一个条带包括多个数据块和两个校验位,以raid6方式存储大文件,可以保证一个条带不超过两个数据块出现损坏时,仍可以恢复出现损坏的数据块。步骤1:元数据服务器用于在确定大文件中条带分块数量个数据块组成的条带中损坏不超过两个数据块的情况下,选择一块数据服务器,向该块数据服务器发送数据块迁移指令。在一条带中数据块损坏数量不超过两个情况下,在存储节点组中通过负责均衡选择一个空闲数据服务器,向该块数据服务器发送数据块迁移指令。步骤2:该块数据服务器用于响应所述数据块迁移指令,根据该条带已有完整数据块和两个校验位恢复已损坏数据块获得恢复数据块,存储所述恢复数据块至状态良好的块数据服务器。通过上述技术特征,可以发现本申请具有以下有益效果:为了提高分布式系统的访问效率,本申请中元数据服务器确定所述存储节点组中小文件的访问量;对于访问量不同的小文件,区别对待访问量不同的小文件的占用空间,对于访问量低的小文件减少小文件的备份数量;对于访问量高的小文件增加小文件的备份数量,从而可以提高分布式系统的访问效率。此外,对于出现损坏的大文件可以恢复并再存储,对于出现损坏的小文件还可以再备份,从而可以保证分布式系统对于大文件和小文件的访问,可以节省大量存储空间并提高分布式系统的访问效率。参见图4,本申请又提供了一种分布式系统,包括:多个存储节点组100用于存储文件;每个存储节点组100包括元数据服务器11和与元数据服务器11相连的多个块数据服务器12。存储节点组通常包括两个元数据服务器,两个元数据服务器以主、备方式工作。与多个存储节点组100相连的访问数据服务器组200用于提供文件存储服务,访问数据服务器组200包括多个访问数据服务器。与访问数据服务器组200相连的访问数据服务器中心300;分布式系统通常采用两个访问数据服务中心,两个访问数据服务中心以主、备方式工作;用于管理所有访问数据服务器,并能重定向到某一个访问数据服务器(ads),具有负载均衡功能。下面提供一种文件存储方法,多个存储节点组的执行过程是一致的,因此,本实施例以一个存储节点组为例,对文件存储方法进行详细说明。参见图5,数据存储过程包括以下步骤:步骤s501:存储节点组中元数据服务器确定条带分块数量,数据块大小,以及用于区分大文件和小文件的阈值。为了便于理解以一个实例进行详解:例如,假设访问数据服务器ads与块数据服务器bds之间为100m网卡,那么理论上,访问数据服务器ads向块数据服务器bds上传文件的最大速度为12.5m/s,而实际速度会小于12.5m/s。假设块数据服务器采用raid6方式存储文件,其条带分块数量设置为6(可配置),则数据块大小为12.5/8向下取整为1m。用于区分大文件和小文件的阈值为1m*6=6m;也即,当前文件小于等于6m则视为小文件;当前文件大于6m则视为大文件;这样访问数据服务器ads向块数据服务器bds上传文件时的速率尽量接近网卡的最大限制,保证数据上传的效率。步骤s502:访问数据服务器ads向元数据服务器mds获取并存储条带分块数量、数据块大小以及用于区分大文件和小文件的阈值。步骤s503:用户终端向访问数据服务器中心发送文件存储请求。步骤s504:访问数据服务器中心通过负载均衡策略在访问数据服务器组中确定一个访问数据服务器,并反馈该访问数据服务器标识至用户终端,以供用户终端向该访问数据服务器上传当前文件。当用户终端需要上传数据时,访问数据服务器中心adscenter通过负载均衡策略,确定一个当前较为空闲的访问数据服务器ads,用于为用户终端提供文件存储服务。步骤s505:访问数据服务器ads接收用户终端上传的当前文件。步骤s506:访问数据服务器ads判断当前文件是否为流式数据,若是则进入步骤s516;若否则进入步骤s507。步骤s507:访问数据服务器ads判断当前文件是否为小文件;若是则进入步骤s508;若否则进入步骤s514。访问数据服务器ads存储有用于区分大文件和小文件的阈值,若当前文件不大于阈值时确定当前文件为小文件;若当前文件大于阈值时,确定当前文件为大文件。步骤s508:若当前文件为小文件,则访问数据服务器向元数据服务器请求块数据服务器的服务接口。根据预设需要在存储节点组中存储小文件的备份数量,获取备份数量个块数据服务器的服务接口。例如,预先设定在存储节点组存储三份小文件,则向元数据服务器获取三个数据服务器的服务接口。步骤s509:元数据服务器通过负载均衡策略确定块数据服务器,并反馈块数据服务器的服务接口至访问数据服务器。步骤s510:访问数据服务器在获取块数据服务器的服务接口后,通过服务接口分别上传当前文件到块数据服务器,在上传当前文件完毕后发送上传完毕标识至块数据服务器。步骤s511:块数据服务器接收并存储当前文件,块数据服务器在接收上传完毕标识后,将当前文件的文件存储信息发送至元数据服务器。步骤s512:元数据服务器接收并存储当前文件的文件存储信息,并在文件存储信息中添加一个用于统计访问量的字段,以用于统计当前文件的访问量。由于当前文件为小文件,为了获取小文件的访问量,元数据服务器会在当前文件为小文件情况下,针对文件存储信息添加一个字段,以用于统计当前文件的访问量。步骤s513:元数据服务器发送上传成功标识至访问数据服务器,访问数据服务器发送上传成功标识至用户终端。下面步骤s514和步骤s515在图示中仅为示意性表示,暂未表示出与元数据服务器进行交互(因为步骤s508已经占据其图示位置)。步骤s514:若当前文件为大文件,则访问数据服务器向元数据服务器请求块数据服务器的服务接口。延续步骤s501中的举例,条带分块数量为6,以raid6方式存储文件时需要2个校验块,则共需要8个块数据服务器用于存储数据块和校验位。因此,访问数据服务器向元数据服务器获取8个块数据服务器的服务接口。步骤s515:访问数据服务器按大文件存储方式存储当前文件至存储节点组。所述块数据服务器循环按预设数据块大小,从所述大文件中连续读取n个条带数据块,并通过n个服务接口顺序存储n个条带数据块至n个块数据服务器中;按raid6校验位计算方式,计算所述n个条带数据块的两个校验位,通过2个服务接口分别存储2个校验位至2个块数据服务器中,从而完成一个条带的存储。延续上述步骤s501中的举例,条带分块数量设置为6(可配置),数据块大小为1m。则访问数据服务器按预设数据块大小(1m)循环从大文件读取6个(条带分块数量)数据块,对6个(条带分块数量个)数据块计算两个校验位,通过8个服务接口分别存储6个数据块和2校验位至8个块数据服务器,从而完成一个条带存储。继续按照上述方式对大文件剩余部分进行存储,在存储多个条带后可以完成大文件存储。参见图3为大文件存储过程中的一种示意图。在计算校验位的过程中,本实施例还提供一种扩展方案。步骤s1:访问数据服务器判断所述数据块大小对应的计算空间是否大于当前可用内存空间。假设访问数据服务器的当前内存空间为250m,则当前可用内存空间约为250*80%=200m,但是数据块大小设置成30m;6个文件块为180m,两个校验块为60m,至少需要180m+60m=240m。也即,数据块大小对应的计算空间240m大于当前可用内存空间200m。步骤s2:在所述数据块大小对应的计算空间大于当前可用内存空间情况下,将条带分块数量个数据块分别切分成小数据块,以使条带分块数量个数据块组成的条带形成多个小条带。为了便于理解将每个30m数据块切分为3个10m数据块,形成三个条带(表格中一行代表一个条带)。为了便于理解采用表格表示:步骤s3:对多个条带计算按raid6方式两个校验位。针对三个条带分别计算两个校验位获得校验位p1、校验位q1、校验位p2、校验位q2、校验位p3、校验位q3。步骤s4:合并多个小条带中相同校验位从而获得两个合并校验位。将校验位p1、校验位p2和校验位p3合并为一个校验位p,将校验位q1、校验位q2和校验位q3合并为一个校验位q,也即获得两个合并校验位。步骤516:若上传数据为流式数据,则访问数据服务器缓存当前文件,在确定当前文件的大小后进入步骤s507。访问数据服务器先缓存当前文件,在确定流式的当前文件大小后,进入步骤s507,也即若当前文件大于阈值时则按大文件存储当前文件,否则按小文件存储当前文件。本实施例提供了文件存储方法,针对当前文件的不同情况分别进行不同的存储,实现了不同情况区别对待的目的。此外,现有技术中访问数据服务器会上传一份至存储节点组,再由存储节点组内部进行备份复制获得多份,现有技术中会面临访问数据服务器上传一份至存储节点组时出现问题,便会导致存储节点组整体无法获得小文件的问题。本申请提供的文件存储方案,在访问数据服务器在上传至存储节点组时便直接向存储节点组上传多份,即便在其中一份出现上传问题,其它份也可以实现正常存储小文件。相对于现有技术而言,可以提高存储成功率。本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1