CN114285865A - 共享云硬盘的访问权限控制系统 - Google Patents
共享云硬盘的访问权限控制系统 Download PDFInfo
- Publication number
- CN114285865A CN114285865A CN202111626916.4A CN202111626916A CN114285865A CN 114285865 A CN114285865 A CN 114285865A CN 202111626916 A CN202111626916 A CN 202111626916A CN 114285865 A CN114285865 A CN 114285865A
- Authority
- CN
- China
- Prior art keywords
- gateway
- information
- slave
- log
- sequence number
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种共享云硬盘的访问权限控制系统,涉及计算机存储访问技术领域。其中,访问权限控制系统包括:客户端,用于发送共享云硬盘的操作权限信息;Master网关用于接收操作权限信息,并检测操作权限信息是否为查询权限信息;Master网关还用于在检测到操作权限信息为非查询权限信息时,将操作权限信息解析为请求日志,并基于请求日志发送访问权限的一致性信息;仲裁服务器用于接收一致性信息;多个Slave网关,用于访问仲裁服务器,以获取一致性信息,使Slave网关与Master网关的访问权限保持一致;Master网关还用于:将一致性信息的同步结果反馈至客户端。通过本公开的技术方案,能够使分布式存储集群内部网关节点所记录的客户端权限保持一致。
Description
技术领域
本公开涉及计算机存储访问技术领域,尤其涉及一种共享云硬盘的访问权限控制系统。
背景技术
共享云硬盘基于分布式块存储技术,支持多客户端共享访问,能够极大地提高数据传输的性能以及系统的可用性,因此能够云计算集群对共享云存储服务的需求,共享云硬盘由多个分布式的服务器构成的存储集群提供服务,集群中少部分节点故障不会中断数据服务,但是,在避免系统单点故障的同时会带来集群服务器数据一致性的问题,针对云硬盘的共享场景,服务器必须要管理多个客户端访问云硬盘的权限,如何控制客户端的访问权限在多台存储服务器上保持一致,不会因为集群内部节点的切换而造成访问的冲突,是共享云硬盘技术中的关键技术。
相关技术中,通过在存储协议中定义相关指令,比如SCSI(Small ComputerSystem Interface,小型计算机系统接口)协议中的Persistent Reservation(PR)机制和NVMe(Non Volatile Memory Host Controller Interface Specification,非易失性内存主机控制器接口规范)协议中的Reservation指令,来控制多个客户端访问硬盘的权限,但是这种方式主要存在以下缺陷:
(1)上述在存储协议中定义的命令,通常针对的是物理硬盘的共享场景,不能够适用于软件定义存储架构下的云硬盘。
(2)这些机制在单服务器中能够运行良好,但是在分布式存储集群中,集群内部任一节点所记录的客户端权限一旦出现不一致,客户端访问到此节点就有可能造成数据访问冲突,导致产生严重的数据错误。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种共享云硬盘的访问权限控制系统,至少在一定程度上克服由于相关技术中分布式存储集群内部网关节点所记录的客户端权限不一致的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的技术方案,提供一种共享云硬盘的访问权限控制系统,包括:客户端,用于发送所述共享云硬盘的操作权限信息;Master网关,与所述客户端通信连接,用于接收所述操作权限信息,并检测所述操作权限信息是否为查询权限信息;所述Master网关还用于:在检测到所述操作权限信息为非查询权限信息时,将所述操作权限信息解析为请求日志,并基于所述请求日志发送访问权限的一致性信息;仲裁服务器,与所述Master网关通信连接,用于接收所述一致性信息;多个Slave网关,分别与所述仲裁服务器通信连接,用于访问所述仲裁服务器,以获取所述一致性信息,所述一致性信息适于使所述Slave网关与所述Master网关的访问权限保持一致。
在一个实施例中,所述Slave网关访问所述仲裁服务器,以获取所述一致性信息,具体包括:所述Slave网关还与所述Master网关通信连接,以接收所述Master网关基于所述一致性信息生成的心跳信息,并响应于所述心跳信息,访问所述仲裁服务器,以获取所述一致性信息;或所述Slave网关主动轮询所述仲裁服务器,以在检测到所述仲裁服务器接收到所述一致性信息时,获取所述一致性信息。
在一个实施例中,所述仲裁服务器中记录有权威日志和权威注册表,所述仲裁服务器还用于:在接收到所述一致性信息时,将所述一致性信息中存储在暂存区;所述Slave网关还用于:从所述暂存区中获取所述一致性信息,基于对所述一致性信息的解析结果向所述Master网关反馈更新信息;所述Master网关还用于:基于所述更新信息确定所述请求日志在所述多个Slave网关中达成一致时,向所述仲裁服务器发送接受信息;所述仲裁服务器还用于:将所述一致性信息中的请求日志存储到所述权威日志中;所述Master网关还用于:基于所述请求日志更新本地的访问权限注册表,并基于更新结果继续基于所述仲裁服务器与所述Slave网关执行所述权限一致性的同步操作;所述仲裁服务器还用于:基于所述更新结果更新所述权威注册表。
在一个实施例中,所述Master网关将所述操作权限信息解析为请求日志,并基于所述请求日志发送访问权限的一致性信息,具体包括:所述Master网关基于对所述操作权限信息的解析操作确定目标云硬盘编号、请求序列号和操作类型;根据所述目标云硬盘编号、所述请求序列号、所述操作类型、接收数量和所述Master网关的当前版本号生成所述请求日志,所述接收数量用于统计接收到所述一致性信息的所述Slave网关的数量;基于所述请求日志和第一序列号生成所述一致性信息,并发送所述一致性信息,其中,所述第一序列号为所述Master网关尚未执行的第一条请求日志的序列号。
在一个实施例中,所述Slave网关从所述暂存区中获取所述一致性信息,基于对所述一致性信息的解析结果向所述Master网关反馈更新信息,具体包括:所述Slave网关从所述一致性信息中解析出所述Master网关的当前版本号、所述第一序列号和所述请求序列号;在所述Master网关的当前版本号大于或等于所述Slave网关的当前版本号时,检测所述第一序列号是否大于第二序列号,所述第二序列号为所述Slave网关尚未执行的第一条请求日志的序列号;在检测到所述第一序列号大于所述第二序列号时,向所述仲裁服务器发送日志复制请求,所述日志复制请求用于从所述权威日志复制指定日志,所述指定日志为序列号在所述第二序列号与所述第一序列号之间的历史请求日志;在完成复制所述指定日志时,将所述Slave网关尚未执行的第一条请求日志的序列号更新为所述第一序列号对应的所述请求日志;以及在所述Slave网关的本地日志集合中查询与所述请求序列号对应的本地日志;在所述本地日志存在,并且所述Master网关的当前版本号大于所述本地日志对应的所述Slave网关的版本号时,基于所述请求日志覆盖所述本地日志;在所述本地日志不存在时,将所述请求日志直接添加至所述本地日志集合中。
在一个实施例中,所述非查询权限信息包括所述客户端的注册信息,以在注册成功后具有所述共享云硬盘的预留权限,所述共享云硬盘的预留请求,以预留成功后独占访问所述共享云硬盘,所述Master网关还用于:接收所述客户端发送的所述注册信息,以基于所述注册信息与所述Slave网关之间执行注册权限一致性的同步操作,并在所述访问权限注册表中为所述客户端配置注册权限和独占权限;所述Master网关还用于:接收所述客户端发送的所述预留请求,基于所述预留请求检测所述共享云硬盘是否被预留,以在检测到共享云硬盘被预留时,向所述客户端赋予所述独占权限,以及在检测到共享云硬盘未被预留时,接收所述客户端的独占轮询信息。
在一个实施例中,在未配置所述Master网关或当前的所述Master网关异常时,所述多个Slave网关还用于:基于选举策略从多个所述Slave网关中选举正常运行的所述Master网关。
在一个实施例中,所述多个Slave网关基于选举策略从多个所述Slave网关中选举正常运行的所述Master网关,具体包括:将所述多个Slave网关中的任意一个确定为Candidate网关,所述Candidate网关用于:向剩余的所述Slave网关发送投票信息;所述Slave网关还用于:响应于接收到的所述投票信息,并基于投票信息的投票版本号和所述Slave网关的选举版本号之间的关系生成投票结果;所述Candidate网关还用于:接收所述投票结果,并基于所述投票结果统计出赞成结果的数量大于数量阈值时,将运行身份切换为正常运行的所述Master网关,其中,所述数量阈值基于所述多个Slave网关数量的1/2进行配置。
在一个实施例中,所述投票信息包括所述投票版本号、第三序列号和第四序列号,第三序列号为所述Candidate网关已执行的最后一条请求日志的序列号,所述第四序列号为所述Candidate网关尚未执行的第一条请求日志的序列号,所述Slave网关基于投票信息的投票版本号和所述Slave网关的选举版本号之间的关系生成投票结果,具体包括:在检测到所述选举版本号小于所述Slave网关的当前版本号时,将所述Slave网关的当前版本号确定为所述选举版本号;在检测到所述选举版本号大于所述投票版本号时,向所述Candidate网关反馈第一投票结果,所述第一投票结果包括请求无效信息;在检测到所述选举版本号小于或等于所述投票版本号时,确定第五序列号和第六序列号,第五序列号为所述Slave网关已执行的最后一条请求日志的序列号,所述第六序列号为所述Slave网关尚未执行的第一条请求日志的序列号;在检测到所述第五序列号小于所述第三序列号时,向所述Candidate网关反馈第二投票结果,所述第二投票结果包括所述赞成结果;在检测到所述选举版本号等于所述投票版本号,并且所述第五序列号等于所述第三序列号时,比较所述第六序列号和所述第四序列号;在检测到所述第六序列号小于或等于所述第四序列号时,向所述Candidate网关反馈第二投票结果。
在一个实施例中,所述Master网关还用于:在检测到所述操作权限信息是所述查询权限信息时,基于所述查询权限信息查询本地的访问权限注册表,并向所述客户端反馈对所述共享云硬盘的访问权限的查询结果;以及所述Master网关还用于:将所述一致性信息的同步结果反馈至所述客户端。
本公开的实施例所提供的共享云硬盘的访问权限控制系统,通过部署基于Master网关和多个Slave网关的分布式集群,以实现基于分布式集群的共享云硬盘存储服务,进一步地,通过增加仲裁服务器,通过仲裁服务器实现Master网关和Slave网关之间的权限一致性的同步,以实现看客户端的访问权限在多台存储服务器上保持一致,与相关技术中的多个客户端访问硬盘的权限控制方案相比,一方面,基于Master网关和多个Slave网关生成的分布式集群,适用于软件定义存储架构下的云硬盘,另一方面,通过实现Master网关和Slave网关之间的权限一致性的同步,使集群内部任一节点所记录的客户端权限均能够保持一致,从而能够降低客户端访问到此节点造成数据访问冲突的概率,并进一步降低产生严重的数据错误的概率,提高客户端对共享云硬盘访问的可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开实施例中一种共享云硬盘的访问权限控制系统的示意图;
图2示出本公开实施例中另一种共享云硬盘的访问权限控制系统的示意图;
图3示出本公开实施例中一种共享云硬盘的访问权限控制方法的流程图;
图4示出本公开实施例中另一种共享云硬盘的访问权限控制方法的流程图;
图5示出本公开实施例中再一种共享云硬盘的访问权限控制方法的流程图;
图6示出本公开实施例中又一种共享云硬盘的访问权限控制方法的流程图;
图7示出本公开实施例中一种共享云硬盘的访问权限控制装置的示意图;
图8示出本公开实施例中一种计算机设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本申请提供的方案,一方面,基于Master网关和多个Slave网关生成的分布式集群,适用于软件定义存储架构下的云硬盘,另一方面,通过实现Master网关和Slave网关之间的权限一致性的同步,使集群内部任一节点所记录的客户端权限均能够保持一致,从而能够降低客户端访问到此节点造成数据访问冲突的概率,并进一步降低产生严重的数据错误的概率,提高客户端对共享云硬盘访问的可靠性。
为了便于理解,下面首先对本申请涉及到的名词(缩写词)进行解释。
表1
权限操作op | 解释 | 标签flag |
INQUIRY | 查询当前云硬盘的访问权限 | IN |
REGISTER | 注册当前客户端,使其具有预留权限 | OUT |
RESERVE | 预留云硬盘,预留成功后独占访问云硬盘 | OUT |
RELEASE | 释放访问权限 | OUT |
CLEAR | 清除云硬盘所有注册和预留信息 | OUT |
Master网关:主网关。
Slave网关:从网关。
Candidate网关:候选网关。
current_version:当前版本号。
vote_version:投票版本号。
last_seq:已执行的最后一条请求日志的序列号。
undo_seq:尚未执行的第一条请求日志的序列号。
LUN:目标云硬盘编号。
LOGauth[]:权威日志集合。
LOGM[]:Master网关请求日志集合。
LOGx[]:Slave网关请求日志集合。
LR:请求日志。
下面,将结合附图及实施例对本示例实施方式中的共享云硬盘的访问权限控制系统以及对应的控制方法的各个步骤进行更详细的说明。
如图1所示,根据本公开的一个实施例的共享云硬盘的访问权限控制系统,包括:客户端10、Master网关20、仲裁服务器30和多个Slave网关40。
其中,客户端10用于发送共享云硬盘的操作权限信息,操作权限信息的具体内容如上表1所示。
具体地,客户端10为共享云硬盘的使用者。
操作权限信息包括但不限于权限操作的类型和目标云硬盘编号,即权限操作<op,LUN>,如表1所示,权限操作包括但不限于权限查询操作、申请注册操作、申请预留操作、释放访问权限操作,以及清除注册信息和预留信息的操作,通过发送注册信息、预留请求等申请云硬盘的访问权限,预留成功后其余客户端不能再次预留或访问同一云硬盘,另外也可以通过释放、清除操作注销访问权限,权限注销后其余客户端可以进行预留来确保云硬盘的独占访问。
Master网关20与客户端通信连接,用于接收操作权限信息,并检测操作权限信息是否为查询权限信息。
如图2所示,具体地,Master网关20被配置为直接与客户端进行交互的网关,并具有管理所有客户端访问云硬盘的权限,设置有权限管理模块202和一致性处理模块204,权限管理模块202用于解析操作权限信息。
Master网关20还用于在检测到操作权限信息为非查询权限信息时,将操作权限信息解析为请求日志,并基于请求日志发送访问权限的一致性信息。
请求日志为操作权限信息的解析结果,并基于一致性处理模块204对应生成一致性信息,以在网关之间的交互过程中,完成权限一致性的同步。
具体地,一致性处理模块用于基于访问权限的一致性信息保证所有网关上的请求日志和访问权限注册表保持一致。
仲裁服务器30与Master网关20通信连接,用于接收一致性信息。
具体地,仲裁服务器30为一个可靠的第三方数据存储服务,具体可以为RocksDBKV数据库,记录有权威日志302和权威注册表304。
多个Slave网关40分别与仲裁服务器30通信连接,用于访问仲裁服务器30,以获取一致性信息,一致性信息适于使Slave网关40与Master网关20的访问权限保持一致。
其中,Master网关20节点和多个Slave网关40节点组成了分布式存储集群,Slave网关40拥有与Master网关20一致的权限信息,但是不与客户端交互,可以通过心跳信息向Master汇报自己的状态并从仲裁服务器30中同步访问权限。
具体地,Slave网关40与Master网关20的访问权限保持一致,包括但不限于将客户端的请求日志保持一致,以及将客户端的访问权限注册表的信息保持一致。
另外,Slave网关40也具有一致性处理模块402,Master网关20的一致性处理模块204拥有更新权威日志和权威注册表的权限,保持Master与权威信息的强一致,Slave网关40的一致性处理模块402拥有仲裁服务器30的只读权限,网关间通过一致性处理模块传递心跳信息。
Master网关20还用于将一致性信息的同步结果反馈至客户端。
在该实施例中,通过部署基于Master网关和多个Slave网关的分布式集群,以实现基于分布式集群的共享云硬盘存储服务,进一步地,通过增加仲裁服务器,通过仲裁服务器实现Master网关和Slave网关之间的权限一致性的同步,以实现看客户端的访问权限在多台存储服务器上保持一致,与相关技术中的多个客户端访问硬盘的权限控制方案相比,一方面,基于Master网关和多个Slave网关生成的分布式集群,适用于软件定义存储架构下的云硬盘,另一方面,通过实现Master网关和Slave网关之间的权限一致性的同步,使集群内部任一节点所记录的客户端权限均能够保持一致,从而能够降低客户端访问到此节点造成数据访问冲突的概率,并进一步降低产生严重的数据错误的概率,提高客户端对共享云硬盘访问的可靠性。
在一个实施例中,Slave网关访问仲裁服务器,以获取一致性信息,具体包括:Slave网关还与Master网关通信连接,以接收Master网关基于一致性信息生成的心跳信息,并响应于心跳信息,访问仲裁服务器,以获取一致性信息;或Slave网关主动轮询仲裁服务器,以在检测到仲裁服务器接收到一致性信息时,获取一致性信息。
在该实施例中,仲裁服务器中记录有权威日志和权威注册表,通过Master网关向所有Slave网关发送心跳消息,以通知所有Slave网关读取权威日志同步到本地,访问权限注册表通过同样的过程进行同步从节点通常是完全被动的接受主节点的通知,若Master网关通知失败,Slave网关上的更新定时器超时后也会主动读取消息,通过为Slave网关增加了主动同步的机制,从节点在空闲的情况下轮询权威日志,主动地与权威日志保持一致,提高了数据访问的正确性。
其中,Gx(x=0,1,2...,n-1)代表集群中的第x个Slave网关服务器,GM为Master网关。
在一个实施例中,仲裁服务器还用于:在接收到一致性信息时,将一致性信息中存储在暂存区。
具体地,仲裁模块收到SYNC消息,将其暂时缓存到消息暂存区,Master网关GM通知Slave服务器Gx(x=0,1,2...,n-1)。
Slave网关还用于:从暂存区中获取一致性信息,基于对一致性信息的解析结果向Master网关反馈更新信息。
另外,Slave网关Gx收到GM通知,读取消息暂存区获取一致性消息SYNC,若GM通知失败,Gx上的更新定时器超时后也会主动读取消息。
Master网关还用于:基于更新信息确定请求日志在多个Slave网关中达成一致时,向仲裁服务器发送接受信息。
具体地,Master网关收到回复后,修改日志LRi的num_accept+1,当num_accept≥(n/2)+1,认为该日志在集群内已达成一致,Master网关GM发送ACCEPT接受消息到仲裁服务器。
仲裁服务器还用于:将一致性信息中的请求日志存储到权威日志中。
具体地,仲裁服务器将一致性消息取出,解析其中的请求日志并记录到权威日志。
Master网关还用于:基于请求日志更新本地的访问权限注册表,并基于更新结果继续基于仲裁服务器与Slave网关执行权限一致性的同步操作。
其中,访问权限注册表用于管理访问权限,记录客户端权限以及云硬盘的加锁信息,由一致性处理模块同步至权威注册表并在各网关间保证一致。
仲裁服务器还用于:基于更新结果更新权威注册表。
如图3所示,根据本公开的共享云硬盘的访问权限控制方案中的一致性处理过程,通过客户端、Master网关、仲裁服务器核Slave网关之间的交互,具体包括:
步骤S302,发送操作权限信息。
步骤S304,基于权限管理模块将操作权限信息解析为请求日志。
其中,如果操作权限信息的flag标签为IN,则直接向客户端反馈结果。
如果操作权限信息的flag标签为OUT,则进行一致性同步。
步骤S306,基于一致性处理模块将请求日志转化为一致性信息。
步骤S308,向仲裁服务器发送一致性信息。
步骤S310,Slave网关向发送一致性信息。
步骤S312,同步至本地日志。
步骤S314,向Master网关发送更新信息。
步骤S316,向仲裁服务器发送接受信息。
步骤S318,更新权威日志。
步骤S320,Master网关更新权限注册表。
步骤S322,更新权威注册表。
步骤S324,Slave网关更新权限注册表。
在一个实施例中,Master网关将操作权限信息解析为请求日志,并基于请求日志发送访问权限的一致性信息,具体包括:Master网关基于对操作权限信息的解析操作确定目标云硬盘编号、请求序列号和操作类型;根据目标云硬盘编号、请求序列号、操作类型、接收数量和Master网关的当前版本号生成请求日志,接收数量用于统计接收到一致性信息的Slave网关的数量;基于请求日志和第一序列号生成一致性信息,并发送一致性信息,其中,第一序列号为Master网关尚未执行的第一条请求日志的序列号。
其中,操作类型如表1中具有“OUT”标签的操作。
在该实施例中,请求日志记录了所有客户端权限的操作,通过维护请求日志来约束集群各网关的客户端权限注册表保持一致,请求日志LR=<version,seq_num,op,LUN,num_accept>,其中version表示当前Master网关的版本号,Master网关发生更替时version单调递增1,每届Master任期内version保持不变;seq_num表示请求日志的序列号,用于标识不同的请求日志;num_accept表示已接收到一致性信息的Slave网关的数量,仅在Master网关有效,Master网关会在客户端每次权限操作后,在Master请求日志LOGM[]中记录一条日志并将其同步到权威日志LOGauth[]。集群服务器可以读取LOGauth[]并与本地日志进行比较,从而确定权限注册表是否正确,如果出现偏差,将根据请求日志更新或是回退权限注册表以保持一致性算法的正确性。
具体地,GM解析客户端操作,生成请求日志LRi,LRi=<version=current_versionM,seq_num=i,op,LUN,num_accept=0>并据此生成消息SYNC={current_versionM,i,op,LUN,num_accept,undo_seqM},发送至仲裁服务器。
在一个实施例中,Slave网关从暂存区中获取一致性信息,基于对一致性信息的解析结果向Master网关反馈更新信息,具体包括:
Slave网关从一致性信息中解析出Master网关的当前版本号、第一序列号和请求序列号。
在Master网关的当前版本号大于或等于Slave网关的当前版本号时,检测第一序列号是否大于第二序列号,第二序列号为Slave网关尚未执行的第一条请求日志的序列号。
在检测到第一序列号大于第二序列号时,向仲裁服务器发送日志复制请求,日志复制请求用于从权威日志复制指定日志,指定日志为序列号在第二序列号与第一序列号之间的历史请求日志。
在完成复制指定日志时,将Slave网关尚未执行的第一条请求日志的序列号更新为第一序列号对应的请求日志;以及在Slave网关的本地日志集合中查询与请求序列号对应的本地日志。
在本地日志存在,并且Master网关的当前版本号大于本地日志对应的Slave网关的版本号时,基于请求日志覆盖本地日志。
在本地日志不存在时,将请求日志直接添加至本地日志集合中。
假设存储集群包含n态服务器节点,Gx(x=0,1,2...,n-1)代表集群中的第x个Slave网关服务器,GM为Master网关。每台网关服务器维护以下一致性信息<current_version,LOG[],last_seq,undo_seq>。
其中current_version为Master网关的当前版本号,LOG[]是服务器拥有的请求日志,last_seq表示服务器已执行完成的最后一条请求日志的序列号,undo_seq表示服务器尚未执行完成的第一条请求日志的序列号,当GM发起对日志LRi(i≥0)进行一致性决议时:GM解析客户端操作,生成请求日志,并基于请求日志生成一致性消息SYNC={current_versionM,i,op,LUN,num_accept,undo_seqM},发送至仲裁服务器。
仲裁服务器收到SYNC消息,将其暂时缓存到消息暂存区,GM通知Slave服务器Gx(x=0,1,2...,n-1);Gx收到GM通知,读取消息暂存区获取SYNC消息,若GM通知失败,Gx上的更新定时器超时后也会主动读取消息,Gx解析SYNC消息,若消息中携带的Master网关的当前版本号current_versionM≥Slave网关的当前版本号current_versionx时,则认为Slave网关的本地日志版本落后,准备接收新日志。具体地,首先比较第二序列号undo_seqx与SYNC消息中的第一序列号undo_seqM,如果第二序列号undo_seqx<第一序列号undo_seqM,则需要先从权威日志LOGauth[]复制日志序号在[undo_seqx,undo_seqM)之间的所有日志,复制完成后,令undo_seqx=undo_seqM。如果undo_seqx=undo_seqM,那么尝试根据SYNC中携带的日志序列号i在本地LOGx[]查找对应的日志条目LRi。
若LRi存在,若Master网关的当前版本号curentr_versionM>本地日志对应的所述Slave网关的版本号versioni,那么从SYNC消息中解析出请求日志,覆盖LRi;若不存在,那么将新日志直接添加到LOGx[],然后Gx回复GM同步成功;GM收到回复后,修改日志LRi的num_accept+1,当num_accept≥(n/2)+1,认为该日志在集群内已达成一致。
GM发送ACCEPT接受消息到仲裁服务器,仲裁服务器将暂存区中的SYNC消息取出,解析其中的请求日志并记录到权威日志,权威日志更新后,GM根据请求日志更新访问权限注册表并写入权威注册表,同时通知Gx权威注册表已更新,Gx读取权威注册表并覆盖本地注册表,同时更新last_seqx=undo_seqx和undo_seqx+1,更新完成后通知GM;最后GM更新其last_seqM=undo_seqM和undo_seqM+1,并回复客户端权限操作的结果。通过上述一致性算法的决议流程,能够保证客户端访问权限信息在存储集群内的强一致性。
在一个实施例中,非查询权限信息包括客户端的注册信息,以在注册成功后具有共享云硬盘的预留权限,共享云硬盘的预留请求,以预留成功后独占访问共享云硬盘,Master网关还用于:接收客户端发送的注册信息,以基于注册信息与Slave网关之间执行注册权限一致性的同步操作,并在访问权限注册表中为客户端配置注册权限和独占权限;Master网关还用于:接收客户端发送的预留请求,基于预留请求检测共享云硬盘是否被预留,以在检测到共享云硬盘被预留时,向客户端赋予独占权限,以及在检测到共享云硬盘未被预留时,接收客户端的独占轮询信息。
具体地,如图2所示,为客户端定义了两种类型的权限,并存储在访问权限注册表中,包括:
注册者registrant:客户端注册成功后,拥有云硬盘预留的权限。
独占者holder:拥有独占访问云硬盘的权限,注册者预留成功后成为独占者。
如图4所示,基于注册和预留的具体实现方式,包括;
步骤S402,客户端向Master网关发送注册信息。
步骤S404,Master网关验证注册信息,以为客户端配置预留目标云硬盘的权限。
步骤S406,Master网关检测目标云硬盘是否被预留,若“是”,进入步骤S414,若“否”,进入步骤S408。
步骤S408,客户端预留成功,独占读写权限。
步骤S410,检测I/O操作是否完成,若“是”,进入步骤S412,若“否”,返回步骤S408。
步骤S412,释放访问权限。
步骤S414,返回,轮询云硬盘是否空闲。
在该实施例中,客户端在访问云硬盘前,需要向Master网关进行注册以获取预留权限。注册成功后,客户端尝试通过预留操作获取访问权限,若云硬盘尚未被其他客户端预留,则客户端预留成功,可以进行数据IO;若有其他客户端已经预留成功,则当前客户端将轮询直至访问权限释放。
在一个实施例中,在未配置Master网关或当前的Master网关异常时,多个Slave网关还用于:基于选举策略从多个Slave网关中选举正常运行的Master网关。
在该实施例中,存储集群初始化完成后,所有网关工作在Slave状态,集群中无Master。Slave会等待来自Master的心跳消息,若在心跳超时时间内Slave未收到心跳消息,则Slave切换工作状态为候选(Candidate)并发起选举流程。Candidate服务器会向集群中所有服务器发出选举决议,获得大多数决议通过的回复后成为Master网关,开始进行客户端权限管理并向所有Slave发出心跳消息保证Master的权威。当Master故障后,集群将重复上述过程选举出新的Master。
在一个实施例中,多个Slave网关基于选举策略从多个Slave网关中选举正常运行的Master网关,具体包括:将多个Slave网关中的任意一个确定为Candidate网关,Candidate网关用于:向剩余的Slave网关发送投票信息;Slave网关还用于:响应于接收到的投票信息,并基于投票信息的投票版本号和Slave网关的选举版本号之间的关系生成投票结果;Candidate网关还用于:接收投票结果,并基于投票结果统计出赞成结果的数量大于数量阈值时,将运行身份切换为正常运行的Master网关,其中,数量阈值基于多个Slave网关数量的1/2进行配置。
在一个实施例中,投票信息包括投票版本号、第三序列号和第四序列号,第三序列号为Candidate网关已执行的最后一条请求日志的序列号,第四序列号为Candidate网关尚未执行的第一条请求日志的序列号。
Slave网关基于投票信息的投票版本号和Slave网关的选举版本号之间的关系生成投票结果,具体包括:
在检测到选举版本号小于Slave网关的当前版本号时,将Slave网关的当前版本号确定为选举版本号。
在检测到选举版本号大于投票版本号时,向Candidate网关反馈第一投票结果,第一投票结果包括请求无效信息。
在检测到选举版本号小于或等于投票版本号时,确定第五序列号和第六序列号,第五序列号为Slave网关已执行的最后一条请求日志的序列号,第六序列号为Slave网关尚未执行的第一条请求日志的序列号。
在检测到第五序列号小于第三序列号时,向Candidate网关反馈第二投票结果,第二投票结果包括赞成结果。
在检测到选举版本号等于投票版本号,并且第五序列号等于第三序列号时,比较第六序列号和第四序列号。
在检测到第六序列号小于或等于第四序列号时,向Candidate网关反馈第二投票结果。
具体地,假设存储集群包含n态服务器节点,Gx(x=0,1,2...,n-1)代表集群中的第x个Slave网关服务器,GM为Master网关,GC为候选网关。每台网关服务器维护以下选举信息<current_version,vote_version,last_seq,undo_seq,votes>,其中current_version为服务器网关所处的当前版本号,vote_version是服务器网关请求选举的版本号,last_seq表示服务器网关已执行完成的最后一条请求日志的序列号,undo_seq表示服务器网关尚未执行完成的第一条请求日志的序列号,votes为候选者获得的选票数量,当集群中GC尝试发起选举时,如图5所示,具体包括:
步骤S502,Slave网关接收投票信息。
步骤S504,检测选举版本号是否小于Slave网关的当前版本号,若“是”,进入步骤S506,若“否”,进入步骤S508。
步骤S506,将Slave网关的当前版本号确定为选举版本号。
步骤S508,检测选举版本号是否大于投票版本号,若“是”,进入步骤S518,若“否”,进入步骤S510。
步骤S510,检测第五序列号是否大于第三序列号,若“是”,进入步骤S518,若“否”,进入步骤S512。
其中,第三序列号为Candidate网关已执行的最后一条请求日志的序列号,第五序列号为Slave网关已执行的最后一条请求日志的序列号。
步骤S512,检测第五序列号是否小于第三序列号,若“是”,进入步骤S516,若“否”,进入步骤S514。
步骤S514,检测第六序列号是否小于或等于第四序列号,若“是”,进入步骤S516,若“否”,进入步骤S518。
第四序列号为Candidate网关尚未执行的第一条请求日志的序列号,第六序列号为Slave网关尚未执行的第一条请求日志的序列号。
步骤S516,投票请求成功,票数加1。
步骤S518,投票请求无效。
GC状态由Slave转换为Candidate,并提出以新的集群版本号plc(plc>current_versionc),向集群中其它服务器发出请求投票消息VOTE={vote_versionc=plc,last_seqc,undo_seqc};Slave网关服务器Gx收到VOTE消息,解析出消息中候选服务器发送的投票版本号vote_versionc,第三序列号last_seqc以及第四序列号undo_seqc并进入投票流程。
首先比较Slave网关本地的选举版本号vote_versionx与Slave网关的当前版本号current_versionx,若vote_versionx<current_versionx,则先令vote_versionx=current_versionx再进行后续比较。
接下来与候选版本号比较,如果vote_versionx>vote_versionc,则认为该投票请求无效,直接回复请求投票失败,否则继续比较Slave本地的最后已执行日志序列号第五序列号last_seqx和候选者日志第三序列号last_seqc。如果last_seqx<last_seqc,说明GC的请求日志状态比Gx的请求日志状态更接近上一任Master,此时Gx应当尝试投票给Gc。
如果vote_versionx=vote_versionc且last_seqx=last_seqc,进一步地,比较本地尚未执行的日志序列号即第六序列好undo_seqx和候选者未执行日志序号,即第四序列号undo_seqc的大小,若undo_seqx≤undo_seqc,亦可认为GC持有的请求日志不少于Gx,此时Gx应当尝试投票给Gc。
本领域的技术人员能够理解的是,除上述两种情况外,Gx不会尝试投票给Gc,因为无法说明此时Gc拥有更多的请求日志。投票流程结束后,Gx将投票结果回复Gc。
Gc会等待集群服务器的响应,解析VOTE消息的回复获取投票的结果,若投票成功,则更新投票统计值votes递增1,当votes≥(n/2)+1,即数量阈值时,可以认为选举成功,GC状态由Candidate转换为Master,开始管理客户端访问权限,并向所有Slave服务器发送心跳信息HEARTBEAT确认自己的权威。在存储集群没有Master网关时,通过以上选举步骤,可以确定新的Master,并且保证新Master拥有与权威日志和权威注册表一致的客户端权限管理信息。
在一个实施例中,Master网关还用于:在检测到操作权限信息是查询权限信息时,基于查询权限信息查询本地的访问权限注册表,并向客户端反馈对共享云硬盘的访问权限的查询结果。
具体地,如表1所示,标签为IN的操作权限信息可以理解为只读信息,标签为OUT的操作权限信息可以理解为需要改变操作权限的信息。
在该实施例中,请求首先到达Master网关GM的权限管理模块,解析操作权限信息<op,LUN>中的op.flag,若标签为IN,表明是查询权限信息,Master网关直接读取Master网关本地的访问权限注册表数据,回复客户端,若标签为OUT,则进一步由一致性处理模块将<op,LUN>解析为请求日志,并进一步生成一致性信息,以在Master网关和Slave网关执行权限一致性操作。
需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
如图6所示,下面基于在Master网关侧的执行过程,对本工况的共享云硬盘的访问权限控制进行具体描述,包括
步骤S602,Master网关接收操作权限信息,并检测操作权限信息是否为查询权限信息。
步骤S604,Master网关在检测到操作权限信息为非查询权限信息时,将操作权限信息解析为请求日志,并基于请求日志向仲裁服务器发送访问权限的一致性信息。
步骤S606,Master网关向Slave网关发送基于一致性信息生成的心跳信息,以使Slave网关基于心跳信息,访问仲裁服务器,以获取一致性信息。
步骤S608,Master网关接收Slave网关发送的基于对一致性信息的解析结果生成的更新信息。
步骤S610,Master网关基于更新信息确定请求日志在多个Slave网关中达成一致时,向仲裁服务器发送接受信息,以使仲裁服务器将一致性信息中的请求日志存储到权威日志中。
步骤S612,Master网关基于请求日志更新本地的访问权限注册表,并基于更新结果继续基于仲裁服务器与Slave网关执行权限一致性的同步操作。
下面参照图7来描述根据本发明的这种实施方式的一种共享云硬盘的访问权限控制装置700,应用于Master网关。图7所示的共享云硬盘的访问权限控制装置700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
共享云硬盘的访问权限控制装置700以硬件模块的形式表现。共享云硬盘的访问权限控制装置700的组件可以包括但不限于:接收模块702,用于接收操作权限信息,并检测操作权限信息是否为查询权限信息;解析模块704,用于在检测到操作权限信息为非查询权限信息时,将操作权限信息解析为请求日志,并基于请求日志向仲裁服务器发送访问权限的一致性信息;发送模块706,用于向Slave网关发送基于一致性信息生成的心跳信息,以使Slave网关基于心跳信息,访问仲裁服务器,以获取一致性信息;接收模块702还用于:接收Slave网关发送的基于对一致性信息的解析结果生成的更新信息;发送模块706还用于:基于更新信息确定请求日志在多个Slave网关中达成一致时,向仲裁服务器发送接受信息,以使仲裁服务器将一致性信息中的请求日志存储到权威日志中;还包括:更新模块708,用于基于请求日志更新本地的访问权限注册表,并基于更新结果继续基于仲裁服务器与Slave网关执行权限一致性的同步操作。
如图8所示,网关、客户端和服务器均由电子设备构成,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图6中所示的步骤S602至步骤S612所描述的方案。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备860(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口840进行。并且,电子设备800还可以通过网络适配器850与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器850通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (10)
1.一种共享云硬盘的访问权限控制系统,其特征在于,包括:
客户端,用于发送所述共享云硬盘的操作权限信息;
Master网关,与所述客户端通信连接,用于接收所述操作权限信息,并检测所述操作权限信息是否为查询权限信息;
所述Master网关还用于:在检测到所述操作权限信息为非查询权限信息时,将所述操作权限信息解析为请求日志,并基于所述请求日志发送访问权限的一致性信息;
仲裁服务器,与所述Master网关通信连接,用于接收所述一致性信息;
多个Slave网关,分别与所述仲裁服务器通信连接,用于访问所述仲裁服务器,以获取所述一致性信息,所述一致性信息适于使所述Slave网关与所述Master网关的访问权限保持一致。
2.根据权利要求1所述的共享云硬盘的访问权限控制系统,其特征在于,所述Slave网关访问所述仲裁服务器,以获取所述一致性信息,具体包括:
所述Slave网关还与所述Master网关通信连接,以接收所述Master网关基于所述一致性信息生成的心跳信息,并响应于所述心跳信息,访问所述仲裁服务器,以获取所述一致性信息;或
所述Slave网关主动轮询所述仲裁服务器,以在检测到所述仲裁服务器接收到所述一致性信息时,获取所述一致性信息。
3.根据权利要求1所述的共享云硬盘的访问权限控制系统,其特征在于,所述仲裁服务器中记录有权威日志和权威注册表,
所述仲裁服务器还用于:在接收到所述一致性信息时,将所述一致性信息中存储在暂存区;
所述Slave网关还用于:从所述暂存区中获取所述一致性信息,基于对所述一致性信息的解析结果向所述Master网关反馈更新信息;
所述Master网关还用于:基于所述更新信息确定所述请求日志在所述多个Slave网关中达成一致时,向所述仲裁服务器发送接受信息;
所述仲裁服务器还用于:将所述一致性信息中的请求日志存储到所述权威日志中;
所述Master网关还用于:基于所述请求日志更新本地的访问权限注册表,并基于更新结果继续基于所述仲裁服务器与所述Slave网关执行所述权限一致性的同步操作;
所述仲裁服务器还用于:基于所述更新结果更新所述权威注册表。
4.根据权利要求3所述的共享云硬盘的访问权限控制系统,其特征在于,所述Master网关将所述操作权限信息解析为请求日志,并基于所述请求日志发送访问权限的一致性信息,具体包括:
所述Master网关基于对所述操作权限信息的解析操作确定目标云硬盘编号、请求序列号和操作类型;
根据所述目标云硬盘编号、所述请求序列号、所述操作类型、接收数量和所述Master网关的当前版本号生成所述请求日志,所述接收数量用于统计接收到所述一致性信息的所述Slave网关的数量;
基于所述请求日志和第一序列号生成所述一致性信息,并发送所述一致性信息,
其中,所述第一序列号为所述Master网关尚未执行的第一条请求日志的序列号。
5.根据权利要求4所述的共享云硬盘的访问权限控制系统,其特征在于,所述Slave网关从所述暂存区中获取所述一致性信息,基于对所述一致性信息的解析结果向所述Master网关反馈更新信息,具体包括:
所述Slave网关从所述一致性信息中解析出所述Master网关的当前版本号、所述第一序列号和所述请求序列号;
在所述Master网关的当前版本号大于或等于所述Slave网关的当前版本号时,检测所述第一序列号是否大于第二序列号,所述第二序列号为所述Slave网关尚未执行的第一条请求日志的序列号;
在检测到所述第一序列号大于所述第二序列号时,向所述仲裁服务器发送日志复制请求,所述日志复制请求用于从所述权威日志复制指定日志,所述指定日志为序列号在所述第二序列号与所述第一序列号之间的历史请求日志;
在完成复制所述指定日志时,将所述Slave网关尚未执行的第一条请求日志的序列号更新为所述第一序列号对应的所述请求日志;以及
在所述Slave网关的本地日志集合中查询与所述请求序列号对应的本地日志;
在所述本地日志存在,并且所述Master网关的当前版本号大于所述本地日志对应的所述Slave网关的版本号时,基于所述请求日志覆盖所述本地日志;
在所述本地日志不存在时,将所述请求日志直接添加至所述本地日志集合中。
6.根据权利要求3所述的共享云硬盘的访问权限控制系统,其特征在于,所述非查询权限信息包括所述客户端的注册信息,以在注册成功后具有所述共享云硬盘的预留权限,所述共享云硬盘的预留请求,以预留成功后独占访问所述共享云硬盘,
所述Master网关还用于:接收所述客户端发送的所述注册信息,以基于所述注册信息与所述Slave网关之间执行注册权限一致性的同步操作,并在所述访问权限注册表中为所述客户端配置注册权限和独占权限;
所述Master网关还用于:接收所述客户端发送的所述预留请求,基于所述预留请求检测所述共享云硬盘是否被预留,以在检测到共享云硬盘被预留时,向所述客户端赋予所述独占权限,以及在检测到共享云硬盘未被预留时,接收所述客户端的独占轮询信息。
7.根据权利要求2所述的共享云硬盘的访问权限控制系统,其特征在于,在未配置所述Master网关或当前的所述Master网关异常时,
所述多个Slave网关还用于:基于选举策略从多个所述Slave网关中选举正常运行的所述Master网关。
8.根据权利要求7所述的共享云硬盘的访问权限控制系统,其特征在于,所述多个Slave网关基于选举策略从多个所述Slave网关中选举正常运行的所述Master网关,具体包括:
将所述多个Slave网关中的任意一个确定为Candidate网关,所述Candidate网关用于:向剩余的所述Slave网关发送投票信息;
所述Slave网关还用于:响应于接收到的所述投票信息,并基于投票信息的投票版本号和所述Slave网关的选举版本号之间的关系生成投票结果;
所述Candidate网关还用于:接收所述投票结果,并基于所述投票结果统计出赞成结果的数量大于数量阈值时,将运行身份切换为正常运行的所述Master网关,
其中,所述数量阈值基于所述多个Slave网关数量的1/2进行配置。
9.根据权利要求8所述的共享云硬盘的访问权限控制系统,其特征在于,所述投票信息包括所述投票版本号、第三序列号和第四序列号,第三序列号为所述Candidate网关已执行的最后一条请求日志的序列号,所述第四序列号为所述Candidate网关尚未执行的第一条请求日志的序列号,
所述Slave网关基于投票信息的投票版本号和所述Slave网关的选举版本号之间的关系生成投票结果,具体包括:
在检测到所述选举版本号小于所述Slave网关的当前版本号时,将所述Slave网关的当前版本号确定为所述选举版本号;
在检测到所述选举版本号大于所述投票版本号时,向所述Candidate网关反馈第一投票结果,所述第一投票结果包括请求无效信息;
在检测到所述选举版本号小于或等于所述投票版本号时,确定第五序列号和第六序列号,第五序列号为所述Slave网关已执行的最后一条请求日志的序列号,所述第六序列号为所述Slave网关尚未执行的第一条请求日志的序列号;
在检测到所述第五序列号小于所述第三序列号时,向所述Candidate网关反馈第二投票结果,所述第二投票结果包括所述赞成结果;
在检测到所述选举版本号等于所述投票版本号,并且所述第五序列号等于所述第三序列号时,比较所述第六序列号和所述第四序列号;
在检测到所述第六序列号小于或等于所述第四序列号时,向所述Candidate网关反馈第二投票结果。
10.根据权利要求1至9中任一项所述的共享云硬盘的访问权限控制系统,其特征在于,
所述Master网关还用于:在检测到所述操作权限信息是所述查询权限信息时,基于所述查询权限信息查询本地的访问权限注册表,并向所述客户端反馈对所述共享云硬盘的访问权限的查询结果;以及
所述Master网关还用于:将所述一致性信息的同步结果反馈至所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111626916.4A CN114285865B (zh) | 2021-12-28 | 2021-12-28 | 共享云硬盘的访问权限控制系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111626916.4A CN114285865B (zh) | 2021-12-28 | 2021-12-28 | 共享云硬盘的访问权限控制系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114285865A true CN114285865A (zh) | 2022-04-05 |
CN114285865B CN114285865B (zh) | 2023-08-08 |
Family
ID=80877011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111626916.4A Active CN114285865B (zh) | 2021-12-28 | 2021-12-28 | 共享云硬盘的访问权限控制系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114285865B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449734B1 (en) * | 1998-04-17 | 2002-09-10 | Microsoft Corporation | Method and system for discarding locally committed transactions to ensure consistency in a server cluster |
CN101252603A (zh) * | 2008-04-11 | 2008-08-27 | 清华大学 | 基于存储区域网络san的集群分布式锁管理方法 |
US20120131090A1 (en) * | 2010-11-22 | 2012-05-24 | Infosys Technologies Ltd. | Distributed registry for device discovery using quorum consensus protocol |
CN106570007A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 用于分布式缓存系统数据同步的方法和设备 |
US20180268044A1 (en) * | 2017-03-15 | 2018-09-20 | International Business Machines Corporation | Monotonic transactions in a multi-master database with loosely coupled nodes |
CN109067756A (zh) * | 2018-08-20 | 2018-12-21 | 国云科技股份有限公司 | 一种适用于多云管理的用户同步及权限控制方法 |
CN109995560A (zh) * | 2017-12-30 | 2019-07-09 | 中国移动通信集团贵州有限公司 | 云资源池管理系统及方法 |
US20190354450A1 (en) * | 2018-05-21 | 2019-11-21 | Pure Storage, Inc. | Switching between fault response models in a storage system |
US20200028750A1 (en) * | 2018-07-17 | 2020-01-23 | Software Ag | System and/or method for maintaining highly-available, consistent, partition-tolerant clusters using client voters |
US20200320211A1 (en) * | 2019-04-05 | 2020-10-08 | Spideroak, Inc. | Integration of a block chain, managing group authority and access in an enterprise environment |
-
2021
- 2021-12-28 CN CN202111626916.4A patent/CN114285865B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449734B1 (en) * | 1998-04-17 | 2002-09-10 | Microsoft Corporation | Method and system for discarding locally committed transactions to ensure consistency in a server cluster |
CN101252603A (zh) * | 2008-04-11 | 2008-08-27 | 清华大学 | 基于存储区域网络san的集群分布式锁管理方法 |
US20120131090A1 (en) * | 2010-11-22 | 2012-05-24 | Infosys Technologies Ltd. | Distributed registry for device discovery using quorum consensus protocol |
CN106570007A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 用于分布式缓存系统数据同步的方法和设备 |
US20180268044A1 (en) * | 2017-03-15 | 2018-09-20 | International Business Machines Corporation | Monotonic transactions in a multi-master database with loosely coupled nodes |
CN109995560A (zh) * | 2017-12-30 | 2019-07-09 | 中国移动通信集团贵州有限公司 | 云资源池管理系统及方法 |
US20190354450A1 (en) * | 2018-05-21 | 2019-11-21 | Pure Storage, Inc. | Switching between fault response models in a storage system |
US20200028750A1 (en) * | 2018-07-17 | 2020-01-23 | Software Ag | System and/or method for maintaining highly-available, consistent, partition-tolerant clusters using client voters |
CN109067756A (zh) * | 2018-08-20 | 2018-12-21 | 国云科技股份有限公司 | 一种适用于多云管理的用户同步及权限控制方法 |
US20200320211A1 (en) * | 2019-04-05 | 2020-10-08 | Spideroak, Inc. | Integration of a block chain, managing group authority and access in an enterprise environment |
Non-Patent Citations (6)
Title |
---|
PRASHANT ALKUNTE: "Enhanced security using shared authority protocol and data partitioning for cloud storage", 《2016 INTERNATIONAL CONFERENCE ON AUTOMATIC CONTROL AND DYNAMIC OPTIMIZATION TECHNIQUES (ICACDOT)》 * |
傅颖勋: "一种云存储环境下的安全网盘系统", 《软件学报》 * |
张晨东;郭进伟;刘柏众;储佳佳;周敏奇;钱卫宁: "基于Raft一致性协议的高可用性实现", 《华东师范大学学报(自然科学版)》 * |
王嘉豪;蔡鹏;钱卫宁;周傲英: "集群数据库系统的日志复制和故障恢复", 《软件学报》 * |
薛强: "网络入侵检测系统NIDS的新技术研究", 《中国优秀博硕士学位论文全文数据库 (博士)信息科技辑》 * |
赵辉: "麒麟天机存储系统的负载均衡与副本一致性技术研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114285865B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7636868B2 (en) | Data replication in a distributed system | |
US10831612B2 (en) | Primary node-standby node data transmission method, control node, and database system | |
CN102265277B (zh) | 数据存储系统的操作方法和装置 | |
CN110287151B (zh) | 分布式存储系统、数据写入方法、装置和存储介质 | |
CN111444147B (zh) | 一种数据页创建方法、装置、终端设备及存储介质 | |
US20210072903A1 (en) | Future write in distributed system maintaining data storage integrity | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
CN109522043B (zh) | 一种配置数据的管理方法、装置及存储介质 | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
JP2001184248A (ja) | 分散処理システムにおけるデータアクセス管理装置 | |
CN115292408A (zh) | MySQL数据库的主从同步方法、装置、设备及介质 | |
CN110417882B (zh) | 主节点的确定方法、装置和存储介质 | |
US9043283B2 (en) | Opportunistic database duplex operations | |
CN113746641B (zh) | 一种基于分布式存储的odx协议处理方法 | |
US8359601B2 (en) | Data processing method, cluster system, and data processing program | |
CN114285865B (zh) | 共享云硬盘的访问权限控制系统 | |
CN112805964A (zh) | 用于在云降级模式下确保连续装置操作可靠性的方法及设备 | |
US20090106781A1 (en) | Remote call handling methods and systems | |
CN101523352A (zh) | 用于并发控制的持久锁/资源 | |
US10866756B2 (en) | Control device and computer readable recording medium storing control program | |
JP5464449B2 (ja) | 障害によるリブートを考慮した処理部間の不整合検出方法並びに共有装置及びクラスタシステム | |
CN112948377A (zh) | 数据的存储方法、装置、电子设备及计算机可读介质 | |
CN111324592B (zh) | 应用数据迁移方法、装置 | |
US9489269B2 (en) | Global backup lock manager |
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 |