CN106897029A - 一种lvm数据一致性的控制方法及装置 - Google Patents
一种lvm数据一致性的控制方法及装置 Download PDFInfo
- Publication number
- CN106897029A CN106897029A CN201710104438.8A CN201710104438A CN106897029A CN 106897029 A CN106897029 A CN 106897029A CN 201710104438 A CN201710104438 A CN 201710104438A CN 106897029 A CN106897029 A CN 106897029A
- Authority
- CN
- China
- Prior art keywords
- sanlock
- lock
- metadata
- proxy modules
- volume
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种LVM数据一致性的控制方法及装置,将LVM系统中数据的一致性分为卷组元数据和逻辑卷两个维度,在修改所述卷组元数据时,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护,在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。因此,本发明从卷组元数据和逻辑卷两个维度对集群中的LVM元数据进行了保护,保证了LVM元数据的一致性,使LVM能够广泛应用于存储虚拟化平台中。
Description
技术领域
本发明涉及计算机技术领域,更具体的说,涉及一种LVM数据一致性的控制方法及装置。
背景技术
共享存储作为目前企业虚拟化软件中的主流存储方式,它的主要执行时为虚拟机和上层业务提供数支撑。目前市场上开源软件及部分商业软件主要采用共享文件系统,如vmware提供的VMFS(VMware Virtual Machine File System,高性能的群集文件系统),Oracle VM中的OCFS文件系统,NAS(Network Attached Storage,网络附属存储)中的NFS(Network File System,网络文件系统)、CIFS(Common Internet File System,通用网络文件系统)等,对共享存储进行存储管理。
但是,由于文件系统自身限制(如性能),导致文件系统提供的共享存储性能不及块存储,因此,目前主要采用块存储对共享存储进行存储管理。在块存储中,通常选用LVM(Logical Volume Manager,逻辑卷管理)。LVM是一种linux环境对磁盘或分区提供的管理机制,通过将底层的物理存储抽象封装,在磁盘和分区之上建立逻辑层,然后以逻辑卷的方式呈现给上层应用。LVM支持对磁盘的动态管理,能够根据业务需求增大或减小已分配的存储空间,从而大大提高了存储管理的灵活性。
然而,目前LVM的开源实现仅仅支持单节点的存储管理,对于集群环境,由于无法保证LVM元数据的一致性,而无法广泛应用于存储虚拟化平台中。
发明内容
有鉴于此,本发明公开一种LVM数据一致性的控制方法及装置,以解决传统方案中,无法保证LVM元数据的一致性,从而使LVM无法广泛应用于存储虚拟化平台中的问题。
一种LVM数据一致性的控制方法,包括:
将LVM系统中数据的一致性分为两个维度,分别为卷组元数据和逻辑卷;
在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护;
在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。
优选的,所述在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护包括:
在修改所述卷组元数据之前,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加独占锁请求;
当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求;
当所述Sanlock进程接收到所述第一锁请求之后,通过所述Sanlock进程向元数据锁存储空间申请与所述卷组元数据对应的元数据锁空间;
使用Sanlock中的租约paxos lease,向所述元数据锁空间添加锁租约,实现独占锁的添加。
优选的,所述当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求包括:
当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块判断所述卷组元数据是否已经被其他资源占用修改;
若所述卷组元数据未被其他资源占用修改,则向与所述Sanlock代理模块预关联的Sanlock进程发送所述第一锁请求。
优选的,还包括:
若所述卷组元数据已经被其他资源占用修改,则在预设时间段后,再次判断所述卷组元数据是否已经被其他资源占用修改。
优选的,所述在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护包括:
在所述逻辑卷被主机激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁;
当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第二锁请求;
当所述Sanlock进程接收到所述第二锁请求之后,通过所述Sanlock进程向激活锁存储空间,申请与所述逻辑卷对应的锁存储空间;
使用Sanlock中的租约paxos lease,向所述锁存储空间添加锁租约,实现独占锁或共享所的添加。
一种LVM数据一致性的控制装置,包括:
划分单元,用于将LVM系统中数据的一致性分为两个维度,分别为卷组元数据和逻辑卷;
第一保护单元,用于在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护;
第二保护单元,用于在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。
优选的,所述第一保护单元包括:
第一申请子单元,用于在修改所述卷组元数据之前,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加独占锁请求;
第一发送子单元,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求;
第二申请子单元,用于当所述Sanlock进程接收到所述第一锁请求之后,通过所述Sanlock进程向元数据锁存储空间申请与所述卷组元数据对应的元数据锁空间;
第一添加子单元,用于使用Sanlock中的租约paxos lease,向所述元数据锁空间添加锁租约,实现独占锁的添加。
优选的,所述第一发送子单元包括:
判断子单元,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块判断所述卷组元数据是否已经被其他资源占用修改;
第二发送子单元,用于在所述判断子单元判断为是的情况下,向与所述Sanlock代理模块预关联的Sanlock进程发送所述第一锁请求。
优选的,还包括:
再次发送子单元,用于在所述判断子单元判断为否的情况下,在预设时间段后,再次判断所述卷组元数据是否已经被其他资源占用修改。
优选的,所述第二保护单元包括:
第三申请子单元,用于在所述逻辑卷被主机激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁;
第三发送子单元,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第二锁请求;
第四申请子单元,用于当所述Sanlock进程接收到所述第二锁请求之后,通过所述Sanlock进程向激活锁存储空间,申请与所述逻辑卷对应的锁存储空间;
第二添加子单元,用于使用Sanlock中的租约paxos lease,向所述锁存储空间添加锁租约,实现独占锁或共享所的添加。
从上述的技术方案可知,本发明公开了一种LVM数据一致性的控制方法及装置,将LVM系统中数据的一致性分为卷组元数据和逻辑卷两个维度,在修改所述卷组元数据时,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护,在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。因此,本发明从卷组元数据和逻辑卷两个维度对集群中的LVM元数据进行了保护,保证了LVM元数据的一致性,使LVM能够广泛应用于存储虚拟化平台中。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。
图1为本发明实施例公开的一种LVM数据一致性的控制方法流程图;
图2为本发明实施例公开的一种卷组元数据的控制方法流程图;
图3为本发明实施例公开的一种逻辑卷的控制方法流程图;
图4为本发明实施例公开的一种LVM数据一致性的控制装置的结构示意图;
图5为本发明实施例公开的一种第一保护单元的结构示意图;
图6为本发明实施例公开的一种第二保护单元的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种LVM数据一致性的控制方法及装置,以解决传统方案中,无法保证LVM元数据的一致性,从而使LVM无法广泛应用于存储虚拟化平台中的问题。
参见图1,本发明实施例公开的一种LVM数据一致性的控制方法流程图,该方法包括步骤:
步骤S101、将LVM系统中数据的一致性分为两个维度,分别为卷组元数据和逻辑卷;
具体的,在实际应用中,可以将卷组(Volume Group,VG)元数据定义为LVM系统的控制面数据,将逻辑卷(Logical Volume,LV)定义为LVM系统的数据面数据,这样,实现LVM系统中数据的一致性,也即实现控制面数据一致性和数据面数据一致性。
步骤S102、在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护;
需要说明的是,逻辑卷的创建、删除、扩容、缩容等操作都会改变卷组元数据,尤其在集群环境中,每个主机可以访问同一个共享存储的情况,因此,主机之间卷组元数据操作的一致性尤为重要,在步骤中,也即实现控制面数据一致性。
本步骤中,通过在修改卷组元数据时,申请该卷组元数据对应的独占锁,实现对待修改卷组元数据的保护,从而有效避免了当某个主机修改卷组元数据时,存在其他主机也修改元数据的情况,进而实现了多机之间的单一访问和各个主机卷组元数据的一致性。
其中,Sanlock是一种基于软件实现的轻量级分布式锁管理器,在oVirt和Libvirt等虚拟化项目中已广泛应用。它是一个基于SAN实现的,集群中的每个节点各自运行Sanlock服务,并将锁的状态写在共享存储上,以delta lease算法保证节点的唯一性,以paxos lease读写共享存储以实现对分布式锁的获取和释放。
paxos lease和delta lease是Sanlock中两种不同的租约,一个paxos lease就是一个带有时间戳的锁,用来保护一项抽象的资源。另一种租约delta lease,只由sanlock内部使用,不对外暴露,主要作用是保证节点ID的唯一性,并提供简单的成员管理服务。
Sanlock中的paxos lease能够提供两种锁类型,独占锁和共享锁,独占锁是一个共享资源,只能被一个主机使用;共享锁是共享资源,同时可以被多个主机使用。
步骤S103、在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。
具体的,本步骤中,对逻辑卷进行保护的目的是实现数据面数据一致性,也即保证集群LVM向上层提供的逻辑卷数据一致。
集群LVM的逻辑卷的使用有两种模式:共享模式和独占模式。共享模式指的是:逻辑卷可以被多个主机同时激活使用;独占模式指的是:逻辑卷只能被单主机使用。
当逻辑卷被主机使用时,需要将逻辑卷加载到内核,可定义此动作为激活逻辑卷;当逻辑卷使用完成时,需要将逻辑卷从内核卸载,可定义次动作为冻结逻辑卷。
本步骤中,为保证数据面数据一致,采用逻辑卷的激活锁类型(包括独占锁和共享锁)与逻辑卷的使用方式保持一致的方式。也即,当逻辑卷被同一主机的多个虚拟机使用时,或逻辑卷被多个主机的多个虚拟机使用时,激活共享锁对逻辑卷进行保护;当逻辑卷只能被一个主机上的一个虚拟机使用时,激活独占锁对逻辑卷进行保护。
需要说明的是,步骤S102和步骤S103在实际执行过程中,没有先后顺序要求,可以按照图1所示实施例的顺序执行,也可以先执行步骤S103,后执行步骤S102,或是两个步骤同时执行。
综上可知,本发明将LVM系统中数据的一致性分为卷组元数据和逻辑卷两个维度,在修改所述卷组元数据时,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护,在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。因此,本发明从卷组元数据和逻辑卷两个维度对集群中的LVM元数据进行了保护,保证了LVM元数据的一致性,使LVM能够广泛应用于存储虚拟化平台中。
需要说明的是,在上述实施例中,在步骤S101将LVM系统中数据的一致性分为两个维度之前,需要对集群LVM环境进行初始化。
集群LVM环境进行初始化的内容包括:
(1)将LVM的配置文件中的元数据缓存功能关闭,具体的,将LVM的配置文件中/etc/lvm/lvm.conf文件中的use_lvmetad的1修改为0;
(2)将LVM相关的通信服务和代理服务管理关闭,具体的,关闭LVM相关的lvm2-lvmetad.socket和lvm2-lvmetad.service两个服务。
其中,在实现控制面数据一致性和数据面数据一致性之前,还需要将Sanlock锁空间初始化。
具体的,按照单卷组单股控制流原则,将一个共享存储LUN(Logical UnitNumber,逻辑单元号)创建成一个物理卷(Physical Volume,PV);将一个所述物理卷创建成一个卷组(Volume Group,VG);将一个所述卷组创建成两个存储空间,分别为:元数据锁空间和激活锁存储空间。
在实现控制面数据一致性和数据面数据一致性的过程中,需要启动Sanlock锁服务,即需要将Sanlock代理模块和Sanlock进程预关联,以实现Sanlock加锁的逻辑控制。同时,启动Sanlock锁服务,还可以为每个Sanlock锁申请提供排队机制,以保证卷组元数据的顺序操作。
需要说明的是,实现控制面数据一致性主要遵循如下几个原则:
1、将单个VG作为单股控制流;
具体的,为简化管理,本发明将每个VG作为单股控制流,即一个VG由一个PV(Physical Volume,物理卷),同时VG的卷组元数据只保存在相对应的LUN上。
2、各个主机的卷组元数据保持一致;
具体的,每个主机的卷组元数据由该主机上的LVM单独控制,这是由默认的文件锁来保证,各个主机之间的卷组元数据操作都互不影响。
3、多机之间采用单一访问控制;
具体的,多机之间的卷组元数据保持一致,采用读不加锁、写加锁的原则,即读者-写者问题。在修改卷组元数据之前,首先添加Sanlock提供的独占锁,若此时由其他主机需要修改卷组元数据时,会添加独占锁失败,从而保证了单一主机修改;对于读写卷组元数据操作,即用vgdisplay,lvdisplay命令时不添加锁。
4、卷组元数据修改时采用顺序操作;
具体的,对于并发的卷组元数据采用排队机制,即将所有的添加锁操作放入到一个任务队列中,避免并发加锁;若独占锁已经被占用,则等待预设时间段后重试。
因此,为进一步优化上述实施例,如图2所示,本发明一实施例公开了一种卷组元数据的控制方法流程图,也即步骤S102具体包括:
步骤S201、在修改所述卷组元数据之前,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加独占锁请求;
步骤S202、当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求;
步骤S203、当所述Sanlock进程接收到所述第一锁请求之后,通过所述Sanlock进程向元数据锁存储空间申请与所述卷组元数据对应的元数据锁空间;
步骤S204、使用Sanlock中的租约paxos lease,向所述元数据锁空间添加锁租约,实现独占锁的添加。
其中,本实施例中,当所述述卷组元数据修改完成之后,会向所述Sanlock代理模块发送释放锁请求,释放所述独占锁。
根据对卷组元数据修改需要保证顺序操作原则,对卷组元数据的修改,即添加独占锁需要顺序添加。因此,上述实施例中的步骤S202具体包括:
当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块判断所述卷组元数据是否已经被其他资源占用修改;
若所述卷组元数据未被其他资源占用修改,则向与所述Sanlock代理模块预关联的Sanlock进程发送所述第一锁请求。
其中,若所述卷组元数据已经被其他资源占用修改,则在预设时间段后,再次判断所述卷组元数据是否已经被其他资源占用修改。
需要说明的是,预设时间段的具体数值依据实际需要而定。
数据面数据一致性主要是保证集权LVM向上层提供的逻辑卷数据一致。其中,逻辑卷被激活记载到内核时才能被使用,但是,如果两个主机同时激活逻辑卷,在一个主机执行删除操作,则在另一个主机会残留该逻辑卷的内核数据。因此,对数据面数据一致性控制需要遵循如下原则:
1、将单个LV作为单股控制流;
具体的,将每个LV作为单股数据流管理,每个LV在交给上层使用时包含两个部分:激活锁和LV资源,每个LV在Sanlock的共享存储上。
2、LV激活锁类型与逻辑的使用方式保持一致;
具体的,激活锁的类型包含两种类型:共享锁和独占锁,共享锁主要用于逻辑卷被同一主机多个虚拟机使用,或多个主机的多个虚拟机使用的场景;独占锁主要应用逻辑卷只能被一个主机上的虚拟机使用的场景。
因此,为进一步优化上述实施例,如图3所示,本发明一实施例公开了一种逻辑卷的控制方法流程图,也即步骤S103具体包括:
步骤S301、在所述逻辑卷被主机激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁;
步骤S302、当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第二锁请求;
步骤S303、当所述Sanlock进程接收到所述第二锁请求之后,通过所述Sanlock进程向激活锁存储空间,申请与所述逻辑卷对应的锁存储空间;
步骤S304、使用Sanlock中的租约paxos lease,向所述锁存储空间添加锁租约,实现独占锁或共享所的添加。
其中,本实施例中,当所述逻辑卷使用完成后,会向所述Sanlock代理模块发送释放锁请求。
综上可知,本发明将LVM系统中数据的一致性分为卷组元数据和逻辑卷两个维度,在修改所述卷组元数据时,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护,在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。因此,本发明从卷组元数据和逻辑卷两个维度对集群中的LVM元数据进行了保护,保证了LVM元数据的一致性,使LVM能够广泛应用于存储虚拟化平台中。
与上述方法实施例相对应,本发明还公开了一种LVM数据一致性的控制装置。
如图4所示,本发明实施例公开的一种LVM数据一致性的控制装置的结构示意图,包括:
划分单元401,用于将LVM系统中数据的一致性分为两个维度,分别为卷组元数据和逻辑卷;
具体的,在实际应用中,可以将卷组(Volume Group,VG)元数据定义为LVM系统的控制面数据,将逻辑卷(Logical Volume,LV)定义为LVM系统的数据面数据,这样,实现LVM系统中数据的一致性,也即实现控制面数据一致性和数据面数据一致性。
第一保护单元402,用于在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护;
需要说明的是,逻辑卷的创建、删除、扩容、缩容等操作都会改变卷组元数据,尤其在集群环境中,每个主机可以访问同一个共享存储的情况,因此,主机之间卷组元数据操作的一致性尤为重要,在步骤中,也即实现控制面数据一致性。
第一保护单元402通过在修改卷组元数据时,申请该卷组元数据对应的独占锁,实现对待修改卷组元数据的保护,从而有效避免了当某个主机修改卷组元数据时,存在其他主机也修改元数据的情况,进而实现了多机之间的单一访问和各个主机卷组元数据的一致性。
第二保护单元403,用于在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。
具体的,对逻辑卷进行保护的目的是实现数据面数据一致性,也即保证集群LVM向上层提供的逻辑卷数据一致。
集群LVM的逻辑卷的使用有两种模式:共享模式和独占模式。共享模式指的是:逻辑卷可以被多个主机同时激活使用;独占模式指的是:逻辑卷只能被单主机使用。
当逻辑卷被主机使用时,需要将逻辑卷加载到内核,可定义此动作为激活逻辑卷;当逻辑卷使用完成时,需要将逻辑卷从内核卸载,可定义次动作为冻结逻辑卷。
本实施例中,为保证数据面数据一致,采用逻辑卷的激活锁类型(包括独占锁和共享锁)与逻辑卷的使用方式保持一致的方式。也即,当逻辑卷被同一主机的多个虚拟机使用时,或逻辑卷被多个主机的多个虚拟机使用时,激活共享锁对逻辑卷进行保护;当逻辑卷只能被一个主机上的一个虚拟机使用时,激活独占锁对逻辑卷进行保护。
综上可知,本发明将LVM系统中数据的一致性分为卷组元数据和逻辑卷两个维度,在修改所述卷组元数据时,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护,在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。因此,本发明从卷组元数据和逻辑卷两个维度对集群中的LVM元数据进行了保护,保证了LVM元数据的一致性,使LVM能够广泛应用于存储虚拟化平台中。
需要说明的是,在上述实施例中,在划分单元401将LVM系统中数据的一致性分为两个维度之前,需要对集群LVM环境进行初始化。
集群LVM环境进行初始化的内容包括:
(1)将LVM的配置文件中的元数据缓存功能关闭,具体的,将LVM的配置文件中/etc/lvm/lvm.conf文件中的use_lvmetad的1修改为0;
(2)将LVM相关的通信服务和代理服务管理关闭,具体的,关闭LVM相关的lvm2-lvmetad.socket和lvm2-lvmetad.service两个服务。
其中,在实现控制面数据一致性和数据面数据一致性之前,还需要将Sanlock锁空间初始化。
具体的,按照单卷组单股控制流原则,将一个共享存储LUN(Logical UnitNumber,逻辑单元号)创建成一个物理卷(Physical Volume,PV);将一个所述物理卷创建成一个卷组(Volume Group,VG);将一个所述卷组创建成两个存储空间,分别为:元数据锁空间和激活锁存储空间。
需要说明的是,实现控制面数据一致性主要遵循如下几个原则:
1、将单个VG作为单股控制流;
具体的,为简化管理,本发明将每个VG作为单股控制流,即一个VG由一个PV(Physical Volume,物理卷),同时VG的卷组元数据只保存在相对应的LUN上。
2、各个主机的卷组元数据保持一致;
具体的,每个主机的卷组元数据由该主机上的LVM单独控制,这是由默认的文件锁来保证,各个主机之间的卷组元数据操作都互不影响。
3、多机之间采用单一访问控制;
具体的,多机之间的卷组元数据保持一致,采用读不加锁、写加锁的原则,即读者-写者问题。在修改卷组元数据之前,首先添加Sanlock提供的独占锁,若此时由其他主机需要修改卷组元数据时,会添加独占锁失败,从而保证了单一主机修改;对于读写卷组元数据操作,即用vgdisplay,lvdisplay命令时不添加锁。
4、卷组元数据修改时采用顺序操作;
具体的,对于并发的卷组元数据采用排队机制,即将所有的添加锁操作放入到一个任务队列中,避免并发加锁;若独占锁已经被占用,则等待预设时间段后重试。
因此,为进一步优化上述实施例,如图5所示,本发明一实施例公开的一种第一保护单元的结构示意图,包括:
第一申请子单元501,用于在修改所述卷组元数据之前,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加独占锁请求;
第一发送子单元502,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求;
第二申请子单元503,用于当所述Sanlock进程接收到所述第一锁请求之后,通过所述Sanlock进程向元数据锁存储空间申请与所述卷组元数据对应的元数据锁空间;
第一添加子单元504,用于使用Sanlock中的租约paxos lease,向所述元数据锁空间添加锁租约,实现独占锁的添加。
根据对卷组元数据修改需要保证顺序操作原则,对卷组元数据的修改,即添加独占锁需要顺序添加。
因此,上述实施例中的第一发送子单元具体包括:
判断子单元,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块判断所述卷组元数据是否已经被其他资源占用修改;
第二发送子单元,用于在所述判断子单元判断为是的情况下,向与所述Sanlock代理模块预关联的Sanlock进程发送所述第一锁请求。
其中,若所述卷组元数据已经被其他资源占用修改,则在预设时间段后,判断子单元会再次判断所述卷组元数据是否已经被其他资源占用修改。
因此,第一发送子单元还包括:
再次发送子单元,用于在所述判断子单元判断为否的情况下,在预设时间段后,再次判断所述卷组元数据是否已经被其他资源占用修改。
数据面数据一致性主要是保证集权LVM向上层提供的逻辑卷数据一致。其中,逻辑卷被激活记载到内核时才能被使用,但是,如果两个主机同时激活逻辑卷,在一个主机执行删除操作,则在另一个主机会残留该逻辑卷的内核数据。因此,对数据面数据一致性控制需要遵循如下原则:
1、将单个LV作为单股控制流;
具体的,将每个LV作为单股数据流管理,每个LV在交给上层使用时包含两个部分:激活锁和LV资源,每个LV在Sanlock的共享存储上。
2、LV激活锁类型与逻辑的使用方式保持一致;
具体的,激活锁的类型包含两种类型:共享锁和独占锁,共享锁主要用于逻辑卷被同一主机多个虚拟机使用,或多个主机的多个虚拟机使用的场景;独占锁主要应用逻辑卷只能被一个主机上的虚拟机使用的场景。
因此,为进一步优化上述实施例,如图6所示,本发明一实施例公开的一种第二保护单元的结构示意图,包括:
第三申请子单元601,用于在所述逻辑卷被主机激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁;
第三发送子单元602,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第二锁请求;
第四申请子单元603,用于当所述Sanlock进程接收到所述第二锁请求之后,通过所述Sanlock进程向激活锁存储空间,申请与所述逻辑卷对应的锁存储空间;
第二添加子单元604,用于使用Sanlock中的租约paxos lease,向所述锁存储空间添加锁租约,实现独占锁或共享所的添加。
其中,本实施例中,当所述逻辑卷使用完成后,会向所述Sanlock代理模块发送释放锁请求。
综上可知,本发明将LVM系统中数据的一致性分为卷组元数据和逻辑卷两个维度,在修改所述卷组元数据时,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护,在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。因此,本发明从卷组元数据和逻辑卷两个维度对集群中的LVM元数据进行了保护,保证了LVM元数据的一致性,使LVM能够广泛应用于存储虚拟化平台中。
需要说明的是,装置实施例中,各组成部分的具体工作原理,请参见方法实施例对应部分,此次不再赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种LVM数据一致性的控制方法,其特征在于,包括:
将LVM系统中数据的一致性分为两个维度,分别为卷组元数据和逻辑卷;
在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护;
在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。
2.根据权利要求1所述的控制方法,其特征在于,所述在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护包括:
在修改所述卷组元数据之前,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加独占锁请求;
当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求;
当所述Sanlock进程接收到所述第一锁请求之后,通过所述Sanlock进程向元数据锁存储空间申请与所述卷组元数据对应的元数据锁空间;
使用Sanlock中的租约paxos lease,向所述元数据锁空间添加锁租约,实现独占锁的添加。
3.根据权利要求2所述的控制方法,其特征在于,所述当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求包括:
当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块判断所述卷组元数据是否已经被其他资源占用修改;
若所述卷组元数据未被其他资源占用修改,则向与所述Sanlock代理模块预关联的Sanlock进程发送所述第一锁请求。
4.根据权利要求3所述的控制方法,其特征在于,还包括:
若所述卷组元数据已经被其他资源占用修改,则在预设时间段后,再次判断所述卷组元数据是否已经被其他资源占用修改。
5.根据权利要求1所述的控制方法,其特征在于,所述在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护包括:
在所述逻辑卷被主机激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁;
当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第二锁请求;
当所述Sanlock进程接收到所述第二锁请求之后,通过所述Sanlock进程向激活锁存储空间,申请与所述逻辑卷对应的锁存储空间;
使用Sanlock中的租约paxos lease,向所述锁存储空间添加锁租约,实现独占锁或共享所的添加。
6.一种LVM数据一致性的控制装置,其特征在于,包括:
划分单元,用于将LVM系统中数据的一致性分为两个维度,分别为卷组元数据和逻辑卷;
第一保护单元,用于在修改所述卷组元数据时,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加与所述卷组元数据相对应的独占锁进行保护;
第二保护单元,用于在所述逻辑卷被激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁进行保护。
7.根据权利要求6所述的控制装置,其特征在于,所述第一保护单元包括:
第一申请子单元,用于在修改所述卷组元数据之前,根据多机之间单一访问控制原则和各个主机元数据保持一致原则,向Sanlock代理模块申请添加独占锁请求;
第一发送子单元,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第一锁请求;
第二申请子单元,用于当所述Sanlock进程接收到所述第一锁请求之后,通过所述Sanlock进程向元数据锁存储空间申请与所述卷组元数据对应的元数据锁空间;
第一添加子单元,用于使用Sanlock中的租约paxos lease,向所述元数据锁空间添加锁租约,实现独占锁的添加。
8.根据权利要求7所述的控制装置,其特征在于,所述第一发送子单元包括:
判断子单元,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块判断所述卷组元数据是否已经被其他资源占用修改;
第二发送子单元,用于在所述判断子单元判断为是的情况下,向与所述Sanlock代理模块预关联的Sanlock进程发送所述第一锁请求。
9.根据权利要求8所述的控制装置,其特征在于,还包括:
再次发送子单元,用于在所述判断子单元判断为否的情况下,在预设时间段后,再次判断所述卷组元数据是否已经被其他资源占用修改。
10.根据权利要求6所述的控制装置,其特征在于,所述第二保护单元包括:
第三申请子单元,用于在所述逻辑卷被主机激活使用前,根据所述逻辑卷被单主机使用还是被多主机使用,向Sanlock代理模块申请添加对应的独占锁或共享锁;
第三发送子单元,用于当所述Sanlock代理模块接收到所述添加独占锁请求之后,通过所述Sanlock代理模块,向与所述Sanlock代理模块预关联的Sanlock进程发送第二锁请求;
第四申请子单元,用于当所述Sanlock进程接收到所述第二锁请求之后,通过所述Sanlock进程向激活锁存储空间,申请与所述逻辑卷对应的锁存储空间;
第二添加子单元,用于使用Sanlock中的租约paxos lease,向所述锁存储空间添加锁租约,实现独占锁或共享所的添加。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710104438.8A CN106897029A (zh) | 2017-02-24 | 2017-02-24 | 一种lvm数据一致性的控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710104438.8A CN106897029A (zh) | 2017-02-24 | 2017-02-24 | 一种lvm数据一致性的控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106897029A true CN106897029A (zh) | 2017-06-27 |
Family
ID=59184190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710104438.8A Pending CN106897029A (zh) | 2017-02-24 | 2017-02-24 | 一种lvm数据一致性的控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106897029A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423454A (zh) * | 2017-09-22 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种分布式文件系统中文件锁的处理方法、装置及设备 |
CN107506141A (zh) * | 2017-08-18 | 2017-12-22 | 郑州云海信息技术有限公司 | 一种存储系统对卷组状态自动判断和激活的方法及系统 |
CN108958984A (zh) * | 2018-08-13 | 2018-12-07 | 深圳市证通电子股份有限公司 | 基于ceph的双活同步在线热备方法 |
CN109189583A (zh) * | 2018-09-20 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种分布式锁实现方法和装置 |
CN109344136A (zh) * | 2018-12-13 | 2019-02-15 | 浪潮(北京)电子信息产业有限公司 | 一种共享文件系统的访问方法、装置及设备 |
WO2021109742A1 (zh) * | 2019-12-02 | 2021-06-10 | 中兴通讯股份有限公司 | Lvm数据处理方法、装置、计算机设备和计算机可读介质 |
CN113064546A (zh) * | 2020-01-02 | 2021-07-02 | 阿里巴巴集团控股有限公司 | 一种文件系统的管理方法、装置、文件系统及存储介质 |
CN115599575A (zh) * | 2022-09-09 | 2023-01-13 | 中电信数智科技有限公司(Cn) | 一种解决集群逻辑卷并发激活和反激活的新方法 |
CN117519945A (zh) * | 2023-12-07 | 2024-02-06 | 北京优炫软件股份有限公司 | 一种数据库资源调度方法、装置及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615508A (zh) * | 2015-03-03 | 2015-05-13 | 浪潮电子信息产业股份有限公司 | 一种恢复Linux系统下LVM配置的方法 |
CN106168885A (zh) * | 2016-07-18 | 2016-11-30 | 浪潮(北京)电子信息产业有限公司 | 一种基于lvm的逻辑卷动态扩容的方法及系统 |
CN106201357A (zh) * | 2016-07-18 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种存储池的构建方法及系统 |
CN106293934A (zh) * | 2016-07-19 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种集群系统管理优化方法及平台 |
-
2017
- 2017-02-24 CN CN201710104438.8A patent/CN106897029A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615508A (zh) * | 2015-03-03 | 2015-05-13 | 浪潮电子信息产业股份有限公司 | 一种恢复Linux系统下LVM配置的方法 |
CN106168885A (zh) * | 2016-07-18 | 2016-11-30 | 浪潮(北京)电子信息产业有限公司 | 一种基于lvm的逻辑卷动态扩容的方法及系统 |
CN106201357A (zh) * | 2016-07-18 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种存储池的构建方法及系统 |
CN106293934A (zh) * | 2016-07-19 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种集群系统管理优化方法及平台 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107506141A (zh) * | 2017-08-18 | 2017-12-22 | 郑州云海信息技术有限公司 | 一种存储系统对卷组状态自动判断和激活的方法及系统 |
CN107506141B (zh) * | 2017-08-18 | 2020-07-07 | 郑州云海信息技术有限公司 | 一种存储系统对卷组状态自动判断和激活的方法及系统 |
CN107423454A (zh) * | 2017-09-22 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种分布式文件系统中文件锁的处理方法、装置及设备 |
CN108958984A (zh) * | 2018-08-13 | 2018-12-07 | 深圳市证通电子股份有限公司 | 基于ceph的双活同步在线热备方法 |
CN109189583B (zh) * | 2018-09-20 | 2021-10-01 | 郑州云海信息技术有限公司 | 一种分布式锁实现方法和装置 |
CN109189583A (zh) * | 2018-09-20 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种分布式锁实现方法和装置 |
CN109344136A (zh) * | 2018-12-13 | 2019-02-15 | 浪潮(北京)电子信息产业有限公司 | 一种共享文件系统的访问方法、装置及设备 |
WO2021109742A1 (zh) * | 2019-12-02 | 2021-06-10 | 中兴通讯股份有限公司 | Lvm数据处理方法、装置、计算机设备和计算机可读介质 |
CN113064546A (zh) * | 2020-01-02 | 2021-07-02 | 阿里巴巴集团控股有限公司 | 一种文件系统的管理方法、装置、文件系统及存储介质 |
CN113064546B (zh) * | 2020-01-02 | 2024-02-09 | 阿里巴巴集团控股有限公司 | 一种文件系统的管理方法、装置、文件系统及存储介质 |
CN115599575A (zh) * | 2022-09-09 | 2023-01-13 | 中电信数智科技有限公司(Cn) | 一种解决集群逻辑卷并发激活和反激活的新方法 |
WO2024051468A1 (zh) * | 2022-09-09 | 2024-03-14 | 中电信数智科技有限公司 | 一种解决集群逻辑卷并发激活和反激活的新方法 |
CN115599575B (zh) * | 2022-09-09 | 2024-04-16 | 中电信数智科技有限公司 | 一种解决集群逻辑卷并发激活和反激活的新方法 |
CN117519945A (zh) * | 2023-12-07 | 2024-02-06 | 北京优炫软件股份有限公司 | 一种数据库资源调度方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106897029A (zh) | 一种lvm数据一致性的控制方法及装置 | |
US10909072B2 (en) | Key value store snapshot in a distributed memory object architecture | |
US8656412B2 (en) | Pipeline across isolated computing environments | |
US11609884B2 (en) | Intelligent file system with transparent storage tiering | |
US8458413B2 (en) | Supporting virtual input/output (I/O) server (VIOS) active memory sharing in a cluster environment | |
CN102073462B (zh) | 虚拟存储迁移方法、系统和虚拟机监控器 | |
US9146766B2 (en) | Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers | |
US9262097B2 (en) | System and method for non-volatile random access memory emulation | |
CN109344090B (zh) | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 | |
US20050071560A1 (en) | Autonomic block-level hierarchical storage management for storage networks | |
CN102123176B (zh) | 一种网络存储系统空间分配管理方法及装置 | |
CN102779074B (zh) | 基于内存空洞机制的虚拟机内存资源分配方法 | |
CN104049906A (zh) | 用于动态高速缓存共享的系统、方法和计算机可读介质 | |
CN104461687B (zh) | 一种虚拟机配置信息的存储方法及装置 | |
CN110806911B (zh) | 一种云桌面管控方法、装置及系统 | |
CN110046026B (zh) | 云主机指定虚拟磁盘限速方法、计算设备及云平台 | |
US10802972B2 (en) | Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics | |
CN102982182B (zh) | 一种数据存储规划方法及装置 | |
US7805469B1 (en) | Method and apparatus for splitting and merging file systems | |
CN102207830A (zh) | 一种缓存动态分配管理方法及装置 | |
JP3246146B2 (ja) | 外部記憶装置のデータ移行方法 | |
CN107544864A (zh) | 一种虚拟机数据拷贝方法及虚拟机数据拷贝系统 | |
US7849264B2 (en) | Storage area management method for a storage system | |
CN102725746B (zh) | 对分布式计算机系统中内存的管理方法和装置 | |
CN103942117B (zh) | 一种数据备份方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170627 |