CN110445822A - 一种对象存储方法及装置 - Google Patents
一种对象存储方法及装置 Download PDFInfo
- Publication number
- CN110445822A CN110445822A CN201810414283.2A CN201810414283A CN110445822A CN 110445822 A CN110445822 A CN 110445822A CN 201810414283 A CN201810414283 A CN 201810414283A CN 110445822 A CN110445822 A CN 110445822A
- Authority
- CN
- China
- Prior art keywords
- storage
- node
- dummy node
- memory system
- dummy
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据存储技术领域,尤其涉及一种对象存储方法及装置,用以解决现有技术中当分布式存储系统中的节点发生故障时,其采用的对象存储策略会降低其服务性能的问题;本申请实施例提供的对象存储方法,应用于分布式存储系统,系统中的每一Object均存在至少一个副本,包括:任一虚拟节点确定系统中其它虚拟节点发生故障时,获取未故障虚拟节点的业务负载情况;根据各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object采用的存储策略;按照该存储策略对所述Object进行备份存储,这样,结合各虚拟节点的业务负载情况选择出的存储策略,与分布式存储系统当前可用存储资源之间更匹配,故能提高分布式存储系统的服务性能。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种对象存储方法及装置。
背景技术
传统的网络存储系统采用集中式存储服务器存放所有数据,其中,主流的集中式存储服务器如光纤通道(Fiber Channel,FC)存储区域网络(Storage Area Network,SAN)、网络之间互连的协议(Internet Protocol,IP)SAN、以及网络存储器(Network AttachedStorage,NAS)等,但随着大数据和云计算的发展,传统的集中式存储服务器已无法满足对海量数据的存储、访问等需求,因此,分布式存储系统应运而生。
分布式存储系统一般包含多个物理节点,即物理存储服务器,这些物理节点共同分担分布式存储系统的存储负荷,一起为客户端提供数据储存服务,并且,为了提高存储对象的可靠性,分布式存储系统中的对象(Object)均以多副本形式进行存储。现有技术中,当分布式存储系统中的物理节点发生故障时,会对即将存储到故障节点中的Object的备份存储策略进行调整,但都是采用单一的存储策略来存储这些Object,这样,虽然可以保证故障期间分布式存储系统为客户提供的存储服务不间断,但却无法充分利用各物理节点的存储资源,因此,会降低分布式存储系统的服务性能。
可见,现有技术存在着当分布式存储系统中的节点发生故障时,其采用的对象存储策略会降低其服务性能的问题。
发明内容
本申请实施例提供一种对象存储方法及装置,用以解决现有技术中当分布式存储系统中的节点发生故障时,其采用的对象存储策略会降低其服务性能的问题。
第一方面,本申请实施例提供的一种对象存储方法,应用于分布式存储系统,且分布式存储系统中的每一Object均存在至少一个副本,该方法包括:分布式存储系统中的任一虚拟节点在确定系统中其它虚拟节点发生故障时,获取未发生故障的各虚拟节点的业务负载情况,进而根据各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object所采用的存储策略,后续按照该存储策略对待存储到故障虚拟节点中的Object进行备份存储,其中,虚拟节点是对分布式存储系统中物理节点的存储空间进行映射得到的。
为了充分利用分布式存储系统中各物理节点的存储资源,上述方案中,先根据每一物理节点的存储空间将物理节点映射为虚拟节点,再以虚拟节点为单位进行Object存储,当任一虚拟节点确定分布式存储系统中出现故障的虚拟节点时,可以根据未发生故障的虚拟节点的业务负载情况和预设的存储策略选择规则,选择待存储到故障虚拟节点中的Object的存储策略,进而根据该存储策略对相关Object进行备份存储,这样,结合各虚拟节点的业务负载情况选择出的存储策略,与分布式存储系统中当前可用的存储资源之间更匹配,因此,能够提高分布式存储系统的整体服务性能。
在一种可能的实施方式下,可以根据每一虚拟节点的业务负载情况,计算分布式存储系统中各虚拟节点的总业务负载量,进而判断总业务负载量是否大于第一预设阈值,若是,则确定采用集群降级策略对Object进行存储;否则,确定采用自动恢复策略对Object进行存储,其中,集群降级策略是指对Object按照少于原副本个数的方式进行存储;自动恢复策略是指对Object按照原副本个数进行存储。
采用上述方案,在确定出现故障的虚拟节点时,可以根据当前的总业务负载情况,选择出最适合当前业务负载情况的对象存储策略,进而将故障对分布式存储系统的冲击降到最低。
在一种可能的实施方式下,采用集群降级策略时,对待存储到故障虚拟节点中的每一Object,可以仍然采用哈希算法将该Object映射到故障虚拟节点上,但实际上不在故障虚拟节点中对该Object进行存储,使该Object的副本少于原副本个数,这样,在确定分布式存储系统的业务负载量比较大时,相应地减少Object的副本存储数量,不但可以保证分布式存储系统能够正常为用户提供服务,而且不影响用户对该对象的正常使用。
在一种可能的实施方式下,若将每一Object在不同物理节点中进行备份存储,则按照集群降级策略对待存储到故障虚拟节点中的Object进行备份存储之后,还可以在确定故障虚拟节点修复以后,将Object的副本个数恢复到原副本个数,以保证每一Object均是按照原副本个数进行存储,进一步提高分布式存储系统的稳定性。
具体地,确定故障虚拟节点修复以后,可以向修复后的虚拟节点发送需要进行修复的目录信息,指示修复后的虚拟节点针对目录下的每一Object,确定储该Object的虚拟节点,并向该虚拟节点请求复制该Object;也可以当接收到访问Object的请求时,对存储有该Object的各虚拟节点进行检查,若确定某一虚拟节点中未存储有该Object,则触发未存储该Object的虚拟节点向其它存储有该Object的虚拟节点发送复制请求,从其它虚拟节点复制该Object。
在一种可能的实施方式下,采用自动恢复策略时,对待存储到故障虚拟节点中的每一Object,可以将该Object存储到其它未发生故障的节点,保证该Object按照原副本个数进行存储,这样,在确定分布式存储系统的业务负载量较低时,可以充分调动分布式存储系统中各虚拟节点的存储资源,以保证节点故障期间对待存储到故障虚拟节点中的对象仍然按照原副本个数进行保存。
具体地,在将每一Object存储到其它未发生故障的节点时,可以确定分布式存储系统中业务负载低于第二预设阈值的虚拟节点,进而将该Object存储到这些业务负载低于第二预设阈值的虚拟节点的任一虚拟节点中,这样,采用负载比较低的虚拟节点来存储Object,以充分利用分布式存储系统中虚拟节点的存储资源。
可选地,分布式存储系统中的各虚拟节点均匀分布式存储系统的存储空间,且每一虚拟节点中记录有为任一虚拟节点分配的存储空间的编号区间及其标识之间的对应关系。
在一种可能的实施方式下,分布式存储系统中的每一虚拟节点在接收到Object时,可以根据以下步骤对该Object进行存储:
确定该Object对应的元数据,并对该Object进行切片处理,得到至少一份切片数据,进而对元数据和每一份切片数据均进行C+1次存储,其中,C代表该Object的副本个数,且为大于零的整数。
具体地,对元数据和每一份切片数据,均按照以下步骤进行第i次存储:
利用哈希算法、该Object的存储路径、该Object的名称、目标数据的属性和存储次数i,确定进行第i次存储时目标数据对应的键值,确定键值落入的编号区间,进而将目标数据存入编号区间对应的虚拟节点中,其中,目标数据为切片数据时,切片数据的属性至少包括切片索引;目标数据为元数据时,元数据的属性至少包括元数据的标识;1≤i≤C+1。
采用上述方案,不但可以将Object均匀分布在各虚拟节点中,并且对Object的元数据和每份切片数据均利用哈希算法进行存储,可以使元数据和切片数据都能均匀分布在各虚拟节点中,因此,能够进一步提高分布式存储系统中各虚拟节点的负载均衡性。
第二方面,本申请实施例提供的一种对象存储装置,位于分布式存储系统中,所述分布式存储系统中的每一Object均存在至少一个副本,包括:
获取模块,用于确定分布式存储系统中出现故障虚拟节点时,获取未发生故障的各虚拟节点的业务负载情况,所述虚拟节点是对所述分布式存储系统中物理节点的存储空间进行映射得到的;
选择模块,用于根据所述各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object采用的存储策略;
存储模块,用于按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储。
第三方面,本申请实施例提供的一种计算机,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述计算机执行上述对象存储方法的步骤。
第四方面,本申请实施例提供的一种计算机可读存储介质,包括程序代码,当所述程序代码在计算机上运行时,使所述计算机执行上述对象存储方法的步骤。
另外,第二方面至第四方面中任一种设计方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为本申请实施例提供的Hash Ring的示意图;
图2为本申请实施例提供的Object与物理节点之间的映射关系示意图;
图3为本申请实施例提供的Object与虚拟节点之间的对应关系示意图;
图4为本申请实施例提供的分布式存储系统中各虚拟节点的Node Flag的示意图;
图5为本申请实施例提供的对象存储方法的应用场景示意图;
图6为本申请实施例提供的对象存储方法流程图;
图7为本申请实施例提供的对象存储装置结构图;
图8为本申请实施例提供的用于实现对象存储方法的计算机的硬件结构示意图。
具体实施方式
为了解决现有技术中当分布式存储系统中的节点发生故障时,其采用的对象存储策略会降低其服务性能的问题,本申请实施例提供了一种对象存储方法和装置。
首先,对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
哈希(Hash)算法,用来对数据片段进行哈希计算,确定其哈希值的算法,典型的哈希算法如MD2、MD4、MD5和安全散列算法-1(Secure Hash Algorithm-1,SHA-1)等,哈希算法也称为哈希函数。
Object,存储到分布式存储系统中的分片数据。
物理节点,即物理存储服务器。
哈希环(Hash Ring),通过Hash算法将Object和节点(物理节点或者虚拟节点)对应的键值映射到一个具有2^64个桶的数字空间(对应于分布式存储系统的总存储空间)中,然后将这些数字头尾相连,想象成一个闭合的环形,如图1所示。
具体实施时,可以将图1所示的0~(2^64)-1个数字空间所对应的存储空间均分给每个物理节点,并记录每个物理节点对应的存储空间的编号区间。当对某个Object进行哈希计算得到相应的键值后,确定该键值落入的编号区间,进而将该Object存入该编号区间对应的物理节点中,由于哈希算法的均匀性特点,可以保证将所有Object均匀地分布在各个物理节点上。
具体实施时,可以通过Hash(Object)=Key得到Object对应的键值,再将键值映射到Hash Ring中的节点上,如图2所示,为Object与物理节点之间的映射关系示意图。
图2中,深灰色的KEY1、KEY2、KEY3分别代表物理节点Node1、Node2、Node3对应的键值,浅灰色的Key1代表Object1经过哈希计算后的键值,浅灰色的Key2、Key3、Key4代表Object2经过哈希计算后的键值,其中,Object2在分布式存储系统中存储了三份,且存储在两个不同的物理节点Node2和Node3中,这样,可以提高Object2的备份可靠性。
参见图2,Object1经过哈希计算后的Key1连接到Node1对应的KEY1,说明Key1落入了Node1对应的编号区间,Object1存储在Node1中;类似地,Object2经过哈希计算后的Key2和Key3连接到Node3对应的KEY3,说明Key2和Key3都落入了Node3对应的编号区间,Object2在Node3中存储两份;Object2经过哈希计算后的Key4连接到Node2对应的KEY2,说明Key4落入了Node2对应的编号区间,Object2在Node2中存储一份。
目前,分布式存储系统的总存储空间是均匀地分配给每个物理节点,但实际上,每个物理节点的存储空间并不是相同的,这样,存储空间比较大的物理节点的存储空间就会被浪费,为了使分布式存储系统中的数据分布地更加均匀,引入了虚拟节点(Vnode)的概念。
虚拟节点,是对物理节点的映射,其数量由物理节点的存储空间确定。
比如,某物理节点的磁盘空间为2T,一个虚拟节点的存储空间为1T,则该物理节点可以映射出2个虚拟节点,且每个虚拟节点的存储空间均为1T,物理的磁盘空间越大,映射出虚拟节点的个数越多。
进一步地,将分布式存储系统的总存储空间均分给所有的虚拟节点,类似地,每一虚拟节点中也可以记录为任一虚拟节点分配的存储空间的编号区间及其标识之间的对应关系,这样,后续每一虚拟节点都可以利用该对应关系来存储对象。
沿用图2,假设图2中的Node1映射出一个Vnode1-1,Node2映射出一个Vnode2-1,Node3映射出两个Vnode3-1和Vnode3-2,则Object与虚拟节点之间的对应关系示意图如图3所示。
图3中,深灰色的KEY1-1、KEY2-1、KEY3-1、KEY3-2分别代表Vnode1-1、Vnode2-1、Vnode3-1、Vnode3-2对应的键值,浅灰色的Key1代表Object1经过哈希计算后的键值,浅灰色的Key2、Key3、Key4代表Object2经过哈希计算后的键值,其中,Object2在三个虚拟节点Vnode2-1、Vnode3-1和Vnode3-2中分别存储了一份。
参见图3,Object1经过哈希计算后的Key1连接到Vnode1-1对应的KEY1-1,说明Key1落入了Vnode1-1对应的编号区间,Object1存储在Vnode1-1中;类似地,Object2经过哈希计算后的Key2连接到Vnode3-1对应的KEY3-1,说明Key2落入了Vnode3-1对应的编号区间,Object2在Vnode3-1中存储一份,Object2经过哈希计算后的Key3连接到Vnode3-2对应的KEY3-2,说明Key3落入了Vnode3-2对应的编号区间,Object2在Vnode3-2中存储一份,Object2经过哈希计算后的Key4连接到Vnode2-1对应的KEY2-1,说明Key4落入了Vnode2-1对应的编号区间,Object2在Vnode2-1中存储一份。
Node Flag,用于标示虚拟节点是否在分布式存储系统中,其中,IN代表虚拟节点在分布式存储系统中;GONE代表虚拟节点脱离分布式存储系统,此时,映射到该虚拟节点上的Object会丢失,如图4所示,为分布式存储系统中各虚拟节点的Node Flag的示意图。
参见图5,图5示出了本申请实施例提供的对象存储方法的应用场景示意图,包括客户端和分布式存储系统,其中,分布式存储系统包含多个虚拟节点(图中仅示出了一个虚拟节点),且在每一虚拟节点下可以挂载多个客户端,客户端通过网络块设备(NetworkBlock Device,NBD)、互联网小型计算机系统接口(Internet Small Computer SystemInterface,ISCSI)、网络文件系统(Network File System,NFS)、Restful等传输协议与分布式存储系统进行通信。
图5中,客户端通过虚拟节点在分布式存储系统中的挂载路径为:/dev/sdx,假设客户端向虚拟节点发送的Object包含三部分有效数据:Data Object0、Data Object1和Data Object3,则虚拟节点在接收到该Object后,可以先确定Object对应的元数据MataObject,再根据预设的分片数据大小将Object划分为三份分片数据:Data Object0、DataObject1和Data Object3,之后将Mata Object和每一份分片数据都在分布式存储系统中存储三份,从而得到Object在分布式存储系统中的对象存储簇。
具体地,分布式存储系统中的每一虚拟节点可以根据以下步骤对接收到的Object进行备份存储:
先根据Object的结构确定其对应的元数据,再根据预设大小对Object进行切片处理,得到至少一份切片数据,最后对元数据和每一份切片数据均进行C+1次存储,其中,C代表Object的副本个数,为大于零的整数。
具体地,对元数据和每一份切片数据,均按照以下步骤进行第i次存储:
利用哈希算法、Object的存储路径、Object的名称、目标数据的属性和存储次数i,确定进行第i次存储时目标数据对应的键值,再确定该键值落入的编号区间,最后,将目标数据存入该编号区间对应的虚拟节点中,其中,当目标数据为切片数据时,切片数据的属性至少包括切片索引;当目标数据为元数据时,元数据的属性至少包括元数据的标识;1≤i≤C+1。
上述过程中,切片索引代表切片数据在Object中的存储位置信息,假设某Object切分出了4份切片数据,那么,可以按照这4份切片数据在Object中的顺序来确定其切片索引。参照图5,其中,0、1、3就可以看作是切片索引。
下面结合具体的实施例对上述过程进行详细介绍。
为了简单起见,假设分布式存储系统的总存储空间为4T,包含3个物理节点Node1、Node2和Node3,其中,Node1的存储空间为1T、Node2的存储空间为1T、Node3的存储空间为2T。假设虚拟节点的存储空间为1T,则Node1映射出一个Vnode1-1,Node2映射出一个Vnode2-1,Node3映射出两个Vnode3-1和Vnode3-2。
进步一地,将分布式存储系统的总存储空间4T均分给每一虚拟节点,假设4T空间对应的编号为0~399,为Vnode1-1分配的存储空间的编号区间为:0~99,为Vnode2-1分配的存储空间的编号区间为:100~199,为Vnode3-1分配的存储空间的编号区间为:200~299,为Vnode3-2分配的存储空间的编号区间为:300~399。
假设待存入分布式存储系统的对象为Object a,且Object a的存储路径为:/dev/sdx/Object a,假设针对Object a确定出的元数据为Mata Object a,进行切换后得到的切片数据为:Object a1、Object a2和Object a3,其中,下标1、2、3为切片索引,代表切片数据在Object a中的位置信息,1代表Object a1在Object a中位于最前位置,2代表Object a2在Object a中位于中间位置,3代表Object a3在Object a中位于最后位置。
进一步地,针对Mata Object a,可以将Object a的存储路径:/dev/sdx/Objecta、对象名称a、Mata Object a的标识和当前的存储次数i,作为哈希算子,利用哈希算法确定Mata Object a对应的键值。假设Mata Object a对应的键值为152,落入的编号区间为:100~199,即第i次可以将Mata Object a存入Vnode2-1。
以Object a1为例,针对Object a1,可以将Object a的存储路径:/dev/sdx/Objecta、对象名称a、Object a1的索引1和当前的存储次数i,作为哈希算子,利用哈希算法确定Object a1对应的键值。假设Object a1对应的键值为352,落入的编号区间为:300~399,即第i次可以将Object a1存入Vnode3-2。
本申请实施例中,在存储每一Object时,都是由哈希算法确定其存储节点,哈希算法的均匀性特点,可以保证所有Object能够均匀地分布在分布式存储系统中的各虚拟节点中,从而达到各虚拟节点的负载平衡。
并且,现有技术中,在对Object进行备份存储时,元数据是和备份数据存储在同一个物理节点中的,这样,元数据并不能均匀地分布在分布式存储系统中,而本申请中,元数据也是均匀分布在分布式存储系统中的各虚拟节点中,因此,可以进一步提高各虚拟节点的负载均衡性。
本申请实施例中,分布式存储系统包含多个物理节点,每一物理节点可以映射出至少一个虚拟节点,每一虚拟节点下可以挂载多个客户端,每一客户端通过其挂载的虚拟节点与分布式存储系统进行通信,使用分布式存储系统提供的数据存储服务。
其中,分布式存储系统中的每一虚拟节点都具备将接收到的对象均匀地分布到分布式存储系统中的能力。对于客户端来说,表面看起来其存储和访问的对象都位于自己挂载的虚拟节点中,但实际上,这些对象可能并未存储在客户端挂载的虚拟节点中,而是存放在其它虚拟节点中。
并且,分布式存储系统中的每一虚拟节点还可以获取到其它虚拟节点的业务负载情况,如I/O负载情况,彼此之间进行业务监控。
如图6所示,为本申请实施例提供的对象存储方法的流程图,包括以下步骤:
S601:分布式存储系统中的任一虚拟节点确定其它虚拟节点发生故障时,获取未发生故障的各虚拟节点的业务负载情况。
具体实施时,不同物理节点之间可以通过ping维持心跳,根据ping结果确定各物理节点的Flag值。具体地,如果某物理节点的网络连通且能够正常提供服务,则可确定其Flag为IN,否则,确定其Flag为GONE。
其中,以ping维持心跳可以发现发生故障的物理节点,当确定某一物理节点的Flag为GONE时,其映射出的虚拟节点的Flag均为GONE。
实际应用中,一个虚拟节点可以看作是一个磁盘,对于一个物理节点来说,一个磁盘发生损坏,另一个磁盘可能仍可以工作,因此,还可以以虚拟节点为单位来确定虚拟节点的Flag取值,比如,当某虚拟节点无法进行读写,而从其它虚拟节点请求Object时,被请求的虚拟节点则可以确定请求方虚拟节点发生了损坏,进而将请求方虚拟节点的Flag置为GONE。
进一步地,向每一未发生故障的虚拟节点请求获取其业务负载情况,如IO读写量等。
S602:根据各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object采用的存储策略。
其中,存储策略用于确定是否对待存储到故障虚拟节点中每一Object按照原副本个数进行存储。
实际应用中,当分布式存储系统的业务负载比较大时,如果仍然对每一Object采用原备份个数进行存储,必然会加重分布式存储系统的负担,有可能会对分布式存储系统当前提供的业务产生影响,此时,可以相应地减少Object的备份个数,以保证分布式存储系统能够正常提供服务,并且,由于只是减少了Object的备份个数,所以也不会影响用户对Object的正常使用。
具体实施时,可以根据每一虚拟节点的业务负载情况,计算分布式存储系统中各虚拟节点的总业务负载量,进而判断总业务负载量是否大于第一预设阈值,若是,则确定采用集群降级策略对待存储到故障虚拟节点中的Object进行存储;否则,确定采用自动恢复策略对待存储到故障虚拟节点中的Object进行存储。
其中,集群降级策略是指对待存储到故障虚拟节点中的Object按照少于原副本个数的方式进行存储;自动恢复策略是指对待存储到故障虚拟节点中的Object按照原副本个数进行存储。
S603:按照选择的存储策略对待存储到故障虚拟节点中的Object进行备份存储。
可选地,若确定采用集群降级策略,则对待存储到故障虚拟节点中的每一Object,可以仍然采用哈希算法将该Object映射到故障虚拟节点上,但实际并不在故障虚拟节点中对该Object进行存储,从而使该Object的副本少于原副本个数。
具体实施时,为了提高Object的可靠性,并不将每一Object的所有备份放在同一个物理节点中,而是将每一Object在不同的物理节点中,这样,即使一个物理节点发生故障,还能够从其它物理节点中获取到该Object。
鉴于每一Object在不同物理节点中进行备份存储,则在选择集群降级策略对待存储到故障虚拟节点中的每一Object进行备份存储之后,还可以在确定故障虚拟节点修复以后,将Object的副本个数恢复到原副本个数。
一种方式为,向修复后的虚拟节点发送需要进行修复的目录信息,指示修复后的虚拟节点针对目录下的每一Object,确定储该Object的虚拟节点,并向这些虚拟节点请求复制该Object,使该Object的副本个数恢复到原副本个数。
另一种方式为,当接收到访问Object的请求时,对存储有该Object的各虚拟节点进行检查,若确定某一虚拟节点中未存储有该Object,则触发未存储该Object的虚拟节点向其它存储有该Object的虚拟节点发送复制请求,从其它虚拟节点复制该Object。
可选地,若确定采用自动恢复策略,则对待存储到故障虚拟节点中的每一Object,可以将该Object存储到其它未发生故障的节点,从而使该Object按照原副本个数进行存储。
具体地,针对待存储到故障虚拟节点中的每一Object,可以确定分布式存储系统中业务负载低于第二预设阈值的虚拟节点,进而将该Object存储到业务负载低于第二预设阈值的虚拟节点的任一虚拟节点中。
采用自动恢复策略时,分布式存储系统中的对象迁移量只有故障虚拟节点所存的对象,由于对象均匀分布在每个虚拟节点上,当发生对象迁移时,整个集群都将同时并发地进行,这样,能够保证在最快的时间内完成对象迁移,并且可以将对象均衡到每个虚拟节点上。
现有技术中,当确定物理节点发生故障以后,采用的集群恢复策略是对即将存入故障节点中的Object不再进行备份存储,后续当节点修复以后也不再恢复Object的副本个数,这样,Object少一个副本,可能会影响分布式存储系统的可靠性。而本申请中,无论集群降级策略还是采用自动恢复策略,最终都可以保证Object仍是按照原副本数量进行存储的,因此,不会影响分布式存储系统的可靠性。
并且,本申请实施例中,由于Object在分布式存储系统中是均匀分布的,那么在采用集群降级策略后,可以从多个虚拟节点上对Object进行副本恢复,这样,每个虚拟节点产生的数据迁移量都比较小,也不会给分布式存储系统带来太大负担;采用自动恢复策略时,迁移到其它未发生故障的虚拟节点上的Object也是均匀地分布在这些虚拟节点上的,也不会给某个虚拟节点带来过大负担,因此,也不会影响分布式存储系统的整体稳定性。
基于同一发明构思,本申请实施例中还提供了一种与对象存储方法对应的对象存储装置,由于该装置解决问题的原理与本申请实施例对象存储方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图7所示,为本申请实施例提供的对象存储装置结构图,包括:
获取模块701,用于确定分布式存储系统中出现故障虚拟节点时,获取未发生故障的各虚拟节点的业务负载情况,所述虚拟节点是对所述分布式存储系统中物理节点的存储空间进行映射得到的;
选择模块702,用于根据所述各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object采用的存储策略;
存储模块703,用于按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储。
在一种可能的实施方式下,所述选择模块702具体用于:
根据每一虚拟节点的业务负载情况,计算所述分布式存储系统中各虚拟节点的总业务负载量;
判断所述总业务负载量是否大于第一预设阈值;
若是,则确定采用集群降级策略对所述Object进行存储;否则,确定采用自动恢复策略对所述Object进行存储;
其中,集群降级策略是指对所述Object按照少于原副本个数的方式进行存储;自动恢复策略是指对所述Object按照原副本个数进行存储。
在一种可能的实施方式下,若确定采用集群降级策略,所述存储模块703具体用于:
对待存储到故障虚拟节点中的每一Object,采用哈希算法将所述Object映射到故障虚拟节点上,但不在故障虚拟节点中对所述Object进行存储,使所述Object的副本少于原副本个数。
在一种可能的实施方式下,若将每一Object在不同物理节点中进行备份存储,所述装置还包括,恢复模块704:
恢复模块704,用于按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储,并确定故障虚拟节点修复以后,将Object的副本个数恢复到原副本个数。
在一种可能的实施方式下,所述恢复模块704具体用于:
向修复后的虚拟节点发送需要进行修复的目录信息,指示所述修复后的虚拟节点针对目录下的每一Object,确定储该Object的虚拟节点,并向所述虚拟节点请求复制该Object;或者
当接收到访问Object的请求时,对存储有该Object的各虚拟节点进行检查,若确定某一虚拟节点中未存储有该Object,则触发未存储该Object的虚拟节点向其它存储有该Object的虚拟节点发送复制请求,从其它虚拟节点复制该Object。
在一种可能的实施方式下,若确定采用自动恢复策略,所述存储模块703具体用于:
对待存储到故障虚拟节点中的每一Object,将所述Object存储到其它未发生故障的节点,使所述Object按照原副本个数进行存储。
在一种可能的实施方式下,所述存储模块703具体用于:
确定所述分布式存储系统中业务负载低于第二预设阈值的虚拟节点;
将所述Object存储到所述业务负载低于第二预设阈值的虚拟节点的任一虚拟节点中。
可选地,所述分布式存储系统中的各虚拟节点均分所述分布式存储系统的存储空间,且每一虚拟节点中记录有为任一虚拟节点分配的存储空间的编号区间及其标识之间的对应关系。
在一种可能的实施方式下,所述存储模块703,还用于根据以下步骤对接收到的Object进行备份存储:
确定所述Object对应的元数据,并对所述Object进行切片处理,得到至少一份切片数据,对所述元数据和每一份切片数据均进行C+1次存储;以及
对所述元数据和每一份切片数据,均按照以下步骤进行第i次存储:
利用哈希算法、所述Object的存储路径、所述Object的名称、目标数据的属性和存储次数i,确定进行第i次存储时所述目标数据对应的键值,确定所述键值落入的编号区间,将所述目标数据存入所述编号区间对应的虚拟节点中;
其中,目标数据为切片数据时,切片数据的属性至少包括切片索引;目标数据为元数据时,元数据的属性至少包括元数据的标识;C代表所述Object的副本个数,且为大于零的整数,1≤i≤C+1。
如图8所示,为本申请实施例提供的用于实现对象存储方法的计算机的硬件结构示意图,包括处理器810、通信接口820、存储器830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。
存储器830,用于存放计算机程序;
处理器810,用于执行存储器830上所存放的程序时,使得计算机执行上述对象存储方法的步骤。
本申请实施例提供的一种计算机可读存储介质,包括程序代码,当所述程序代码在计算机上运行时,使计算机执行上述对象存储方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种对象存储方法,应用于分布式存储系统,其特征在于,所述分布式存储系统中的每一对象Object均存在至少一个副本,所述方法包括:
所述分布式存储系统中的任一虚拟节点确定所述分布式存储系统中其它虚拟节点发生故障时,获取未发生故障的各虚拟节点的业务负载情况,所述虚拟节点是对所述分布式存储系统中物理节点的存储空间进行映射得到的;
根据所述各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object采用的存储策略;
按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储。
2.如权利要求1所述的方法,其特征在于,根据所述各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object采用的存储策略,包括:
根据每一虚拟节点的业务负载情况,计算所述分布式存储系统中各虚拟节点的总业务负载量;
判断所述总业务负载量是否大于第一预设阈值;
若是,则确定采用集群降级策略对所述Object进行存储;否则,确定采用自动恢复策略对所述Object进行存储;
其中,集群降级策略是指对所述Object按照少于原副本个数的方式进行存储;自动恢复策略是指对所述Object按照原副本个数进行存储。
3.如权利要求2所述的方法,其特征在于,若确定采用集群降级策略,则按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储,包括:
对待存储到故障虚拟节点中的每一Object,采用哈希算法将所述Object映射到故障虚拟节点上,但不在故障虚拟节点中对所述Object进行存储,使所述Object的副本少于原副本个数。
4.如权利要求3所述的方法,其特征在于,若将每一Object在不同物理节点中进行备份存储,则按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储之后,所述方法还包括:
在确定故障虚拟节点修复以后,将Object的副本个数恢复到原副本个数。
5.如权利要求4所述的方法,其特征在于,将Object的副本个数恢复到原副本个数,包括:
向修复后的虚拟节点发送需要进行修复的目录信息,指示所述修复后的虚拟节点针对目录下的每一Object,确定储该Object的虚拟节点,并向所述虚拟节点请求复制该Object;或者
当接收到访问Object的请求时,对存储有该Object的各虚拟节点进行检查,若确定某一虚拟节点中未存储有该Object,则触发未存储该Object的虚拟节点向其它存储有该Object的虚拟节点发送复制请求,从其它虚拟节点复制该Object。
6.如权利要求2所述的方法,其特征在于,若确定采用自动恢复策略,则按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储,包括:
对待存储到故障虚拟节点中的每一Object,将所述Object存储到其它未发生故障的节点,使所述Object按照原副本个数进行存储。
7.如权利要求6所述的方法,其特征在于,将所述Object存储到其它未发生故障的节点,包括:
确定所述分布式存储系统中业务负载低于第二预设阈值的虚拟节点;
将所述Object存储到所述业务负载低于第二预设阈值的虚拟节点的任一虚拟节点中。
8.如权利要求1所述的方法,其特征在于,所述分布式存储系统中的各虚拟节点均分所述分布式存储系统的存储空间,且每一虚拟节点中记录有为任一虚拟节点分配的存储空间的编号区间及其标识之间的对应关系。
9.如权利要求8所述的方法,其特征在于,根据以下步骤对接收到的Object进行备份存储:
确定所述Object对应的元数据,并对所述Object进行切片处理,得到至少一份切片数据,对所述元数据和每一份切片数据均进行C+1次存储;以及
对所述元数据和每一份切片数据,均按照以下步骤进行第i次存储:
利用哈希算法、所述Object的存储路径、所述Object的名称、目标数据的属性和存储次数i,确定进行第i次存储时所述目标数据对应的键值,确定所述键值落入的编号区间,将所述目标数据存入所述编号区间对应的虚拟节点中;
其中,目标数据为切片数据时,切片数据的属性至少包括切片索引;目标数据为元数据时,元数据的属性至少包括元数据的标识;C代表所述Object的副本个数,且为大于零的整数,1≤i≤C+1。
10.一种对象存储装置,其特征在于,位于分布式存储系统中,所述分布式存储系统中的每一对象Object均存在至少一个副本,所述装置包括:
获取模块,用于确定所述分布式存储系统中出现故障虚拟节点时,获取未发生故障的各虚拟节点的业务负载情况,所述虚拟节点是对所述分布式存储系统中物理节点的存储空间进行映射得到的;
选择模块,用于根据所述各虚拟节点的业务负载情况和预设的存储策略选择规则,选择对待存储到故障虚拟节点中的Object采用的存储策略;
存储模块,用于按照所述存储策略对待存储到故障虚拟节点中的Object进行备份存储。
11.一种计算机,其特征在于,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述计算机执行权利要求1~9任一所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,包括程序代码,当所述程序代码在计算机上运行时,使所述计算机执行权利要求1~9任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810414283.2A CN110445822B (zh) | 2018-05-03 | 2018-05-03 | 一种对象存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810414283.2A CN110445822B (zh) | 2018-05-03 | 2018-05-03 | 一种对象存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110445822A true CN110445822A (zh) | 2019-11-12 |
CN110445822B CN110445822B (zh) | 2021-11-30 |
Family
ID=68427743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810414283.2A Active CN110445822B (zh) | 2018-05-03 | 2018-05-03 | 一种对象存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110445822B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111064808A (zh) * | 2019-12-30 | 2020-04-24 | 北京天融信网络安全技术有限公司 | 一种基于分布式存储系统的负载均衡方法及装置 |
CN111416753A (zh) * | 2020-03-11 | 2020-07-14 | 上海爱数信息技术股份有限公司 | 一种两节点Ceph集群的高可用方法 |
CN112083892A (zh) * | 2020-09-25 | 2020-12-15 | 上海依图网络科技有限公司 | 一种数据存储方法、装置、设备和介质 |
CN112187921A (zh) * | 2020-09-28 | 2021-01-05 | 北京浪潮数据技术有限公司 | 一种对象文件下载方法、装置、系统、服务器和存储介质 |
CN113377787A (zh) * | 2020-03-10 | 2021-09-10 | 阿里巴巴集团控股有限公司 | 存储管理方法、系统、存储管理装置及存储介质 |
CN113377861A (zh) * | 2020-02-25 | 2021-09-10 | 中移(苏州)软件技术有限公司 | 分布式存储系统的重构方法、装置、设备和存储介质 |
CN113553217A (zh) * | 2021-07-08 | 2021-10-26 | 广州炒米信息科技有限公司 | 数据恢复方法、装置、存储介质及计算机设备 |
CN114625325A (zh) * | 2022-05-16 | 2022-06-14 | 阿里云计算有限公司 | 分布式存储系统及其存储节点离线处理方法 |
CN116932555A (zh) * | 2023-08-14 | 2023-10-24 | 合芯科技有限公司 | 一种目标对象切片位置确定方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187547A (zh) * | 2015-09-25 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种负载均衡方法与系统 |
CN105335251A (zh) * | 2015-09-23 | 2016-02-17 | 浪潮(北京)电子信息产业有限公司 | 一种故障恢复方法及系统 |
US20160085647A1 (en) * | 2014-09-22 | 2016-03-24 | Netapp, Inc. | System and method for handling multi-node failures in a disaster recovery cluster |
CN105991458A (zh) * | 2015-02-02 | 2016-10-05 | 中兴通讯股份有限公司 | 一种负载均衡的方法及负载均衡装置 |
US20160335166A1 (en) * | 2015-05-14 | 2016-11-17 | Cisco Technology, Inc. | Smart storage recovery in a distributed storage system |
CN107171971A (zh) * | 2017-05-11 | 2017-09-15 | 北京云端智度科技有限公司 | 利用一致性哈希策略实现网络流量负载均衡的方法 |
CN107885758A (zh) * | 2016-09-30 | 2018-04-06 | 华为技术有限公司 | 一种虚拟节点的数据迁移方法和虚拟节点 |
CN107943615A (zh) * | 2017-11-06 | 2018-04-20 | 许继集团有限公司 | 基于分布式集群的数据处理方法与系统 |
-
2018
- 2018-05-03 CN CN201810414283.2A patent/CN110445822B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160085647A1 (en) * | 2014-09-22 | 2016-03-24 | Netapp, Inc. | System and method for handling multi-node failures in a disaster recovery cluster |
CN105991458A (zh) * | 2015-02-02 | 2016-10-05 | 中兴通讯股份有限公司 | 一种负载均衡的方法及负载均衡装置 |
US20160335166A1 (en) * | 2015-05-14 | 2016-11-17 | Cisco Technology, Inc. | Smart storage recovery in a distributed storage system |
CN105335251A (zh) * | 2015-09-23 | 2016-02-17 | 浪潮(北京)电子信息产业有限公司 | 一种故障恢复方法及系统 |
CN105187547A (zh) * | 2015-09-25 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种负载均衡方法与系统 |
CN107885758A (zh) * | 2016-09-30 | 2018-04-06 | 华为技术有限公司 | 一种虚拟节点的数据迁移方法和虚拟节点 |
CN107171971A (zh) * | 2017-05-11 | 2017-09-15 | 北京云端智度科技有限公司 | 利用一致性哈希策略实现网络流量负载均衡的方法 |
CN107943615A (zh) * | 2017-11-06 | 2018-04-20 | 许继集团有限公司 | 基于分布式集群的数据处理方法与系统 |
Non-Patent Citations (2)
Title |
---|
MARTIN RAACK: ""Okeanos: Reconfigurable fault-tolerant transactional storage supporting object deletions"", 《2010 INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING》 * |
赵黎斌: "" 面向云存储的分布式文件系统关键技术研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111064808A (zh) * | 2019-12-30 | 2020-04-24 | 北京天融信网络安全技术有限公司 | 一种基于分布式存储系统的负载均衡方法及装置 |
CN113377861A (zh) * | 2020-02-25 | 2021-09-10 | 中移(苏州)软件技术有限公司 | 分布式存储系统的重构方法、装置、设备和存储介质 |
CN113377787A (zh) * | 2020-03-10 | 2021-09-10 | 阿里巴巴集团控股有限公司 | 存储管理方法、系统、存储管理装置及存储介质 |
CN113377787B (zh) * | 2020-03-10 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 存储管理方法、系统、存储管理装置及存储介质 |
CN111416753B (zh) * | 2020-03-11 | 2021-12-03 | 上海爱数信息技术股份有限公司 | 一种两节点Ceph集群的高可用方法 |
CN111416753A (zh) * | 2020-03-11 | 2020-07-14 | 上海爱数信息技术股份有限公司 | 一种两节点Ceph集群的高可用方法 |
CN112083892A (zh) * | 2020-09-25 | 2020-12-15 | 上海依图网络科技有限公司 | 一种数据存储方法、装置、设备和介质 |
CN112083892B (zh) * | 2020-09-25 | 2021-05-18 | 上海依图网络科技有限公司 | 一种数据存储方法、装置、设备和介质 |
CN112187921A (zh) * | 2020-09-28 | 2021-01-05 | 北京浪潮数据技术有限公司 | 一种对象文件下载方法、装置、系统、服务器和存储介质 |
CN113553217A (zh) * | 2021-07-08 | 2021-10-26 | 广州炒米信息科技有限公司 | 数据恢复方法、装置、存储介质及计算机设备 |
CN114625325A (zh) * | 2022-05-16 | 2022-06-14 | 阿里云计算有限公司 | 分布式存储系统及其存储节点离线处理方法 |
CN116932555A (zh) * | 2023-08-14 | 2023-10-24 | 合芯科技有限公司 | 一种目标对象切片位置确定方法、装置、设备及存储介质 |
CN116932555B (zh) * | 2023-08-14 | 2024-04-30 | 合芯科技有限公司 | 一种目标对象切片位置确定方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110445822B (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110445822A (zh) | 一种对象存储方法及装置 | |
US10873629B2 (en) | System and method of implementing an object storage infrastructure for cloud-based services | |
JP5210176B2 (ja) | 複数のノードを有するストレージ・システムの保護管理方法 | |
EP2784675B1 (en) | Method, device and system for data reconstruction | |
EP3258369B1 (en) | Systems and methods for distributed storage | |
US20180196719A1 (en) | Optimized remote cloning | |
US9904605B2 (en) | System and method for enhancing availability of a distributed object storage system during a partial database outage | |
US10425480B2 (en) | Service plan tiering, protection, and rehydration strategies | |
US10489412B2 (en) | Highly available search index with storage node addition and removal | |
US10592347B2 (en) | Selecting a store for deduplicated data | |
CN110169040A (zh) | 基于多层一致性哈希的分布式数据存储方法与系统 | |
US20160170657A1 (en) | Deduplicated data storage system having distributed manifest | |
US10496490B2 (en) | Selecting a store for deduplicated data | |
CN106156359A (zh) | 一种云计算平台下的数据同步更新方法 | |
US10534796B1 (en) | Maintaining an active-active cloud across different types of cloud storage services | |
CN103763383A (zh) | 一体化云存储系统及其存储方法 | |
US9824131B2 (en) | Regulating a replication operation | |
EP3005123A1 (en) | Restoring a file system object | |
US11231862B1 (en) | Localized lookups for efficient database service request processing | |
CN108173881A (zh) | 一种量子流数据块的随机存储方法与系统 | |
US10296490B2 (en) | Reporting degraded state of data retrieved for distributed object | |
US9971543B2 (en) | Methods and apparatus for storing electronic documents | |
EP3555756A1 (en) | System and method for utilizing a designated leader within a database management system | |
CN109213746A (zh) | Pb级历史数据和在线数据的实时计算的可视化建模方法 | |
US11977519B1 (en) | Multistream metadata verification for a deduplication system |
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 |