CN109508324A - 一种基于对象存储组件的超大文件管理方法及系统 - Google Patents
一种基于对象存储组件的超大文件管理方法及系统 Download PDFInfo
- Publication number
- CN109508324A CN109508324A CN201811230083.8A CN201811230083A CN109508324A CN 109508324 A CN109508324 A CN 109508324A CN 201811230083 A CN201811230083 A CN 201811230083A CN 109508324 A CN109508324 A CN 109508324A
- Authority
- CN
- China
- Prior art keywords
- subfile
- object storage
- client
- api
- segmentation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims description 22
- 230000011218 segmentation Effects 0.000 claims abstract description 114
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012217 deletion Methods 0.000 claims description 22
- 230000037430 deletion Effects 0.000 claims description 22
- 239000006185 dispersion Substances 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 3
- 230000032696 parturition Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 101000911390 Homo sapiens Coagulation factor VIII Proteins 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005194 fractionation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 102000057593 human F8 Human genes 0.000 description 2
- 229940047431 recombinate Drugs 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
本发明提供了一种基于对象存储组件的超大文件管理方法及系统,该方法包括:增加有存储API的客户端在接收到外部经存储API而提供的超大文件时,若超大文件的大小大于分割阈值,将其依序分割为若干大小不大于分割阈值的子文件,并基于其唯一文件名记录各子文件的分割情况;客户端将各子文件及其分割情况发送给对象存储组件;对象存储组件在接收到该至少两个子文件及各子文件的分割情况时,生成各子文件的ID;将至少两个子文件分散存储至内部对象存储节点集群中,并记录各子文件的存储情况;将各子文件的分割情况、ID和存储情况等元数据信息存储至内部元数据节点中。因此,本方案能够实现超大文件的对象存储。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种基于对象存储组件的超大文件管理方法及系统。
背景技术
大数据分为结构化数据、半结构化数据和非结构化数据,而半结构化数据最终存储时要么转换为结构化数据,要么以非结构化数据存在,非结构化数据在存储量,或称空间占用方面远远大于结构化数据,因此非结构化数据的存储技术对存储利用大数据非常关键。
文件是非结构化数据的表现形式之一,而有些文件非常大,比如一段时间内连续的视频数据会超过4GB,甚至存在PB级的超大文件。目前,大多对象存储或文件系统不支持直接存储这些超大文件。
发明内容
本发明提供了一种基于对象存储组件的超大文件管理方法及系统,能够实现超大文件的对象存储。
为了达到上述目的,本发明是通过如下技术方案实现的:
一方面,本发明提供了一种基于对象存储组件的超大文件管理方法,包括:
增加有接口API(Application Programming Interface,应用程序编程接口)的客户端,在接收到外部经所述存储API而提供的超大文件时,判断所述超大文件的大小是否大于预设的分割阈值,若是,根据所述分割阈值,将所述超大文件依序分割为至少两个子文件,任一所述子文件的大小均不大于所述分割阈值,并基于所述超大文件的唯一文件名记录每一个所述子文件的分割情况;
所述客户端将所述至少两个子文件及各子文件的分割情况发送给对象存储组件;
所述对象存储组件在接收到所述至少两个子文件及各子文件的分割情况时,生成每一个所述子文件的ID;将所述至少两个子文件分散存储至内部的对象存储节点集群中,并记录每一个所述子文件的存储情况;将每一个所述子文件的元数据信息存储至内部的元数据节点中,所述元数据信息包括分割情况、ID和存储情况。
进一步地,所述客户端上还增加有获取API;
该方法还包括:所述客户端在接收到外部经所述获取API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
所述对象存储组件在接收到所述客户端经所述获取API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的ID和存储情况,获取所述至少两个子文件;将获取到的所述至少两个子文件及各子文件的分割情况发送给所述客户端;
所述客户端在接收到所述至少两个子文件及各子文件的分割情况时,根据每一个所述子文件的分割情况,将所述至少两个子文件拼装成所述超大文件,并输出拼装出的所述超大文件。
进一步地,所述客户端上还增加有更名API;
该方法还包括:所述客户端在接收到外部经所述更名API而输入的新文件名和待更改的所述唯一文件名时,将所述新文件名和所述唯一文件名发送给所述对象存储组件;
所述对象存储组件在接收到所述客户端经所述更名API而发来的所述新文件名和所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;将获取到的每一个元数据信息中的所述唯一文件名均更改为所述新文件名。
进一步地,所述客户端上还增加有删除API;
该方法还包括:所述客户端在接收到外部经所述删除API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
所述对象存储组件在接收到所述客户端经所述删除API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的存储情况,删除所述对象存储节点集群中的所述至少两个子文件;删除所述元数据节点中的每一个所述子文件的元数据信息。
进一步地,所述分割情况包括:子文件名称和子文件大小;
其中,所述子文件名称包括:所述唯一文件名和序号;
其中,每一个所述子文件的子文件名称中的序号,按照子文件分割获得顺序依次增大;
所述至少两个子文件中,除末位分割出的子文件之外,任一其他子文件的子文件大小均等于所述分割阈值。
进一步地,所述将所述至少两个子文件分散存储至内部的对象存储节点集群中,包括:针对所述至少两个子文件中的每一个子文件均执行:判断内部的对象存储节点集群中是否存在至少一个满足公式组一的第一对象存储节点,若是,从所述至少一个第一对象存储节点中挑选出至少一个满足公式一的第二对象存储节点,并将当前子文件存储至任一所述第二对象存储节点中;
所述公式组一包括:
所述公式一包括:
其中,x1为一所述第一对象存储节点的剩余存储容量,a为所述分割阈值,xi为所述对象存储节点集群中第i个对象存储节点的剩余存储容量,n为所述对象存储节点集群中对象存储节点的总个数,为一所述第二对象存储节点的剩余存储容量与总存储容量的比值,max为求最大值,x1j为所述至少一个第一对象存储节点中第j个第一对象存储节点的剩余存储容量,X1j为所述第j个第一对象存储节点的总存储容量。
另一方面,本发明提供了一种基于对象存储组件的超大文件管理系统,包括:客户端和对象存储组件;
其中,所述客户端上增加有存储API;
所述对象存储组件包括:对象存储节点集群和元数据节点;
其中,所述客户端,用于在接收到外部经所述存储API而提供的超大文件时,判断所述超大文件的大小是否大于预设的分割阈值,若是,根据所述分割阈值,将所述超大文件依序分割为至少两个子文件,任一所述子文件的大小均不大于所述分割阈值,并基于所述超大文件的唯一文件名记录每一个所述子文件的分割情况;将所述至少两个子文件及各子文件的分割情况发送给所述对象存储组件;
所述对象存储组件,用于在接收到所述至少两个子文件及各子文件的分割情况时,生成每一个所述子文件的ID;将所述至少两个子文件分散存储至所述对象存储节点集群中,并记录每一个所述子文件的存储情况;将每一个所述子文件的元数据信息存储至所述元数据节点中,所述元数据信息包括分割情况、ID和存储情况。
进一步地,所述客户端上还增加有获取API;
所述客户端,还用于在接收到外部经所述获取API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;在接收到所述至少两个子文件及各子文件的分割情况时,根据每一个所述子文件的分割情况,将所述至少两个子文件拼装成所述超大文件,并输出拼装出的所述超大文件;
所述对象存储组件,还用于在接收到所述客户端经所述获取API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的ID和存储情况,获取所述至少两个子文件;将获取到的所述至少两个子文件及各子文件的分割情况发送给所述客户端。
进一步地,所述客户端上还增加有更名API;
所述客户端,还用于在接收到外部经所述更名API而输入的新文件名和待更改的所述唯一文件名时,将所述新文件名和所述唯一文件名发送给所述对象存储组件;
所述对象存储组件,还用于在接收到所述客户端经所述更名API而发来的所述新文件名和所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;将获取到的每一个元数据信息中的所述唯一文件名均更改为所述新文件名。
进一步地,所述客户端上还增加有删除API;
所述客户端,还用于在接收到外部经所述删除API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
所述对象存储组件,还用于在接收到所述客户端经所述删除API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的存储情况,删除所述对象存储节点集群中的所述至少两个子文件;删除所述元数据节点中的每一个所述子文件的元数据信息。
进一步地,所述分割情况包括:子文件名称和子文件大小;
其中,所述子文件名称包括:所述唯一文件名和序号;
其中,每一个所述子文件的子文件名称中的序号,按照子文件分割获得顺序依次增大;
所述至少两个子文件中,除末位分割出的子文件之外,任一其他子文件的子文件大小均等于所述分割阈值。
进一步地,所述对象存储组件,用于针对所述至少两个子文件中的每一个子文件均执行:判断所述对象存储节点集群中是否存在至少一个满足公式组一的第一对象存储节点,若是,从所述至少一个第一对象存储节点中挑选出至少一个满足公式一的第二对象存储节点,并将当前子文件存储至任一所述第二对象存储节点中;
所述公式组一包括:
所述公式一包括:
其中,x1为一所述第一对象存储节点的剩余存储容量,a为所述分割阈值,xi为所述对象存储节点集群中第i个对象存储节点的剩余存储容量,n为所述对象存储节点集群中对象存储节点的总个数,为一所述第二对象存储节点的剩余存储容量与总存储容量的比值,max为求最大值,x1j为所述至少一个第一对象存储节点中第j个第一对象存储节点的剩余存储容量,X1j为所述第j个第一对象存储节点的总存储容量。
本发明提供了一种基于对象存储组件的超大文件管理方法及系统,该方法包括:增加有存储API的客户端在接收到外部经存储API而提供的超大文件时,若超大文件的大小大于分割阈值,将其依序分割为若干大小不大于分割阈值的子文件,并基于其唯一文件名记录各子文件的分割情况;客户端将各子文件及其分割情况发送给对象存储组件;对象存储组件在接收到该至少两个子文件及各子文件的分割情况时,生成各子文件的ID;将至少两个子文件分散存储至内部对象存储节点集群中,并记录各子文件的存储情况;将各子文件的分割情况、ID和存储情况等元数据信息存储至内部元数据节点中。因此,本发明能够实现超大文件的对象存储。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种超大文件管理方法的流程图;
图2是本发明一实施例提供的一种超大文件管理系统的示意图;
图3是本发明一实施例提供的另一种超大文件管理系统的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种基于对象存储组件的超大文件管理方法,可以包括以下步骤:
步骤101:增加有存储API的客户端,在接收到外部经所述存储API而提供的超大文件时,判断所述超大文件的大小是否大于预设的分割阈值,若是,根据所述分割阈值,将所述超大文件依序分割为至少两个子文件,任一所述子文件的大小均不大于所述分割阈值,并基于所述超大文件的唯一文件名记录每一个所述子文件的分割情况。
步骤102:所述客户端将所述至少两个子文件及各子文件的分割情况发送给对象存储组件。
步骤103:所述对象存储组件在接收到所述至少两个子文件及各子文件的分割情况时,生成每一个所述子文件的ID;将所述至少两个子文件分散存储至内部的对象存储节点集群中,并记录每一个所述子文件的存储情况;将每一个所述子文件的元数据信息存储至内部的元数据节点中,所述元数据信息包括分割情况、ID和存储情况。
本发明实施例提供了一种基于对象存储组件的超大文件管理方法,该方法包括:增加有存储API的客户端在接收到外部经存储API而提供的超大文件时,若超大文件的大小大于分割阈值,将其依序分割为若干大小不大于分割阈值的子文件,并基于其唯一文件名记录各子文件的分割情况;客户端将各子文件及其分割情况发送给对象存储组件;对象存储组件在接收到该至少两个子文件及各子文件的分割情况时,生成各子文件的ID;将至少两个子文件分散存储至内部对象存储节点集群中,并记录各子文件的存储情况;将各子文件的分割情况、ID和存储情况等元数据信息存储至内部元数据节点中。因此,本发明实施例能够实现超大文件的对象存储。
详细地,对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语。对象在一个层结构中不会再有层级结构,是以扩展元数据为特征的。每个对象都可被分配一个唯一的标识符,允许一个服务器或者最终用户来检索对象,而不必知道数据的物理地址。
详细地,上述对象存储组件可以为一个独立于hadoop体系的组件。本发明一实施例中,可以在Apache Kudu组件基础上增加和增强一些组件,以得到这一对象存储组件,在快速更新数据的快速分析的场景下有很大的价值。
本发明实施例中,上述对象存储组件较原生Apache Kudu来说,可提供高效的非结构化数据存储,以突破Apache Kudu存储结构化数据的限制。如此,对象存储组件可为,既能高效的支持结构化数据的存储、分析、随机读写,又能支持非结构化数据的高效存储以及读取,同时提供高可用性以及可扩展性并提供简便的管理平台。其中,结构化引擎可由ApacheKudu服务提供,非结构化存储引擎可由对象存储服务提供。此外,上述对象存储组件较原生Apache Kudu还可提供可视化的控制台,以方便Kudu集群的管理。
在本发明一个实施例中,上述对象存储节点集群可以由成千上万的对象存储节点,或称对象存储服务器组成,单个对象存储节点即可管理10PB级数据,且集群存储能力是可线性提高的,10万个对象存储节点就可组成ZB级的存储集群。
在本发明一个实施例中,上述元数据节点可以由Kudu集群组成的,可管理的元数据可以很大,比如可以为万亿级的对象数,且元数据就存放在普通的Kudu表中,用户可直接访问,与Kudu的其它结构化数据进行关联查询,方便应用开发。
因此,本发明一个实施例中,当需要存储对象数据,即上述各个子文件时,对象存储组件中的对象存储引擎接收到对象数据时,可立即产生该对象的ID,并将对象的元数据存储在Kudu表中,当对象存储成功后,可更新该表中的元数据信息,从而完成对象数据的存储。对应地,对于查询,可先通过ID获取元数据,然后根据元数据获取指定的对象数据。
在本发明一个实施例中,存储各个子文件时,还可根据配置,在对象存储节点集群中存储各子文件的冗余备份文件,并将相应存储情况以元数据形式存储至元数据节点中。当然,对于任一子文件,存储子文件的对象存储节点和存储该子文件备份的对象存储节点,不为同一对象存储节点。如此,当任一对象存储节点异常以无法获取该对象存储节点上的各个子文件时,同样可以从其他对象存储节点上获取其备份文件。
本发明实施例中,超大文件的拆分在客户端执行,用户无需参与,对象存储组件存储的是拆分后各个子文件及其元数据;所生成的拆分后各个子文件的ID,是对象存储组件内部使用的,用户无需知道,以避免用户操作的复杂化;用户只需提供待存储文件即可,操作简便。
在本发明一个实施例中,上述步骤101中,当判断结果为否,即超大文件的大小不大于分割阈值时,说明该超大文件不太大,无需分割,故可直接发送给对象存储组件。对应地,对象存储组件在接收到该超大文件时,同样生成该超大文件的ID,并将该超大文件存储至一对象存储节点中,以及根据其存储情况,在元数据节点中记录其元数据信息。
本发明实施例中,由于可对超大文件进行分割,故可记录相应的分割情况,如分割顺序,以及分割后各子文件的排序序号、文件大小、文件名称、与原超大文件间的联系等。通过记录分割情况,当需要根据分割出的各个子文件以逆向复原原超发文件时,即可根据记录的该分割情况,以逆向重组出原超大文件。
举例来说,假设上述分割阈值为2GB,上述超大文件的唯一文件名为abc.dat,大小为24.5GB,则可以根据预定分割规则对该超大文件进行分割。假设这一分割规则为:根据分割阈值将超大文件依序分割为若干固定尺寸(如2GB)的子文件并编号,子文件命名时以原超大文件名加上“::”及序号(从0开始递增1的整数)进行命名。基于此,可将该超大文件分割为文件名分别为abc.dat::0、abc.dat::1、abc.dat::2、abc.dat::3、abc.dat::4、…、abc.dat::11、abc.dat::12的这13个子文件,其中,前12个子文件每个大小为2GB,最后1个为剩余的大小0.5GB。
因此,在本发明一个实施例中,所述分割情况包括:子文件名称和子文件大小;
其中,所述子文件名称包括:所述唯一文件名和序号;
其中,每一个所述子文件的子文件名称中的序号,按照子文件分割获得顺序依次增大;
所述至少两个子文件中,除末位分割出的子文件之外,任一其他子文件的子文件大小均等于所述分割阈值。
详细地,分割情况以元数据形式存储于对象存储组件的元数据节点中。
详细地,当需要逆向重组出原超大文件时,首先根据该超大文件的相关元数据信息,并行从对象存储节点集群中获取该超大文件的各个子文件,再根据各子文件的子文件名称中的序号,确定各子文件在原超大文件中的偏移量,最后基于偏移量顺序还原出该原超大文件。
基于上述内容,在基于对象存储组件以存储超大文件后,通常还会涉及到该超大文件的再次获取、文件更名、文件删除等应用场景。
详细地,第一方面,针对上述超大文件的再次获取:
在本发明一个实施例中,所述客户端上还增加有获取API;
该方法进一步包括:
A1:所述客户端在接收到外部经所述获取API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
A2:所述对象存储组件在接收到所述客户端经所述获取API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的ID和存储情况,获取所述至少两个子文件;将获取到的所述至少两个子文件及各子文件的分割情况发送给所述客户端;
A3:所述客户端在接收到所述至少两个子文件及各子文件的分割情况时,根据每一个所述子文件的分割情况,将所述至少两个子文件拼装成所述超大文件,并输出拼装出的所述超大文件。
详细地,这3个步骤可在上述步骤103之后执行。
详细地,用户需要获取任一超大文件时,只需输入其唯一文件名,即可再次获取到该超大文件。具体地,对象存储组件可根据该唯一文件名获取到所分割出的各子文件的元数据信息,以根据各个元数据信息以获取到相应子文件,如此,客户端即可根据各子文件的分割信息以将相应的各个子文件进行重组,以获得原超大文件,并将重组得到的超大文件提供于用户。
本发明实施例中,超大文件的重组在客户端执行,用户无需参与;用户只需输入唯一文件名,即可实现超大文件的获取,操作简便。
详细地,第二方面,针对上述超大文件的文件更名:
在本发明一个实施例中,所述客户端上还增加有更名API;
该方法进一步包括:
B1:所述客户端在接收到外部经所述更名API而输入的新文件名和待更改的所述唯一文件名时,将所述新文件名和所述唯一文件名发送给所述对象存储组件;
B2:所述对象存储组件在接收到所述客户端经所述更名API而发来的所述新文件名和所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;将获取到的每一个元数据信息中的所述唯一文件名均更改为所述新文件名。
详细地,这2个步骤可在上述步骤103之后执行。
详细地,用户需要更名任一超大文件时,只需输入其原文件名和新文件名,即可对该超大文件进行更名。具体地,对象存储组件可根据原文件名获取到所分割出的各子文件的元数据信息,并将元数据信息中涉及的原文件名更新为新文件名,但所存储的各个相应子文件并未改变。
综上所述,本发明实施例中,超大文件的更名是在对象存储组件一端执行,用户无需参与;用户只需输入原文件名和新文件名,即可实现超大文件的更名,操作简便。
在本发明的一个实施例中,更名API可先从元数据节点中获得待更名超大文件的所有元数据信息,然后以元数据信息中各个子文件的文件名作为对象名,并发调用对象存储组件提供的基础对象更名函数,以最终完成超大文件更名。
详细地,第三方面,针对上述超大文件的文件删除:
在本发明一个实施例中,所述客户端上还增加有删除API;
该方法进一步包括:
C1:所述客户端在接收到外部经所述删除API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
C2:所述对象存储组件在接收到所述客户端经所述删除API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的存储情况,删除所述对象存储节点集群中的所述至少两个子文件;删除所述元数据节点中的每一个所述子文件的元数据信息。
详细地,这2个步骤可在上述步骤103之后执行。
详细地,用户需要删除任一超大文件时,只需输入其唯一文件名,即可对该超大文件进行删除。具体地,对象存储组件可根据唯一文件名获取到所分割出的各子文件的元数据信息,以根据元数据信息将存储的各个相应子文件删除,并删除该元数据信息。
综上所述,本发明实施例中,超大文件的删除是在对象存储组件一端执行,用户无需参与;用户只需输入唯一文件名,即可实现超大文件的删除,操作简便。
在本发明的一个实施例中,删除API可先从元数据节点中获得待删除超大文件的所有元数据信息,然后以元数据信息中各个子文件的文件名作为对象名,并发调用对象存储组件提供的基础对象删除函数,以最终完成超大文件删除。
在本发明一个实施例中,所述将所述至少两个子文件分散存储至内部的对象存储节点集群中,包括:针对所述至少两个子文件中的每一个子文件均执行:判断内部的对象存储节点集群中是否存在至少一个满足公式组一的第一对象存储节点,若是,从所述至少一个第一对象存储节点中挑选出至少一个满足公式一的第二对象存储节点,并将当前子文件存储至任一所述第二对象存储节点中;
所述公式组一包括:
所述公式一包括:
其中,x1为一所述第一对象存储节点的剩余存储容量,a为所述分割阈值,xi为所述对象存储节点集群中第i个对象存储节点的剩余存储容量,n为所述对象存储节点集群中对象存储节点的总个数,为一所述第二对象存储节点的剩余存储容量与总存储容量的比值,max为求最大值,x1j为所述至少一个第一对象存储节点中第j个第一对象存储节点的剩余存储容量,X1j为所述第j个第一对象存储节点的总存储容量。
详细地,由于超大文件的删除会使得不同对象存储节点中子文件的删除情况不同,从而使得不同对象存储节点可用的剩余存储容量不一致。尤其当不同对象存储节点的总存储容量不一致时,使得不同对象存储节点的剩余存储容量百分比不一致。优选地,优先使用剩余存储容量大、剩余存储容量百分比大的对象存储节点,用于存储新的待存储子文件。如此,可以保证对象存储节点间的均衡使用,提高设备利用程度,以及保证系统稳定性。
综上所述,本发明实施例可在对象存储组件这一对象存储产品基础上,客户端增加一组API,以较低成本支持超大文件在对象存储产品上高性能存取,并支持超大文件的更名和删除。
如图2所示,本发明实施例提供了一种基于对象存储组件的超大文件管理系统,可以包括:
客户端201和对象存储组件202;
其中,所述客户端201上增加有存储API2011;
所述对象存储组件202包括:对象存储节点集群2021和元数据节点2022;
其中,所述客户端201,用于在接收到外部经所述存储API2011而提供的超大文件时,判断所述超大文件的大小是否大于预设的分割阈值,若是,根据所述分割阈值,将所述超大文件依序分割为至少两个子文件,任一所述子文件的大小均不大于所述分割阈值,并基于所述超大文件的唯一文件名记录每一个所述子文件的分割情况;将所述至少两个子文件及各子文件的分割情况发送给所述对象存储组件202;
所述对象存储组件202,用于在接收到所述至少两个子文件及各子文件的分割情况时,生成每一个所述子文件的ID;将所述至少两个子文件分散存储至所述对象存储节点集群2021中,并记录每一个所述子文件的存储情况;将每一个所述子文件的元数据信息存储至所述元数据节点2022中,所述元数据信息包括分割情况、ID和存储情况。
在本发明一个实施例中,请参考图3,所述客户端201上还增加有获取API2012;
所述客户端201,还用于在接收到外部经所述获取API2012而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件202;在接收到所述至少两个子文件及各子文件的分割情况时,根据每一个所述子文件的分割情况,将所述至少两个子文件拼装成所述超大文件,并输出拼装出的所述超大文件;
所述对象存储组件202,还用于在接收到所述客户端201经所述获取API2012而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的ID和存储情况,获取所述至少两个子文件;将获取到的所述至少两个子文件及各子文件的分割情况发送给所述客户端201。
在本发明一个实施例中,请参考图3,所述客户端201上还增加有更名API2013;
所述客户端201,还用于在接收到外部经所述更名API2013而输入的新文件名和待更改的所述唯一文件名时,将所述新文件名和所述唯一文件名发送给所述对象存储组件202;
所述对象存储组件202,还用于在接收到所述客户端201经所述更名API2013而发来的所述新文件名和所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;将获取到的每一个元数据信息中的所述唯一文件名均更改为所述新文件名。
在本发明一个实施例中,请参看图3,所述客户端201上还增加有删除API2014;
所述客户端201,还用于在接收到外部经所述删除API2014而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件202;
所述对象存储组件202,还用于在接收到所述客户端201经所述删除API2014而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的存储情况,删除所述对象存储节点集群2021中的所述至少两个子文件;删除所述元数据节点2022中的每一个所述子文件的元数据信息。
在本发明一个实施例中,所述分割情况包括:子文件名称和子文件大小;
其中,所述子文件名称包括:所述唯一文件名和序号;
其中,每一个所述子文件的子文件名称中的序号,按照子文件分割获得顺序依次增大;
所述至少两个子文件中,除末位分割出的子文件之外,任一其他子文件的子文件大小均等于所述分割阈值。
在本发明一个实施例中,所述对象存储组件202,用于针对所述至少两个子文件中的每一个子文件均执行:判断所述对象存储节点集群2021中是否存在至少一个满足上述公式组一的第一对象存储节点,若是,从所述至少一个第一对象存储节点中挑选出至少一个满足上述公式一的第二对象存储节点,并将当前子文件存储至任一所述第二对象存储节点中。
上述系统内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
综上所述,本发明的实施例具有至少如下有益效果:
1、本发明实施例提供的基于对象存储组件的超大文件管理方法包括:增加有存储API的客户端在接收到外部经存储API而提供的超大文件时,若超大文件的大小大于分割阈值,将其依序分割为若干大小不大于分割阈值的子文件,并基于其唯一文件名记录各子文件的分割情况;客户端将各子文件及其分割情况发送给对象存储组件;对象存储组件在接收到该至少两个子文件及各子文件的分割情况时,生成各子文件的ID;将至少两个子文件分散存储至内部对象存储节点集群中,并记录各子文件的存储情况;将各子文件的分割情况、ID和存储情况等元数据信息存储至内部元数据节点中。因此,本发明实施例能够实现超大文件的对象存储。
2、本发明实施例可在对象存储组件这一对象存储产品基础上,客户端增加一组API,以较低成本支持超大文件在对象存储产品上高性能存取,并支持超大文件的更名和删除。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种基于对象存储组件的超大文件管理方法,其特征在于,包括:
增加有存储应用程序编程接口API的客户端,在接收到外部经所述存储API而提供的超大文件时,判断所述超大文件的大小是否大于预设的分割阈值,若是,根据所述分割阈值,将所述超大文件依序分割为至少两个子文件,任一所述子文件的大小均不大于所述分割阈值,并基于所述超大文件的唯一文件名记录每一个所述子文件的分割情况;
所述客户端将所述至少两个子文件及各子文件的分割情况发送给对象存储组件;
所述对象存储组件在接收到所述至少两个子文件及各子文件的分割情况时,生成每一个所述子文件的ID;将所述至少两个子文件分散存储至内部的对象存储节点集群中,并记录每一个所述子文件的存储情况;将每一个所述子文件的元数据信息存储至内部的元数据节点中,所述元数据信息包括分割情况、ID和存储情况。
2.根据权利要求1所述的方法,其特征在于,
所述客户端上还增加有获取API;
该方法进一步包括:所述客户端在接收到外部经所述获取API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
所述对象存储组件在接收到所述客户端经所述获取API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的ID和存储情况,获取所述至少两个子文件;将获取到的所述至少两个子文件及各子文件的分割情况发送给所述客户端;
所述客户端在接收到所述至少两个子文件及各子文件的分割情况时,根据每一个所述子文件的分割情况,将所述至少两个子文件拼装成所述超大文件,并输出拼装出的所述超大文件。
3.根据权利要求1所述的方法,其特征在于,
所述客户端上还增加有更名API;
该方法进一步包括:所述客户端在接收到外部经所述更名API而输入的新文件名和待更改的所述唯一文件名时,将所述新文件名和所述唯一文件名发送给所述对象存储组件;
所述对象存储组件在接收到所述客户端经所述更名API而发来的所述新文件名和所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;将获取到的每一个元数据信息中的所述唯一文件名均更改为所述新文件名;
和/或,
所述客户端上还增加有删除API;
该方法进一步包括:所述客户端在接收到外部经所述删除API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
所述对象存储组件在接收到所述客户端经所述删除API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的存储情况,删除所述对象存储节点集群中的所述至少两个子文件;删除所述元数据节点中的每一个所述子文件的元数据信息。
4.根据权利要求1所述的方法,其特征在于,
所述分割情况包括:子文件名称和子文件大小;
其中,所述子文件名称包括:所述唯一文件名和序号;
其中,每一个所述子文件的子文件名称中的序号,按照子文件分割获得顺序依次增大;
所述至少两个子文件中,除末位分割出的子文件之外,任一其他子文件的子文件大小均等于所述分割阈值。
5.根据权利要求1至4中任一所述的方法,其特征在于,
所述将所述至少两个子文件分散存储至内部的对象存储节点集群中,包括:针对所述至少两个子文件中的每一个子文件均执行:判断内部的对象存储节点集群中是否存在至少一个满足公式组一的第一对象存储节点,若是,从所述至少一个第一对象存储节点中挑选出至少一个满足公式一的第二对象存储节点,并将当前子文件存储至任一所述第二对象存储节点中;
所述公式组一包括:
所述公式一包括:
其中,x1为一所述第一对象存储节点的剩余存储容量,a为所述分割阈值,xi为所述对象存储节点集群中第i个对象存储节点的剩余存储容量,n为所述对象存储节点集群中对象存储节点的总个数,为一所述第二对象存储节点的剩余存储容量与总存储容量的比值,max为求最大值,x1j为所述至少一个第一对象存储节点中第j个第一对象存储节点的剩余存储容量,X1j为所述第j个第一对象存储节点的总存储容量。
6.一种基于对象存储组件的超大文件管理系统,其特征在于,包括:
客户端和对象存储组件;
其中,所述客户端上增加有存储应用程序编程接口API;
所述对象存储组件包括:对象存储节点集群和元数据节点;
其中,所述客户端,用于在接收到外部经所述存储API而提供的超大文件时,判断所述超大文件的大小是否大于预设的分割阈值,若是,根据所述分割阈值,将所述超大文件依序分割为至少两个子文件,任一所述子文件的大小均不大于所述分割阈值,并基于所述超大文件的唯一文件名记录每一个所述子文件的分割情况;将所述至少两个子文件及各子文件的分割情况发送给所述对象存储组件;
所述对象存储组件,用于在接收到所述至少两个子文件及各子文件的分割情况时,生成每一个所述子文件的ID;将所述至少两个子文件分散存储至所述对象存储节点集群中,并记录每一个所述子文件的存储情况;将每一个所述子文件的元数据信息存储至所述元数据节点中,所述元数据信息包括分割情况、ID和存储情况。
7.根据权利要求6所述的基于对象存储组件的超大文件管理系统,其特征在于,
所述客户端上还增加有获取API;
所述客户端,还用于在接收到外部经所述获取API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;在接收到所述至少两个子文件及各子文件的分割情况时,根据每一个所述子文件的分割情况,将所述至少两个子文件拼装成所述超大文件,并输出拼装出的所述超大文件;
所述对象存储组件,还用于在接收到所述客户端经所述获取API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的ID和存储情况,获取所述至少两个子文件;将获取到的所述至少两个子文件及各子文件的分割情况发送给所述客户端。
8.根据权利要求6所述的基于对象存储组件的超大文件管理系统,其特征在于,
所述客户端上还增加有更名API;
所述客户端,还用于在接收到外部经所述更名API而输入的新文件名和待更改的所述唯一文件名时,将所述新文件名和所述唯一文件名发送给所述对象存储组件;
所述对象存储组件,还用于在接收到所述客户端经所述更名API而发来的所述新文件名和所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;将获取到的每一个元数据信息中的所述唯一文件名均更改为所述新文件名;
和/或,
所述客户端上还增加有删除API;
所述客户端,还用于在接收到外部经所述删除API而输入的所述唯一文件名时,将所述唯一文件名发送给所述对象存储组件;
所述对象存储组件,还用于在接收到所述客户端经所述删除API而发来的所述唯一文件名时,根据所述唯一文件名获取每一个所述子文件的元数据信息;根据获取到的每一个所述子文件的存储情况,删除所述对象存储节点集群中的所述至少两个子文件;删除所述元数据节点中的每一个所述子文件的元数据信息。
9.根据权利要求6所述的基于对象存储组件的超大文件管理系统,其特征在于,
所述分割情况包括:子文件名称和子文件大小;
其中,所述子文件名称包括:所述唯一文件名和序号;
其中,每一个所述子文件的子文件名称中的序号,按照子文件分割获得顺序依次增大;
所述至少两个子文件中,除末位分割出的子文件之外,任一其他子文件的子文件大小均等于所述分割阈值。
10.根据权利要求6至9中任一所述的基于对象存储组件的超大文件管理系统,其特征在于,
所述对象存储组件,用于针对所述至少两个子文件中的每一个子文件均执行:判断所述对象存储节点集群中是否存在至少一个满足公式组一的第一对象存储节点,若是,从所述至少一个第一对象存储节点中挑选出至少一个满足公式一的第二对象存储节点,并将当前子文件存储至任一所述第二对象存储节点中;
所述公式组一包括:
所述公式一包括:
其中,x1为一所述第一对象存储节点的剩余存储容量,a为所述分割阈值,xi为所述对象存储节点集群中第i个对象存储节点的剩余存储容量,n为所述对象存储节点集群中对象存储节点的总个数,为一所述第二对象存储节点的剩余存储容量与总存储容量的比值,max为求最大值,x1j为所述至少一个第一对象存储节点中第j个第一对象存储节点的剩余存储容量,X1j为所述第j个第一对象存储节点的总存储容量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811230083.8A CN109508324B (zh) | 2018-10-22 | 2018-10-22 | 一种基于对象存储组件的超大文件管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811230083.8A CN109508324B (zh) | 2018-10-22 | 2018-10-22 | 一种基于对象存储组件的超大文件管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109508324A true CN109508324A (zh) | 2019-03-22 |
CN109508324B CN109508324B (zh) | 2023-06-09 |
Family
ID=65745850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811230083.8A Active CN109508324B (zh) | 2018-10-22 | 2018-10-22 | 一种基于对象存储组件的超大文件管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109508324B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件系统元数据管理方法 |
CN104077406A (zh) * | 2014-07-10 | 2014-10-01 | 武汉光忆科技有限公司 | 一种海量文件并行刻录方法及装置 |
CN104391930A (zh) * | 2014-11-21 | 2015-03-04 | 用友软件股份有限公司 | 分布式文件存储装置和方法 |
JP2016118951A (ja) * | 2014-12-22 | 2016-06-30 | 日本電気株式会社 | 分散ファイルシステムおよびファイル分散配置方法 |
-
2018
- 2018-10-22 CN CN201811230083.8A patent/CN109508324B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件系统元数据管理方法 |
CN104077406A (zh) * | 2014-07-10 | 2014-10-01 | 武汉光忆科技有限公司 | 一种海量文件并行刻录方法及装置 |
CN104391930A (zh) * | 2014-11-21 | 2015-03-04 | 用友软件股份有限公司 | 分布式文件存储装置和方法 |
JP2016118951A (ja) * | 2014-12-22 | 2016-06-30 | 日本電気株式会社 | 分散ファイルシステムおよびファイル分散配置方法 |
Non-Patent Citations (1)
Title |
---|
李淼淼等: "基于中心节点的云存储系统应用分析", 《电子设计工程》 * |
Also Published As
Publication number | Publication date |
---|---|
CN109508324B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672267B2 (en) | Hybrid data management system and method for managing large, varying datasets | |
JP5759915B2 (ja) | ファイルリスト生成方法及びシステム並びにプログラム、ファイルリスト生成装置 | |
US20130218934A1 (en) | Method for directory entries split and merge in distributed file system | |
CN105787093B (zh) | 一种基于LSM-Tree结构的日志文件系统的构建方法 | |
CN108763436A (zh) | 一种基于ElasticSearch与HBase的分布式数据存储系统 | |
CN104133882A (zh) | 一种基于hdfs的小文件处理方法 | |
CN110447021A (zh) | 用于在数据中心之间维持元数据和数据的一致性的方法、装置和系统 | |
CN103647797A (zh) | 一种分布式文件系统及其数据访问方法 | |
CN105893542B (zh) | 一种云存储系统中的冷数据文件重分布方法及系统 | |
CN111209259B (zh) | Nas分布式文件系统及数据处理方法 | |
CN112181309A (zh) | 一种海量对象存储的在线扩容方法 | |
US11151081B1 (en) | Data tiering service with cold tier indexing | |
CN106303671A (zh) | 一种流媒体的播放方法 | |
CN106326239A (zh) | 分布式文件系统及其文件元信息管理方法 | |
US8195700B2 (en) | Distributed storage for collaboration servers | |
US20220417251A1 (en) | Team member transfer tool | |
CN108984686A (zh) | 一种基于日志合并的分布式文件系统索引方法和装置 | |
CN103049574B (zh) | 实现文件动态副本的键值文件系统及方法 | |
CN109165206A (zh) | 基于容器的hdfs高可用实现方法 | |
CN107203623B (zh) | 网络爬虫系统的负载均衡调节方法 | |
CN107408239B (zh) | 通过多个邮箱在通信应用中进行海量数据管理的架构 | |
CN104021137A (zh) | 一种基于目录授权的客户端本地开闭文件的方法及系统 | |
CN102360382A (zh) | 一种高速对象并行存储系统目录复制方法 | |
CN109508324A (zh) | 一种基于对象存储组件的超大文件管理方法及系统 | |
CN111143366B (zh) | 一种针对海量大对象数据的高效能存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |