CN106708748B - 提高OpenStack块存储卷挂载性能的方法及系统 - Google Patents
提高OpenStack块存储卷挂载性能的方法及系统 Download PDFInfo
- Publication number
- CN106708748B CN106708748B CN201611189681.6A CN201611189681A CN106708748B CN 106708748 B CN106708748 B CN 106708748B CN 201611189681 A CN201611189681 A CN 201611189681A CN 106708748 B CN106708748 B CN 106708748B
- Authority
- CN
- China
- Prior art keywords
- volume
- block storage
- storage device
- computing node
- iqn
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种提高OpenStack块存储卷挂载性能的方法及系统,包括计算节点发起待建立连接的卷挂载请求;写入计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系到配置文件中;在块存储设备上建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;根据卷挂载请求中计算节点的iqn提取与其相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名;将待建立连接的卷放入所述卷集合内,并获取该卷在卷集合内的卷号;将块存储设备的iscsi端口号的iqn、iscsi端口号的ip信息和卷的卷号发送到计算节点。本发明有效的提高了卷挂载的执行效率。
Description
技术领域
本发明涉及OpenStack块存储领域,具体涉及一种提高OpenStack块存储卷挂载性能的方法及系统。
背景技术
随着信息技术的发展,云计算已经逐步成为了业界的发展热点,云计算技术也逐渐应用到教育、科学、文化、公安、政府、卫生等多个领域。 随着云计算平台中的用户数据越来越多,云计算平台中的计算节点的规模也逐渐增大。
在OpenStack云计算平台中,块存储服务为虚拟机提供持久化的存储卷。块存储服务主要通过iscsi和fc等协议将各存储厂商的块存储设备和虚拟机进行连接。卷挂载是通过指定的协议,将块存储设备上的卷连接到虚拟机上作为存储卷的过程,卷挂载功能由各存储厂商开发对应的驱动程序而具体实现。
当OpenStack云计算平台中的计算节点(管理虚拟机的节点)规模增长到一定规模时(100以上),并发的卷挂载操作会使云平台整体性能急剧下降,甚至还有可能出现挂载失败的情况。这些情况不仅降低了用户体验,而且还会降低存储厂商的市场竞争力。所以,如何提升大规模并发卷挂载的性能成为了块存储厂商必须要解决的问题。
发明内容
本发明所要解决的技术问题是针对上述现有技术的不足提供一种提高OpenStack块存储卷挂载性能的方法及系统,本提高OpenStack块存储卷挂载性能的方法及系统有效的提高了卷挂载的性能从而提高了执行效率。
为实现上述技术目的,本发明采取的技术方案为:
一种提高OpenStack块存储的卷挂载性能的方法,包括以下步骤:
步骤1:计算节点发起待建立连接的卷挂载请求;
步骤2:写入计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系到用于挂载映射关系的配置文件中;
步骤3:根据用于挂载映射关系的配置文件建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
步骤4:根据卷挂载请求中计算节点的iqn提取与其相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名;
步骤5:根据块存储设备的卷集合名获取属于该卷集合名的卷集合的卷号列表,若属于该卷集合的卷数达到该卷集合的存储上限值,则卷挂载创建失败,否则,执行下一步;
步骤6:将待建立连接的卷放入所述卷集合内从而实现计算节点与该卷的连接,并获取该卷在卷集合内的卷号;
步骤7:获取步骤4中的块存储设备的iscsi端口号的iqn和ip信息;
步骤8:将块存储设备的iscsi端口号的iqn、iscsi端口号的ip信息和步骤6中的卷的卷号发送到计算节点;
步骤9:计算节点获取卷的卷号从而提供该卷到卷挂载请求中的虚拟机上。
作为本发明进一步解决的技术方案,所述的步骤2包括:
构造计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
将计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系写入用于挂载映射关系的配置文件中。
作为本发明进一步解决的技术方案,所述的步骤3包括:执行自动化脚本,根据用于挂载映射关系的配置文件在块存储设备上建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系。
作为本发明进一步解决的技术方案,所述的步骤4包括:获取步骤1中的卷挂载请求,解析卷挂载请求中计算节点的iqn,从步骤2中的配置文件中提取与计算节点的iqn相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名。
本发明还提供了另一个技术方案:
一种提高OpenStack块存储的卷挂载性能的系统,包括Nova模块、Cinder模块、构造单元、写入单元、执行单元、解析单元、获取单元和移动单元;
其中Nova模块包括计算节点,Nova模块用于通过计算节点发起待建立连接的卷挂载请求;
构造单元用于构造计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
写入单元用于将计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系写入用于挂载映射关系的配置文件中;
执行单元用于根据用于挂载映射关系的配置文件在块存储设备上建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
Cinder模块用于获取Nova模块发送的卷挂载请求;
解析单元用于解析Cinder模块获取的卷挂载请求中计算节点的iqn,并从配置文件中提取与计算节点的iqn相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名;
获取单元用于根据块存储设备的卷集合名获取属于该卷集合名的卷集合的卷号列表;
移动单元用于将待建立连接的卷放入所述卷集合内从而实现计算节点与该卷的连接;
获取单元用于获取已建立连接的卷在所述卷集合内的卷号以及根据块存储设备的iscsi端口号获取该iscsi端口号的iqn和ip信息;
Cinder模块用于将获取单元获取的块存储设备的iscsi端口号的iqn、iscsi端口号的ip信息和已建立连接的卷的卷号发送到计算节点所在的Nova模块中;
Nova模块用于获取已建立连接的卷的卷号从而提供该卷到卷挂载请求中的虚拟机上。
本发明通过事先配置好块存储设备上的卷到计算节点的连接路径,即计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系,合理分配存储资源,自动检测并生成这些连接路径即映射关系。将并发挂载建立连接路径的压力释放,提高并发挂载的性能。同时还可以采用执行效率更高的块存储CLI(命令行接口)代替SMI-S(存储管理接口标准),提高卷挂载的执行效率。
附图说明
图1为本发明的工作流程图。
具体实施方式
本发明的核心是提供一种提高OpenStack块存储的卷挂载性能的方法及系统,旨在解决在由OpenStack搭建的云平台上,大规模并发卷挂载操作的情况下,OpenStack云平台系统的性能低下以及卷挂载失败的问题。
为了使本发明的上述优点能够更加明确易懂,下面结合附图对本发明的具体实施方式作出详细的说明。
参见图1,图1为一种提高OpenStack块存储的卷挂载性能的方法的流程图。
本发明提供了一种提高OpenStack块存储的卷挂载性能的方法,包括以下步骤:
(1)计算节点发起待建立连接的卷挂载请求。
(2)建立块存储设备上的卷到计算节点的连接,步骤(2)具体包括以下内容:
(a)构造计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;其中计算节点的iqn为虚拟机所在的计算节点的iqn(iSCSI Qualified Name,iSCSI限定名);
(b)将计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系写入用于挂载映射关系的配置文件中;一个典型的配置文件如下:
000=iqn.1994-05.com.redhat:cbaa896a1=test_ag#001;
101=iqn.1994-05.com.redhat:cbaa896a1=test_ag#002;
从左至右依次是存储设备的iscsi端口号、计算节点的iqn以及卷集合名(以等号分割);
(c)执行自动化脚本,根据用于挂载映射关系的配置文件内的映射关系在块存储设备上建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;自动化脚本的意义在于根据用于挂载映射关系的配置文件中指定的映射关系,在存储设备上建立起计算节点、存储设备iscsi端口以及块存储设备上的卷集合的通路(卷集合就是指一组存储卷的集合);
以上面的典型的配置文件为例,会建立以下两条通路:
iqn.1994-05.com.redhat:cbaa896a1→000→test_ag#001;
iqn.1994-05.com.redhat:cbaa896a1→101→test_ag#002;
(d)获取卷挂载请求,解析卷挂载请求中计算节点的iqn,从用于挂载映射关系的配置文件内提取与计算节点的iqn相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名;
(e)根据块存储设备的卷集合名获取属于该卷集合名的卷集合的卷号列表,若属于该卷集合的卷数达到该卷集合的存储上限值,则卷挂载创建失败,否则,执行下一步;
(f)将待建立连接的卷放入所述卷集合内,由于步骤(c)中已经建立了计算节点与卷集合的通路,使待建立连接的卷放入所述卷集合内实现了该卷与计算节点的通路即该卷与计算节点的连接;获取该卷在卷集合内的卷号;
(g)根据步骤d中的块存储设备的iscsi端口号获取该iscsi端口号的iqn和ip信息;
(h)将块存储设备的iscsi端口号的iqn、iscsi端口号的ip信息和已建立连接的卷的卷号发送到计算节点。
(3)计算节点获取已建立连接的卷的卷号,并通过发送iscsi的相关命令来发现已经和块存储设备建立连接的卷,提供该卷到卷挂载请求中的虚拟机上。
本发明还提供了一种提高OpenStack块存储的卷挂载性能的系统,包括Nova模块、Cinder模块、构造单元、写入单元、执行单元、解析单元、获取单元和移动单元;
Nova模块包括OpenStack的计算节点,Nova模块通过计算节点发起待建立连接的卷挂载请求;Nova模块通知Cinder模块建立块存储设备上的卷到计算节点的连接;Cinder模块返回建立卷到计算节点的连接成功的信息给计算节点的Nova模块中,Nova模块可以获取已建立连接的卷的卷号并通过发送iscsi的相关命令提供已建立连接的卷的卷号到卷挂载请求中的虚拟机上。
其中建立块存储设备上的卷到计算节点的连接,具体地为:构造单元构造计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系并通过写入单元将计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系写入用于挂载映射关系的配置文件中;一个典型的配置文件如下:
000=iqn.1994-05.com.redhat:cbaa896a1=test_ag#001;
101=iqn.1994-05.com.redhat:cbaa896a1=test_ag#002;
从左至右依次是存储设备的iscsi端口号、计算节点的iqn以及卷集合名(以等号分割);
执行单元用于执行自动化脚本,并根据用于挂载映射关系的配置文件中的映射关系在块存储设备上建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;自动化脚本的意义在于根据用于挂载映射关系的配置文件中指定的映射关系,在存储设备上建立起计算节点、存储设备iscsi端口以及存储设备卷集合的通路(卷集合就是指一组存储卷的集合);以上面的典型的配置文件为例,会建立以下两条通路:
iqn.1994-05.com.redhat:cbaa896a1→000→test_ag#001;
iqn.1994-05.com.redhat:cbaa896a1→101→test_ag#002;
Cinder模块获取Nova模块发送的卷挂载请求并调用块存储驱动程序;解析单元通过块存储驱动程序解析卷挂载请求中计算节点的iqn,并从配置文件中提取与计算节点的iqn相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名;解析单元通过块存储驱动程序发送存储命令给获取单元,获取单元根据块存储设备的卷集合名获取属于该卷集合名的卷集合的卷号列表;若该卷集合中的卷数已经达上限,则Cinder模块通知Nova模块卷挂载关系创建失败,结束,否则执行下一步;解析单元通过块存储驱动程序发送存储命令给移动单元,移动单元将待建立连接的卷放入所述卷集合内从而实现该卷与计算节点的连接;获取单元获取已建立连接的卷在所述卷集合内的卷号以及根据块存储设备的iscsi端口号获取该iscsi端口号的iqn和ip信息;Cinder模块通过存储驱动程序将获取单元获取的块存储设备的iscsi端口号的iqn、块存储设备的iscsi端口号的ip信息和已建立连接的的卷号发送到计算节点的Nova模块中。
通过本实施例实施后,通过性能测试工具测试出以下结果:
性能提高前和提高后的对比(并发卷挂载操作数:50):
单个卷挂载操作的最大耗时(单位秒) | 单个卷挂载操作的最快耗时(单位秒) | 卷挂载操作的平均耗时(单位秒) | 正确挂载百分率 | |
性能提高前 | 3000 | 223 | 987 | 86% |
性能提高后 | 280 | 27 | 209 | 100% |
性能提高后的对比
并发数 | 单个卷挂载操作的最大耗时(单位秒) | 单个卷挂载操作的最快耗时(单位秒) | 卷挂载操作的平均耗时(单位秒) | 正确挂载百分率 |
1 | 19 | 19 | 19 | 100% |
5 | 32 | 22 | 27 | 100% |
20 | 107 | 17 | 63 | 100% |
50 | 280 | 27 | 209 | 100% |
80 | 679 | 21 | 427 | 100% |
100 | 903 | 24 | 659 | 100% |
本发明的保护范围包括但不限于以上实施方式,本发明的保护范围以权利要求书为准,任何对本技术做出的本领域的技术人员容易想到的替换、变形、改进均落入本发明的保护范围。
Claims (5)
1.一种提高OpenStack块存储的卷挂载性能的方法,其特征在于:包括以下步骤:
步骤1:计算节点发起待建立连接的卷挂载请求;
步骤2:写入计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系到用于挂载映射关系的配置文件中;
步骤3:根据用于挂载映射关系的配置文件建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
步骤4:根据卷挂载请求中计算节点的iqn提取与其相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名;
步骤5:根据块存储设备的卷集合名获取属于该卷集合名的卷集合的卷号列表,若属于该卷集合的卷数达到该卷集合的存储上限值,则卷挂载创建失败,否则,执行下一步;
步骤6:将待建立连接的卷放入所述卷集合内从而实现计算节点与该卷的连接,并获取该卷在卷集合内的卷号;
步骤7:获取步骤4中的块存储设备的iscsi端口号的iqn和ip信息;
步骤8:将块存储设备的iscsi端口号的iqn、iscsi端口号的ip信息和步骤6中的卷的卷号发送到计算节点;
步骤9:计算节点获取卷的卷号从而提供该卷到卷挂载请求中的虚拟机上。
2.根据权利要求1所述的提高OpenStack块存储的卷挂载性能的方法,其特征在于:所述的步骤2包括:
构造计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
将计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系写入用于挂载映射关系的配置文件中。
3.根据权利要求2所述的提高OpenStack块存储的卷挂载性能的方法,其特征在于:所述的步骤3包括:执行自动化脚本,根据用于挂载映射关系的配置文件在块存储设备上建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系。
4.根据权利要求3所述的提高OpenStack块存储的卷挂载性能的方法,其特征在于:所述的步骤4包括:获取步骤1中的卷挂载请求,解析卷挂载请求中计算节点的iqn,从步骤2中的配置文件中提取与计算节点的iqn相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名。
5.一种提高OpenStack块存储的卷挂载性能的系统,其特征在于:包括Nova模块、Cinder模块、构造单元、写入单元、执行单元、解析单元、获取单元和移动单元;
其中Nova模块包括计算节点,Nova模块用于通过计算节点发起待建立连接的卷挂载请求;
构造单元用于构造计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
写入单元用于将计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系写入用于挂载映射关系的配置文件中;
执行单元用于根据用于挂载映射关系的配置文件在块存储设备上建立计算节点的iqn、块存储设备的iscsi端口号和块存储设备中的卷集合名的映射关系;
Cinder模块用于获取Nova模块发送的卷挂载请求;
解析单元用于解析Cinder模块获取的卷挂载请求中计算节点的iqn,并从配置文件中提取与计算节点的iqn相对应的块存储设备的iscsi端口号和块存储设备中的卷集合名;
获取单元用于根据块存储设备的卷集合名获取属于该卷集合名的卷集合的卷号列表;
移动单元用于将待建立连接的卷放入所述卷集合内从而实现计算节点与该卷的连接;
获取单元用于获取已建立连接的卷在所述卷集合内的卷号以及根据块存储设备的iscsi端口号获取该iscsi端口号的iqn和ip信息;
Cinder模块用于将获取单元获取的块存储设备的iscsi端口号的iqn、iscsi端口号的ip信息和已建立连接的卷的卷号发送到计算节点所在的Nova模块中;
Nova模块用于获取已建立连接的卷的卷号从而提供该卷到卷挂载请求中的虚拟机上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611189681.6A CN106708748B (zh) | 2016-12-21 | 2016-12-21 | 提高OpenStack块存储卷挂载性能的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611189681.6A CN106708748B (zh) | 2016-12-21 | 2016-12-21 | 提高OpenStack块存储卷挂载性能的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708748A CN106708748A (zh) | 2017-05-24 |
CN106708748B true CN106708748B (zh) | 2020-05-26 |
Family
ID=58938228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611189681.6A Active CN106708748B (zh) | 2016-12-21 | 2016-12-21 | 提高OpenStack块存储卷挂载性能的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708748B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681434A (zh) * | 2018-05-24 | 2018-10-19 | 中科边缘智慧信息科技(苏州)有限公司 | 一种容器持久存储挂载方法 |
CN109344632A (zh) * | 2018-09-28 | 2019-02-15 | 山东超越数控电子股份有限公司 | 一种基于硬件加密卡的openstack卷加密方法 |
CN111338751B (zh) * | 2020-02-13 | 2022-03-22 | 浪潮云信息技术股份公司 | 同ceph集群中数据跨pool迁移方法及装置 |
CN111338763A (zh) * | 2020-03-11 | 2020-06-26 | 山东汇贸电子口岸有限公司 | 一种基于nova的允许卸载和挂载系统卷的方法 |
CN111638855A (zh) * | 2020-06-03 | 2020-09-08 | 山东汇贸电子口岸有限公司 | 一种物理裸机支持Ceph后端卷的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752392B1 (en) * | 2006-01-30 | 2010-07-06 | Symantec Operating Corporation | Method and apparatus for accessing a virtualized storage volume using a pre-loaded volume map |
US8533427B2 (en) * | 2010-05-06 | 2013-09-10 | International Business Machines Corporation | Mapping locations of logical volume records on a physical stacked volume |
CN105100039A (zh) * | 2015-04-21 | 2015-11-25 | 兰州大学 | 基于iSCSI的数据完整性存储系统 |
CN106210046A (zh) * | 2016-07-11 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种基于Cinder的卷跨集群挂载方法及系统 |
-
2016
- 2016-12-21 CN CN201611189681.6A patent/CN106708748B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106708748A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708748B (zh) | 提高OpenStack块存储卷挂载性能的方法及系统 | |
CN102316043B (zh) | 端口虚拟化方法、交换机及通信系统 | |
CN103139157B (zh) | 一种基于socket的网络通信方法、装置及系统 | |
CN108234246B (zh) | 一种多向测试服务器网络性能的方法及系统 | |
CN109039788B (zh) | 网络设备的端口配置方法、装置和存储介质 | |
CN107070752B (zh) | 一种长连接容量的测试方法及测试系统 | |
CN104468811B (zh) | 升级方法及装置 | |
CN110855471A (zh) | 端口映射方法、装置及设备 | |
CN106034113A (zh) | 数据处理方法及装置 | |
CN107566513B (zh) | 测试设备dos环境数据采集方法和系统 | |
WO2019062634A1 (zh) | 通信方法及装置 | |
CN102291274A (zh) | 一种实现网络测试仪表自动适配的系统及方法 | |
CN110688305B (zh) | 测试环境同步方法、装置、介质、电子设备 | |
CN105141484A (zh) | 基于云服务器的安卓设备远程调试方法 | |
CN105786732A (zh) | 数据访问方法及装置 | |
CN107018045A (zh) | 基于rpc的分布式存储系统测试方法及系统 | |
CN109491909A (zh) | 一种cpld刷新验证方法、装置、终端及存储介质 | |
WO2020000657A1 (zh) | 运维监控连接的建立方法、装置、终端设备及介质 | |
CN109120731B (zh) | 一种通用型通讯方法、系统及装置 | |
CN112422485B (zh) | 一种传输控制协议的通信方法及装置 | |
CN104104546A (zh) | 一种基于脚本的snmp网管系统 | |
CN111010293A (zh) | 一种虚拟资源管理方法及装置 | |
CN107579871B (zh) | 基于模型检测的分布式测试脚本的生成方法与生成系统 | |
CN113836212B (zh) | 数据库数据自动生成Json数据的方法、可读介质和电子设备 | |
CN109286692A (zh) | 一种配置服务器ipmi静态ip地址的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |