CN110580232B - 一种锁管理的方法及装置 - Google Patents
一种锁管理的方法及装置 Download PDFInfo
- Publication number
- CN110580232B CN110580232B CN201810585951.8A CN201810585951A CN110580232B CN 110580232 B CN110580232 B CN 110580232B CN 201810585951 A CN201810585951 A CN 201810585951A CN 110580232 B CN110580232 B CN 110580232B
- Authority
- CN
- China
- Prior art keywords
- lock
- heavyweight
- identifier
- controller
- service
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供一种锁管理的方法及装置,该方法包括:当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障;若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致;如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;如果不一致,返回获锁失败消息。在本申请技术方案中,若持有重量级锁的控制器发生故障,则接收到针对该重量级锁的获锁请求时,需判断该获锁请求中的业务标识与该重量级锁的锁标识对应的业务标识是否一致,仅在一致的情况下重新分配该重量级锁,从而保证重量级锁锁住的临界区的未完成业务得以修复。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种锁管理的方法及装置。
背景技术
在多控制器的存储系统中,业务处理过程不可避免需要访问临界区资源。若控制器访问任一临界区时,通常会获取该临界区的业务锁,从而达到保护临界区资源的目的。其中,临界区指的是访问共用资源(例如:共用设备或共用存储器)的程序片段,而这些程序片段无法被多个线程同时访问。
业务锁由锁模块进行管理,锁模块对外提供创建锁、删除锁、获取锁和释放锁等接口。
在现有技术中,控制器对任一临界区加锁后,若在执行业务过程中出现故障,其它控制器接管上述临界区后,需进行业务修复。然而,若在修复业务之前,其它控制器接收到针对上述临界区进行操作的新业务,则其它控制器会直接将上述临界区解锁后,为新业务获取该临界区的业务锁,进而执行新业务。在这种情况下,由于该临界区已发生修改,无法修复此前未完成的业务。
发明内容
有鉴于此,本申请提供一种锁管理的方法及装置,用于为业务提供一种重量级锁,使得执行该业务的控制器发生故障后,避免接管该业务的控制器对该业务所在的临界区执行新业务,导致该业务无法修复。
具体地,本申请是通过如下技术方案实现的:
一种锁管理的方法,应用于多控存储系统的控制器,所述多控存储系统包括至少两个控制器,包括:
当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障;
若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致;
如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;
如果不一致,返回获锁失败消息。
一种锁管理的方法,应用于多控存储系统的控制器,所述多控存储系统包至少两个控制器,包括:
判断单元,用于当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障;
检查单元,用于若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致;
发送单元,用于如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;如果不一致,返回获锁失败消息。
在本申请技术方案中,当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障;若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致;如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;如果不一致,返回获锁失败消息;
由于重量级锁的锁标识与业务标识相关联,当执行任一业务的控制器发生故障后,则接收到针对该重量级锁的获锁请求时,需判断该获锁请求中的业务标识与该重量级锁的锁标识对应的业务标识是否一致,在一致的情况下重新分配该重量级锁,从而保证重量级锁锁住的临界区的未完成业务得以修复。
附图说明
图1是现有技术的一种加锁流程示意图;
图2是本申请示出的一种处理获锁请求的流程图;
图3是本申请示出的一种锁管理的方法的流程图;
图4是本申请示出的另一种处理获锁请求的流程图;
图5是本申请示出的一种加锁流程示意图;
图6是本申请示出的一种锁管理的装置的实施例框图;
图7是本申请示出的一种锁管理的装置的硬件结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。
为更清楚地说明现有技术的问题,参见图1,为现有技术的一种加锁流程示意图。
图1中的双控存储系统包括存储SP(Storage Processor,存储控制器)1和存储SP2。存储SP1与存储SP2之间可以通过PCI-e(Peripheral Component InterconnectExpress,外设部件互连标准)线路连接,从而实现数据同步。
首先,客户端C1向存储SP1下发业务a。存储SP1接收到该业务a,向本地的锁模块获取与该业务a相关的临界区的业务锁,以完成对该临界区的加锁处理。
本地的锁模块会向双控存储系统的存储SP2同步锁信息,以由存储SP2上的锁模块获知上述临界区的业务锁已被占用。
进一步地,存储SP1执行业务a,并可以向存储SP2同步业务a信息。
当存储SP1出现故障而宕机后,而业务a尚未执行完毕。在这种情况下,存储SP2接管业务a所在的临界区。一般而言,存储SP2需对业务a进行修复,然而,如图1所示,存储SP2在修复业务a之前接收到客户端C2下发的业务b。而业务b涉及的临界区与业务a涉及的临界区相同。
在这种情况下,存储SP2会将上述临界区解锁,并为业务b获取该临界区的业务锁,然后执行业务b。此时,上述临界区发生修改,无法重新修复业务a。
需要指出的是,从软件层面而言,是执行各业务的软件模块获取临界区的业务锁。执行不同业务的软件模块不同,各软件模块向锁模块获取任一临界区的业务锁后,才能对该临界区进行操作。
任一存储SP出现故障后,由接管临界区的存储SP上的修复模块进行业务修复。修复模块首先需向锁模块获取临界区的业务锁。未完成的业务未能修复的原因在于,其它软件模块先于修复模块获取到该临界区的业务锁。
为解决上述问题,本申请技术方案提供两种类型的业务锁:轻量级锁(lightweight lock)和重量级锁(heavyweight lock)。
其中,轻量级锁可在业务未完成而执行业务的存储SP发生故障时被解锁,可用于重要性较低的业务,或者耗时短、操作少的业务。
重量级锁在业务未完成而执行业务的存储SP发生故障时只可被修复模块解锁,可用于重要性较高的业务,或者耗时长、操作多的业务。
任一软件模块获取业务锁成功后,锁模块可以记录该业务锁的锁标识与发送获锁请求的控制器的设备标识的关联关系。
需要指出的是,由于获锁请求实际上由软件模块发送,所以,发送获锁请求的控制器实际上就是发送获锁请求的软件模块所在的控制器。
对于重量级锁而言,锁模块还需记录重量级锁的锁标识与应用该重量级锁的业务的业务标识的关联关系。
其中,锁标识用以唯一指示存储系统中的业务锁,设备标识用以唯一指示存储系统中的控制器,业务标识用以唯一指示存储系统的业务。
下面说明针对两种业务锁的锁管理的方法及装置。
本申请技术方案可应用于多控存储系统的控制器,在软件层面上,可以是控制器的锁模块。后文以锁模块为执行主体描述本方案。
在存储控制器启动时,锁模块接收到各软件模块发送的创建锁请求,并依据上述创建锁请求创建若干轻量级锁和若干重量级锁。后续各软件模块可向锁模块发送获锁请求,以获取业务锁并对临界区进行锁定。
锁模块无需感知被锁定的临界区,只需管理各轻量级锁和重量级锁的使用情况。对于任一临界区而言,锁定该临界区的业务锁的唯一的,因此,锁模块通过分配该业务锁来保证同一时刻只有一个软件模块对该临界区进行操作。
存储控制器接收到客户端下发的业务后,可将该业务交由对应的软件模块处理。比如:存储控制器接收到创建LUN(Logical Unit Number,逻辑单元号)的业务后,可将该业务交由LUN模块进行处理。
软件模块需锁定该业务涉及的临界区,以保证在执行业务的过程中,该临界区不会被其它软件模块修改。因此,该软件模块可以向锁模块发送获锁请求。其中,该获锁请求携带锁标识。
需要指出的是,若该软件模块请求的是重量级锁,则发送的获锁请求还要携带业务标识。
锁模块接收到获锁请求,基于该获锁请求中的锁标识判断该获锁请求针对的锁类型。换而言之,判断上述软件模块请求的是轻量级锁还是重量级锁。
一方面,如果请求的是重量级锁,锁模块可以进一步检查上述锁标识是否与任一控制器的设备标识建立关联关系。
一种情况下,如果是,则上述锁标识指示的重量级锁已被上述设备标识指示的控制器持有。在这种情况下,锁模块接收到的是针对已被持有的重量级锁的获锁请求。
另一种情况下,如果否,则上述锁标识指示的重量级锁未被任一控制器持有。在这种情况下,锁模块接收到的是针对未被持有的重量级锁的获锁请求。
另一方面,如果请求的是轻量级锁,锁模块可以进一步检查上述锁标识是否与任一控制器的设备标识建立关联关系。
一种情况下,如果是,则上述锁标识指示的轻量级锁已被上述设备标识指示的控制器持有。在这种情况下,锁模块接收到的是针对已被持有的轻量级锁的获锁请求。
另一种情况下,如果否,则上述锁标识指示的轻量级锁未被任一控制器持有。在这种情况下,锁模块接收到的是针对未被持有的轻量级锁的获锁请求。
下面对锁模块处理上述四种获锁请求的流程分别进行说明。
参见图2,为本申请示出的一种处理获锁请求的流程图,该流程图指示了处理重量级锁的获锁请求的流程。
如图2所示,锁模块接收到执行业务a的软件模块发送的获锁请求,并确定请求的是重量级锁。
首先,锁模块可以判断该软件模块请求的重量级锁是否空闲,即该重量级锁是否已被任一控制器持有。
一方面,如果否,则锁模块接收到的是针对已被持有的重量级锁的获锁请求。
参见图3,为本申请示出的一种锁管理的方法的流程图,如图3所示,所述方法包括以下步骤:
步骤301:当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障。
作为一种实施例,多控存储系统的各个控制器之间可以互相发送心跳报文,各控制器通过接收到心跳报文来确定其它控制器处于正常运行的状态。
若无法接收到其它任一控制器发送的心跳报文,可以确定该控制器出现故障。因此,锁模块可以检查持有上述重量级锁的控制器是否仍在发送心跳报文,来判断持有上述重量级锁的控制器是否出现故障。
步骤302:若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致。
当持有上述重量级锁的控制器发生故障时,通过检查上述获锁请求携带的业务标识与上述重量级锁的锁标识对应的业务标识是否一致,以确定上述获锁请求是否由修复模块发送,从而执行后续处理。具体详见下文相关描述。
此外,若否,即持有上述重量级锁的控制器未发生故障。在这种情况下,该控制器仍需对上述重量级锁锁住的临界区进行操作,因此,锁模块可以向发送上述获锁请求的软件模块返回获锁失败消息。
参见图2,在持有重量级锁的控制器未故障的情况下,执行业务a软件模块的无法获取到上述重量级锁,锁模块向该软件模块返回获锁失败消息。
步骤303:如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息。
在上述获锁请求携带的业务标识与上述重量级锁的锁标识对应的业务标识一致时,说明上述获锁请求由修复模块发送,修复模块可对上述重量级锁锁住的临界区的未完成业务进行修复。
在这种情况下,锁模块可以建立上述重量级锁的锁标识与发送获锁请求的控制器的设备标识的关联关系,表明在原先持有该重量级锁的控制器发生故障后,由发送获锁请求的软件模块所在的控制器接管该重量级锁锁住的临界区。进一步地,锁模块向发送获锁请求的软件模块返回获锁成功消息。
当然,锁模块在建立上述重量级锁的锁标识和发送获锁请求的控制器的设备标识的关联关系时,会删除上述重量级锁的锁标识与原先持有该重量级锁的控制器的设备标识的关联关系。
接收到该获锁成功消息的软件模块可以对上述重量级锁锁住的临界区进行操作。
参见图2,锁模块判断重量级锁关联的业务标识与业务a的业务标识一致时,说明原先持有该重量级锁的控制器也在执行业务a,且业务a未执行完成。锁模块可以建立发送上述获锁请求的控制器的设备标识与上述重量级锁的锁标识的关联关系,并向执行业务a的软件模块返回获锁成功消息。
步骤304:如果不一致,返回获锁失败消息。
在上述获锁请求携带的业务标识与上述重量级锁的锁标识对应的业务标识不一致时,说明上述获锁请求并非由修复模块发送。在这种情况下,锁模块可以直接向发送获锁请求的软件模块返回获锁失败消息,以等待后续修复模块对上述重量级锁锁住的临界区的业务进行修复。
参见图2,锁模块判断重量级锁关联的业务标识与业务a的业务标识不一致时,说明原先持有该重量级锁的控制器执行的不是业务a。在这种情况下,由于该重量级锁锁住的临界区上还有其它业务未修复,锁模块向执行业务a的软件模块返回获锁失败消息。
另一方面,如果是,则锁模块接收到的是针对未被持有的重量级锁的获锁请求。
在这种情况下,锁模块可以直接将该重量级锁交由发送获锁请求的软件模块。锁模块可以建立该重量级锁的锁标识和上述获锁请求携带的业务标识的关联关系。建立关联关系后,该业务标识即为锁标识对应的业务标识。
进一步地,锁模块可以建立上述重量级锁与发送上述获锁请求的控制器的设备标识的关联关系,并向发送上述获锁请求的软件模块的获锁成功消息。
参见图2,在重量级锁空闲的情况下,锁模块可以建立重量级锁的锁标识与业务a的业务标识的关联关系,然后建立重量级锁的锁标识与发送上述获锁请求的控制器的设备标识的关联关系,然后向发送上述获锁请求的控制器返回获锁成功消息。
参见图4,为本申请示出的一种处理获锁请求的流程图,该流程图指示了处理轻量级锁的获锁请求的流程。
锁模块接收到执行业务a的软件模块发送的获锁请求,并确定请求的是轻量级锁。
首先,锁模块可以判断该软件模块请求的轻量级锁是否空闲,即该轻量级锁是否已被任一控制器持有。
一方面,如果否,则锁模块接收到的是针对已被持有的轻量级锁的获锁请求。在这种情况下,锁模块可以判断持有该轻量级锁的控制器是否出现故障。
作为一种实施例,锁模块可以基于心跳报文确定持有该轻量级锁的控制器是否出现故障。具体可参照前文相关描述,在此不再赘述。
一种情况下,若是,则锁模块可以建立上述轻量级锁的锁标识与发送上述获锁请求的控制器的设备标识的关联关系,然后返回获锁成功消息。
当然,锁模块在建立上述轻量级锁的锁标识和发送获锁请求的控制器的设备标识的关联关系时,会删除上述轻量级锁的锁标识与原先持有该轻量级锁的控制器的设备标识的关联关系。
参见图4,当持有该轻量级锁的控制器存在故障时,锁模块可以记录该轻量级锁的锁标识与发送上述获锁请求的控制器的设备标识的关联关系,表明在原先持有该轻量级锁的控制器发生故障后,由执行业务a的软件模块所在的控制器接管该轻量级锁锁住的临界区。进一步地,锁模块向执行业务a的软件模块返回获锁成功消息。
另一种情况下,若否,即持有上述轻量级锁的控制器未发生故障。在这种情况下,该控制器仍需对上述轻量级锁锁住的临界区进行操作,因此,锁模块可以向发送上述获锁请求的软件模块返回获锁失败消息。
参见图4,当持有该轻量级锁的控制器不存在故障时,锁模块可以向执行业务a的软件模块返回获锁失败消息。
另一方面,如果是,则锁模块接收到的是针对未被持有的轻量级锁的获锁请求。此时,锁模块可以直接建立上述轻量级锁的锁标识与发送上述获锁请求的控制器的设备标识的关联关系,然后向发送上述获锁请求的软件模块返回获锁成功消息。
参见图4,当执行业务a的软件模块请求的轻量级锁未被持有,则锁模块可以记录发送执行业务a的软件模块所在的控制器的设备标识与该轻量级锁的锁标识的关联关系,然后向该软件模块返回获锁成功消息。
在本申请实施例中,锁模块在返回获锁成功消息后,可以向其它控制器发送锁信息更新消息,以由其它控制器更新自身的锁信息。其中,上述锁信息更新消息包括新增的锁标识与设备标识的关联关系、新增的锁标识与业务标识的关联关系。
其它控制器的锁模块接收到上述锁信息更新消息后,将新增的锁标识与设备标识的关联关系、新增的锁标识与业务标识的关联关系添加到自身的锁信息当中。
在实际应用中,锁模块建立的锁标识与设备标识的关联关系中,设备标识为锁模块所在的控制器的设备标识。通过各控制器上的锁模块的锁信息同步过程,各控制器上的锁模块可以包含多控存储系统的最新的所有锁信息。
至此,锁模块处理四种获锁请求的流程介绍完毕。
由于本身技术方案提供了两种类型的业务锁,其中,重量级锁在业务未完成而执行业务的控制器发生故障时只可被修复模块解锁。因此,当任一控制器发生故障时,该控制器未完成的重要业务可由其它控制器进行修复。
为说明本申请的技术效果,参见图5,为本申请示出的一种加锁流程示意图。
图5中的双控存储系统包括存储SP1和存储SP2。存储SP1与存储SP2之间可以通过PCI-e线路连接,从而实现数据同步。
首先,客户端C1向存储SP1下发业务a。存储SP1接收到该业务a,向本地的锁模块获取与该业务a涉及的临界区的重量级锁,以完成对该临界区的加锁处理。
存储SP1上的锁模块会向双控存储系统的存储SP2同步锁信息,以由存储SP2上的锁模块获知上述临界区的重量级锁已被占用。
进一步地,存储SP1执行业务a,并可以向存储SP2同步业务a信息。
当存储SP1出现故障宕机后,而业务a尚未执行完毕。在这种情况下,存储SP2接管业务a所在的临界区。
如果在存储SP2的修复模块修复业务a之前,存储SP2接收到客户端C2下发的业务b。业务b涉及的临界区与业务a涉及的临界区相同。
在这种情况下,存储SP2的锁模块判断业务b的业务标识与业务a的业务标识不同,而业务a尚未修复,因此,锁模块向执行业务b的软件模块返回获锁失败消息。
后续锁模块接收到修复模块发送的获锁请求,并确定该获锁请求中的业务标识就是业务a的业务标识时,可以将上述临界区交由修复模块,以由修复模块修复业务a。并在修复完成后,释放上述重量级锁。
对于轻量级锁而言,当持有该轻量级锁的控制器发生故障后,接管该轻量级锁的锁模块可在接收到任一软件模块发送的针对该轻量级锁的获锁请求时,重新分配该轻量级锁。通过为不重要的业务涉及的临界区添加轻量级锁,可以更快地恢复对临界区的处理。
与处理获锁请求相对应,本申请技术方案还提供了锁模块处理解锁请求的流程。
软件模块获得业务锁并锁定临界区后,若处理该临界区的业务完成,则可以向锁模块发送解锁请求,以由锁模块回收上述业务锁。
需要指出的是,若该软件模块释放的是重量级锁,则发送的解锁请求携带业务标识。
锁模块接收到解锁请求,基于该解锁请求中的锁标识判断该解锁请求针对的锁类型。换而言之,判断上述软件模块释放的是轻量级锁还是重量级锁。
一方面,如果释放的是重量级锁,锁模块可以进一步检查上述锁标识是否与任一控制器的设备标识建立关联关系。
一种情况下,如果否,则上述锁标识指示的重量级锁未被任一控制器持有。在这种情况下,锁模块接收的解锁请求无法执行,可以直接向发送解锁请求的软件模块返回解锁失败消息。
另一种情况下,如果是,则上述锁标识指示的重量级锁已被上述设备标识指示的控制器持有。在这种情况下,锁模块需检查上述解锁请求携带的业务标识与上述重量级锁的锁标识对应的业务标识是否一致。
如果一致,则说明该业务标识指示的业务已经执行完成,此时,可以清除与上述重量级锁的锁标志关联的业务标识和设备标识,从而回收上述重量级锁,然后向上述软件模块返回解锁成功消息。
如果不一致,则说明上述解锁请求无法执行,此时,可以向上述软件模块返回解锁失败消息。
另一方面,如果释放的是轻量级锁,锁模块可以进一步检查上述锁标识是否与任一控制器的设备标识建立关联关系。
一种情况下,如果否,则上述锁标识指示的轻量级锁未被任一控制器持有。在这种情况下,锁模块接收的解锁请求无法执行,可以直接向发送解锁请求的软件模块返回解锁失败消息。
另一种情况下,如果是,则上述锁标识指示的轻量级锁已被上述设备标识指示的控制器持有。在这种情况下,锁模块可以清除与上述轻量级锁的锁标识关联的设备标识,从而回收上述轻量级锁,然后向上述软件模块返回解锁成功消息。
在本申请实施例中,锁模块在返回解锁成功消息后,可以向其它控制器发送锁信息更新消息,以由其它控制器更新自身的锁信息。其中,上述锁信息更新消息包括被清除的锁标识与设备标识的关联关系、被清除的锁标识与业务标识的关联关系。
其它控制器的锁模块接收到上述锁信息更新消息后,将被清除的锁标识与设备标识的关联关系、被清除的锁标识与业务标识的关联关系从自身的锁信息当中清除。
通过该措施,各控制器上的锁模块可以包括多控存储系统最新的所有锁信息。
综上所述,在本申请技术方案中,提供了两种类型的业务锁:轻量级锁和重量级锁。执行业务的各软件模块可以选择不同类型的业务锁。持有轻量级锁的控制器发生故障后,其它控制器可以快速地获取该轻量级锁锁住的临界区,从而快速得恢复业务。持有重量级锁的控制器发生故障后,锁模块通过判断针对该重量级锁对应的业务标识与获锁请求中的业务标识是否一致,以确定是否重新分配该重量级锁,从而保证重量级锁锁住的临界区在未被更改之前,修复未完成的业务。
与前述锁管理的方法的实施例相对应,本申请还提供了锁管理的装置的实施例。
参见图6,为本申请示出的一种锁管理的装置的实施例框图:
如图6所示,该锁管理的装置60,包括:
判断单元610,用于当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障。
检查单元620,用于若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致。
发送单元630,用于如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;如果不一致,返回获锁失败消息。
在本例中,所述发送单元630,进一步用于:
当接收到针对未被持有的重量级锁的获锁请求时,建立所述重量级锁的锁标识和所述获锁请求携带的业务标识的关联关系;
建立所述重量级锁的锁标识与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息。
在本例中,所述装置还包括:
所述判断单元610,进一步用于当接收到针对已被持有的轻量级锁的获锁请求时,判断持有所述轻量级锁的控制器是否出现故障。
所述发送单元630,进一步用于若是,建立所述轻量级锁的锁标识与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;若否,返回获锁失败消息。
在本例中,所述发送单元630,进一步用于:
当接收到针对未被持有的轻量级锁的获锁请求时,建立所述轻量级锁的锁标识与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息。
在本例中,所述装置还包括:
接收单元640(图中未示出),用于接收获锁请求,所述获锁请求携带锁标识。
所述判断单元610,进一步用于基于所述锁标识判断所述获锁请求针对的锁类型;其中,所述锁类型包括重量级锁和轻量级锁;
所述检查单元620,进一步用于检查所述锁标识是否与任一控制器的设备标识建立关联关系;
若是,则确定所述锁标识指示的锁已被所述设备标识指示的控制器持有;
若否,则确定所述锁标识指示的锁未被任一控制器持有。
在本例中,所述发送单元630,进一步用于:
在返回获锁成功消息后,向其它控制器发送锁信息更新消息,以由其它控制器更新自身的锁信息;其中,所述锁信息更新消息包括新增的锁标识与设备标识的关联关系、新增的锁标识与业务标识的关联关系。
在本例中,所述装置还包括:
所述判断单元610,进一步用于当接收到针对重量级锁的解锁请求,判断所述重量级锁的锁标识是否与任一控制器的设备标识建立关联关系。
所述检查单元620,进一步用于若是,检查所述解锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致。
所述发送单元630,进一步用于如果一致,清除与所述重量级锁的锁标识关联的业务标识和设备标识,并返回解锁成功消息;如果不一致,返回解锁失败消息。
在本例中,所述装置还包括:
所述判断单元610,进一步用于当接收到针对轻量级锁的解锁请求,判断所述轻量级锁的锁标识是否与任一控制器的设备标识建立关联关系。
所述发送单元630,进一步若是,清除与所述轻量级锁的锁标识关联的设备标识,并返回解锁成功消息。
在本例中,所述发送单元630,进一步用于:
在返回解锁成功消息后,向其它控制器发送锁信息更新消息,以由其它控制器更新自身的锁信息;其中,所述锁信息更新消息包括被清除的锁标识与设备标识的关联关系、被清除的锁标识与业务标识的关联关系。
本申请锁管理的装置的实施例可以应用在控制器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在控制器的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本申请锁管理的装置所在控制器的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的控制器通常根据该锁管理的装置的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (8)
1.一种锁管理的方法,应用于多控存储系统的控制器,所述多控存储系统包括至少两个控制器,其特征在于,包括:
接收获锁请求,所述获锁请求携带锁标识;
基于所述锁标识判断所述获锁请求针对的锁类型;其中,所述锁类型包括重量级锁和轻量级锁;
检查所述锁标识是否与任一控制器的设备标识建立关联关系;
若是,则确定所述锁标识指示的锁已被所述设备标识指示的控制器持有;
若否,则确定所述锁标识指示的锁未被任一控制器持有;
当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障;
若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致;
如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;
如果不一致,返回获锁失败消息;
当接收到针对未被持有的重量级锁的获锁请求时,建立所述重量级锁的锁标识和所述获锁请求携带的业务标识的关联关系;
建立所述重量级锁的锁标识与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到针对已被持有的轻量级锁的获锁请求时,判断持有所述轻量级锁的控制器是否出现故障;
若是,建立所述轻量级锁的锁标识与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;
若否,返回获锁失败消息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到针对未被持有的轻量级锁的获锁请求时,建立所述轻量级锁的锁标识与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
在返回获锁成功消息后,向其它控制器发送锁信息更新消息,以由其它控制器更新自身的锁信息;其中,所述锁信息更新消息包括新增的锁标识与设备标识的关联关系、新增的锁标识与业务标识的关联关系。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到针对重量级锁的解锁请求,判断所述重量级锁的锁标识是否与任一控制器的设备标识建立关联关系;
若是,检查所述解锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致;
如果一致,清除与所述重量级锁的锁标识关联的业务标识和设备标识,并返回解锁成功消息;
如果不一致,返回解锁失败消息。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到针对轻量级锁的解锁请求,判断所述轻量级锁的锁标识是否与任一控制器的设备标识建立关联关系;
若是,清除与所述轻量级锁的锁标识关联的设备标识,并返回解锁成功消息。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
在返回解锁成功消息后,向其它控制器发送锁信息更新消息,以由其它控制器更新自身的锁信息;其中,所述锁信息更新消息包括被清除的锁标识与设备标识的关联关系、被清除的锁标识与业务标识的关联关系。
8.一种锁管理的装置,应用于多控存储系统的控制器,所述多控存储系统包括至少两个控制器,其特征在于,包括:
判断单元,用于接收获锁请求,所述获锁请求携带锁标识;
基于所述锁标识判断所述获锁请求针对的锁类型;其中,所述锁类型包括重量级锁和轻量级锁;
检查所述锁标识是否与任一控制器的设备标识建立关联关系;
若是,则确定所述锁标识指示的锁已被所述设备标识指示的控制器持有;
若否,则确定所述锁标识指示的锁未被任一控制器持有;
当接收到针对已被持有的重量级锁的获锁请求时,判断持有所述重量级锁的控制器是否出现故障;
检查单元,用于若是,检查所述获锁请求携带的业务标识与所述重量级锁的锁标识对应的业务标识是否一致;
发送单元,用于如果一致,建立所述重量级锁与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息;如果不一致,返回获锁失败消息;
当接收到针对未被持有的重量级锁的获锁请求时,建立所述重量级锁的锁标识和所述获锁请求携带的业务标识的关联关系;
建立所述重量级锁的锁标识与发送所述获锁请求的控制器的设备标识的关联关系,并返回获锁成功消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810585951.8A CN110580232B (zh) | 2018-06-08 | 2018-06-08 | 一种锁管理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810585951.8A CN110580232B (zh) | 2018-06-08 | 2018-06-08 | 一种锁管理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110580232A CN110580232A (zh) | 2019-12-17 |
CN110580232B true CN110580232B (zh) | 2021-10-29 |
Family
ID=68809259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810585951.8A Active CN110580232B (zh) | 2018-06-08 | 2018-06-08 | 一种锁管理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110580232B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987550A (en) * | 1997-06-30 | 1999-11-16 | Emc Corporation | Lock mechanism for shared resources in a data processing system |
US7761872B1 (en) * | 2005-05-26 | 2010-07-20 | Oracle America, Inc. | Method for virtualizing mutually exclusive locks of immutable shared objects |
CN104461705A (zh) * | 2014-11-17 | 2015-03-25 | 华为技术有限公司 | 一种业务访问的方法及存储控制器、集群存储系统 |
CN105426234A (zh) * | 2015-10-30 | 2016-03-23 | 小米科技有限责任公司 | 数据库死锁检测方法及装置 |
CN108023939A (zh) * | 2014-11-12 | 2018-05-11 | 华为技术有限公司 | 分布式系统中锁服务器故障的处理方法及其系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496574B2 (en) * | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
CN100401801C (zh) * | 2005-06-07 | 2008-07-09 | 华为技术有限公司 | 一种实现闭锁业务的方法 |
US8719478B2 (en) * | 2011-08-11 | 2014-05-06 | Hewlett-Packard Development Company, L.P. | Deadlock prevention |
JP2014038564A (ja) * | 2012-08-20 | 2014-02-27 | International Business Maschines Corporation | データベースに対する処理を行うシステム及び方法 |
CN104702655B (zh) * | 2014-03-21 | 2018-04-27 | 杭州海康威视系统技术有限公司 | 云存储资源分配方法及其系统 |
CN106095594B (zh) * | 2016-06-01 | 2019-09-27 | 新浪网技术(中国)有限公司 | 一种资源处理的方法、装置及系统 |
CN106445644B (zh) * | 2016-08-30 | 2019-11-05 | 中国民生银行股份有限公司 | 基于改进的一阶段提交的分布式事务的处理方法和装置 |
-
2018
- 2018-06-08 CN CN201810585951.8A patent/CN110580232B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987550A (en) * | 1997-06-30 | 1999-11-16 | Emc Corporation | Lock mechanism for shared resources in a data processing system |
US7761872B1 (en) * | 2005-05-26 | 2010-07-20 | Oracle America, Inc. | Method for virtualizing mutually exclusive locks of immutable shared objects |
CN108023939A (zh) * | 2014-11-12 | 2018-05-11 | 华为技术有限公司 | 分布式系统中锁服务器故障的处理方法及其系统 |
CN104461705A (zh) * | 2014-11-17 | 2015-03-25 | 华为技术有限公司 | 一种业务访问的方法及存储控制器、集群存储系统 |
CN105426234A (zh) * | 2015-10-30 | 2016-03-23 | 小米科技有限责任公司 | 数据库死锁检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110580232A (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077382B (zh) | 在多租户应用服务器环境中进行事务恢复的系统和方法 | |
US6671704B1 (en) | Method and apparatus for handling failures of resource managers in a clustered environment | |
CN110647580A (zh) | 分布式容器集群镜像管理主节点、从节点、系统及方法 | |
US5964838A (en) | Method for sequential and consistent startup and/or reload of multiple processor nodes in a multiple node cluster | |
US9146944B2 (en) | Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls | |
US20170322826A1 (en) | Setting support program, setting support method, and setting support device | |
US20110145204A1 (en) | Transaction Recovery in a Transaction Processing Computer System Employing Multiple Transaction Managers | |
US20120054546A1 (en) | Methods for detecting split brain in a distributed system | |
JPS62105247A (ja) | デ−タ・ベ−ス・システムの管理方法 | |
CN111897558A (zh) | 容器集群管理系统Kubernetes升级方法和装置 | |
CN111753013A (zh) | 分布式事务处理方法及装置 | |
CN108491252A (zh) | 分布式事务处理方法及分布式系统 | |
CN112052264B (zh) | 业务数据查询方法、装置、电子设备及可读存储介质 | |
US9201684B2 (en) | Aiding resolution of a transaction | |
US8132174B2 (en) | Concurrency management in cluster computing of business applications | |
US11061889B2 (en) | Systems and methods of managing manifest refresh in a database | |
US6842763B2 (en) | Method and apparatus for improving message availability in a subsystem which supports shared message queues | |
US8479044B2 (en) | Method for determining a state associated with a transaction | |
US7284018B1 (en) | Logless transaction coordination | |
CN110275793B (zh) | 一种用于MongoDB数据分片集群的检测方法及设备 | |
CN110580232B (zh) | 一种锁管理的方法及装置 | |
US6799172B2 (en) | Method and system for removal of resource manager affinity during restart in a transaction processing system | |
US6192443B1 (en) | Apparatus for fencing a member of a group of processes in a distributed processing environment | |
CN113746676B (zh) | 基于容器集群的网卡管理方法、装置、设备、介质及产品 | |
CN112381650B (zh) | 跨链互操作的交易处理方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |