CN112148695A - 一种资源锁管理方法及装置 - Google Patents

一种资源锁管理方法及装置 Download PDF

Info

Publication number
CN112148695A
CN112148695A CN201910563273.XA CN201910563273A CN112148695A CN 112148695 A CN112148695 A CN 112148695A CN 201910563273 A CN201910563273 A CN 201910563273A CN 112148695 A CN112148695 A CN 112148695A
Authority
CN
China
Prior art keywords
lock
node
resource
exclusive
nodes
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
Application number
CN201910563273.XA
Other languages
English (en)
Inventor
朴君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910563273.XA priority Critical patent/CN112148695A/zh
Priority to PCT/CN2020/091650 priority patent/WO2020259146A1/zh
Publication of CN112148695A publication Critical patent/CN112148695A/zh
Priority to US17/557,926 priority patent/US20220114145A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • G06F9/5016Allocation 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 the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种资源锁管理方法及装置。该方法包括:第一节点获取目标资源的锁资源信息,所述锁资源信息表征所述目标资源是否已添加资源锁,以及请求添加资源锁的等待节点队列的信息;根据所述锁资源信息确定满足第一资源锁添加条件,则对所述目标资源添加资源锁;否则排队等待添加资源锁,更新所述锁资源信息;并监测所述锁资源信息,在满足第二资源锁添加条件时,添加资源锁,更新所述锁资源信息。通过上述方法,所述第一节点在对目标资源添加资源锁时,根据对应的所述锁资源信息可以确定所述目标资源当前是否添加资源锁,以及请求添加资源锁的节点队列信息,从而有效改善了进行分布式系统管理时存在加锁节点加锁饿死的问题。

Description

一种资源锁管理方法及装置
技术领域
本申请涉及通信技术领域,尤其涉及一种资源锁管理方法及装置。
背景技术
在分布式文件系统中包含多个节点,文件会分布式存储在部分节点中,其他节点可以通过网络访问该节点实现对该文件进行读写操作。所述分布式文件系统又可以称为共享存储型文件系统。
在分布式文件系统中,节点可以通过资源锁机制实现对存储在其他节点的文件进行管理,以提高文件管理的效率和安全性。资源锁包括独占锁和共享锁两类。其中,节点通过对文件添加独占锁可以对文件进行查看、修改和删除,且在该文件被添加独占锁之后无法再加任何类型的资源锁;节点通过对文件添加共享锁可以对文件进行查看但无法对文件进行修改和删除。
目前,分布式文件系统可以采用去中心化架构的分布式锁管理器(distributedlock manager,DLM)技术或采用中心化架构的半分布式锁管理器(semi-distributed lockmanager,SDLM)技术实现对上述资源锁进行加锁和解锁管理。
DLM技术原理为:基于传输控制协议(transmission control protocol,TCP)/网络协议(internet protocol,IP)进行通信,其中,所述DLM在群集中的每台计算机上运行,具有与群集范围的锁数据库相同的副本,从而实现同步访问共享资源。
SDLM技术原理为:由存储服务器集中处理锁请求,从而实现同步访问共享资源。
而通过上述两种方法进行分布式文件系统管理时,经常存在加锁饿死现象,即需要进行加锁的节点一直无法进行加锁操作,无限等待。
综上,现有技术进行分布式系统管理时存在加锁节点加锁饿死的问题。
发明内容
本申请提供一种资源锁管理方法及装置,用以避免现有技术进行分布式系统管理时存在加锁节点加锁饿死的问题。
第一方面,本申请实施例提供一种资源锁管理方法,包括:
第一节点确定向目标资源添加资源锁,获取目标资源对应的锁资源信息,其中,所述锁资源信息用于表征所述目标资源是否已添加资源锁,以及请求添加资源锁的等待节点队列的信息,所述资源锁的类型为独占锁或共享锁;所述第一节点根据所述锁资源信息确定是否满足第一资源锁添加条件;若是,则所述第一节点对所述目标资源添加资源锁,并更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁;否则,所述第一节点排队等待添加资源锁,且更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中;并监测所述锁资源信息,直至确定所述锁资源信息满足第二资源锁添加条件时,对所述目标资源添加资源锁,更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除。
基于该方案,所述第一节点在对目标资源添加资源锁时,根据所述目标资源对应的锁资源信息进行加锁操作,其中,因为根据所述锁资源信息可以确定所述目标资源当前是否添加资源锁,以及请求添加资源锁的节点队列信息,从而有效改善了进行分布式系统管理时存在加锁节点加锁饿死的问题。
本申请中提到的“节点”可以指物理设备,如一台物理服务器,也可以指虚拟机、容器等虚拟化设备,或也可以认为是一个线程或进程等用于计算处理的操作系统内的元素。
在一种可能的实现方式中,所述第一节点获取所述目标资源对应的所述锁资源信息,包括:所述第一节点从本地获取所述目标资源对应的所述锁资源信息;或所述第一节点从第二节点获取所述目标资源对应的所述锁资源信息。
基于该方案,本申请所述第一节点可以从本地获取所述目标资源对应的所述锁资源信息,或者从第二节点获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方式中,所述第一节点从所述第二节点获取所述目标资源对应的所述锁资源信息,包括:所述第一节点确定存储有所述目标资源的所述第二节点;所述第一节点从所述第二节点中获取所述目标资源对应的所述锁资源信息。
基于该方案,本申请详细介绍了所述第一节点如何从第二节点获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方式中所述第一节点确定存储有所述目标资源的所述第二节点,包括:所述第一节点根据主从节点映射关系,确定所述第一节点的主节点为所述第二节点。
基于该方案,本申请提供第一节点与第二节点的映射规则,从而使所述第一节点根据所述映射规则确定对应的所述第二节点。
在一种可能的实现方式中,所述第一节点从所述第二节点获取所述目标资源对应的所述锁资源信息,包括:所述第一节点通过远程直接内存访问RDMA(remote directmemory access,远程直接内存访问)技术,从所述第二节点获取所述目标资源对应的所述锁资源信息。
基于该方案,本申请进行分布式系统资源锁管理时,通过采用RDMA技术可以大幅提升加解锁效率,降低延迟。
在一种可能的实现方式中,所述锁资源信息包含:独占锁指示信息、等待节点队列、共享节点数量;其中,所述独占锁指示信息用于指示所述目标资源是否添加独占锁,所述共享节点数量为已对所述目标资源添加共享锁的节点数量,所述等待节点队列包含请求对所述目标资源添加资源锁的节点标识,且所述等待节点队列中的节点标识按照请求添加资源锁的前后顺序排列。
基于该方案,本申请将所述锁资源信息划分为独占锁指示信息、等待节点队列、共享节点数量,从而使所述第一节点在对所述目标资源进行加资源锁操作时,可以根据所述锁资源信息确定所述目标资源当前是否添加独占锁或共享锁,添加共享锁节点的数量以及是否有等待对所述目标资源添加资源锁的节点。
在一种可能的实现方式中,当所述资源锁的类型为独占锁时,所述第一资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述等待节点队列为空;所述第二资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述第一节点的节点标识位于所述等待节点队列首位。
基于该方案,所述第一节点对目标资源进行加独占锁操作时,可根据所述目标资源对应的所述锁资源信息确定当前是否满足第一独占锁添加条件,满足则直接进行加锁操作,不满足则按照请求对目标资源添加资源锁的顺序排队等待进行加独占锁操作。其中,所述第一节点在排队等待过程中,若确定满足第二独占锁添加条件,则对所述目标资源添加独占锁操作。显然,该方法可以有效避免等待节点队列中的请求添加独占锁的第一节点被不断插队抢占,长时间无法加锁成功的情况,可以解决所述第一节点加锁饿死的问题。
在一种可能的实现方式中,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中,包括:所述第一节点将所述第一节点的节点标识添加到所述等待节点队列中,并将所述独占锁请求节点数量加1;所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:所述第一节点更新所述独占锁指示信息,将所述独占锁请求节点数量减1,将所述等待节点队列中所述第一节点的节点标识删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
基于该方案,本申请中所述锁资源信息还包括独占锁请求节点数量,从而使所述第一节点在对所述目标资源进行加锁操作时,还可以根据所述锁资源信息确定等待对所述目标资源添加独占锁的节点数量。
在一种可能的实现方式中,所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中,包括:所述第一节点将所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息添加到所述等待节点队列中;所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:所述第一节点更新所述独占锁指示信息,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
基于该方案,本申请中所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型。从而所述第一节点可以根据所述锁资源信息中的所述等待节点队列确定等待对所述目标资源添加共享锁的节点数量以及添加独占锁的节点数量。在一种可能的实现方式中,当所述资源锁为共享锁时,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;所述第一资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁,且所述独占锁请求节点数量为0;所述第二资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
基于该方案,所述第一节点对目标资源进行加共享锁操作时,可根据所述目标资源对应的所述锁资源信息确定当前是否满足第一共享锁添加条件,满足则直接进行加锁操作,不满足则按照请求对目标资源添加资源锁的顺序排队等待进行加共享锁操作。其中,所述第一节点在排队等待过程中,若确定满足第二共享锁添加条件,则所述目标资源添加共享锁操作。显然,该方法可以有效避免等待队列中的请求添加共享锁的第一节点被不断插队抢占,长时间无法加锁成功的情况,可以解决所述第一节点加锁饿死的问题。
在一种可能的实现方式中,所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁,包括:所述第一节点将所述共享节点数量加1;所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:所述第一节点将所述共享节点数量加1,以及将所述等待节点队列中所述第一节点的节点标识删除。
基于该方案,本申请所述第一节点可根据所述锁资源信息确定当前对所述目标资源添加共享锁的节点的数量。
在一种可能的实现方式中,所述锁资源信息还包含共享锁请求节点数量,其中,所述共享锁请求节点数量为所述等待节点队列中请求添加共享锁的节点数量;所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中,包括:所述第一节点将所述第一节点的节点标识添加到所述等待节点队列中,并将所述共享锁请求节点数量加1;所述第一节点更新所述所锁资源信息,以使更新后的所述所锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:所述第一节点将所述共享节点数量加1,将所述共享锁请求节点数量减1,以及将所述等待节点队列中所述第一节点的节点标识删除。
基于该方案,本申请中所述锁资源信息还包括共享锁请求节点数量,从而使所述第一节点在对所述目标资源进行加锁操作时,还可以根据所述锁资源信息确定等待对所述目标资源添加共享锁的节点数量。
在一种可能的实现方式中,当所述资源锁为共享锁时,所述等待节点队列中还包含每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;所述第一资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁,且所述等待节点队列中不包含对应的资源锁类型指示信息指示独占锁的节点;所述第二资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
基于该方案,本申请中所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型。从而所述第一节点可以根据所述锁资源信息中的所述等待节点队列确定等待对所述目标资源添加共享锁的节点数量以及添加独占锁的节点数量。
在一种可能的实现方式中,所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁,包括:所述第一节点将所述共享节点数量加1;所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:所述第一节点将所述共享节点数量加1,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的资源锁类型指示信息删除。
基于该方案,本申请提供了一种基于所述等待节点队列中还包含每个节点的资源锁类型指示信息时,所述锁资源信息更新的方法。
在一种可能的实现方式中,所述第一节点对所述目标资源添加独占锁之后,所述方法还包括:所述第一节点对所述目标资源解除所述独占锁,并更新所述独占锁指示信息,其中,更新后的所述独占锁指示信息指示所述目标资源未添加独占锁。
基于该方案,本申请提供了所述第一节点解除对所述目标资源添加的独占锁的方法。
在一种可能的实现方式中所述第一节点对所述目标资源添加共享锁之后,所述方法还包括:所述第一节点对所述目标资源解除所述共享锁,并将所述共享节点数量减1。
基于该方案,本申请提供了所述第一节点解除对所述目标资源添加的共享锁的方法。
第二方面,本申请实施例提供了一种资源锁管理装置,该装置可以用来执行上述第一方面及第一方面的任意可能的实现方式中的操作。例如,装置可以包括用于执行上述第一方面或第一方面的任意可能的实现方式中的各个操作的模块单元。
第三方面,本申请实施例提供了一种芯片系统,包括处理器,可选的还包括存储器;其中,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片系统的通信设备执行上述第一方面或第一方面的任意可能的实现方式中的任一方法。
第四方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码被通信设备的通信单元、处理单元或收发器、处理器运行时,使得通信设备执行上述第一方面或第一方面的任意可能的实现方式中的任一方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有程序,程序使得通信设备(例如,终端设备或网络设备)执行上述第一方面或第一方面的任意可能的实现方式中的任一方法。
第六方面,本申请实施例提供了一种计算机程序,计算机程序在某一计算机上执行时,将会使得计算机实现上述第一方面或第一方面的任意可能的实现方式中的任一方法。
附图说明
图1为本申请提供的一种资源锁管理系统架构示意图;
图2为本申请提供的另一种资源锁管理系统架构示意图;
图3为本申请提供的一种资源锁管理场景示意图;
图4为本申请提供的第一种锁资源管理的方法示意图;
图5a为本申请提供的第一种锁资源信息划分示意图;
图5b为本申请提供的第二种锁资源信息划分示意图;
图6为本申请提供的第三种锁资源信息划分示意图;
图7a为本申请提供的一种根据锁资源信息对目标资源进行加解独占锁操作流程示意图;
图7b为本申请提供的一种根据锁资源信息对目标资源解除独占锁示意图;
图8a为本申请提供的一种第一节点对目标资源直接添加独占锁示意图;
图8b为本申请提供的第一种第一节点对目标资源加解独占锁过程中锁资源信息示意图;
图9a为本申请提供的一种第一节点排队等待对目标资源添加独占锁示意图;
图9b为本申请提供的第二种第一节点对目标资源加解独占锁过程中锁资源信息示意图;
图10a为本申请提供的一种根据锁资源信息对目标资源加解共享锁操作流程示意图;
图10b为本申请提供的一种根据锁资源信息对目标资源解除共享锁示意图;
图11a为本申请提供的一种第一节点对目标资源直接添加共享锁示意图;
图11b为本申请提供的第一种第一节点对目标资源加解共享锁过程锁资源信息示意图;
图12a为本申请提供的一种第一节点排队等待对目标资源添加共享锁示意图;
图12b为本申请提供的第二种第一节点对目标资源加解共享锁过程锁资源信息示意图;
图12c为本申请提供的第三种第一节点对目标资源加解共享锁的锁资源信息示意图;
图12d为本申请提供的一种第一节点基于RDMA技术的实现场景示意图;
图13为本申请提供的第一种基于RDLM装置的集群文件系统启动及停止流程示意图;
图14a为本申请提供的第一种基于RDLM装置的集群文件系统加解锁流程示意图;
图14b为本申请提供的一种锁资源信息与索引节点的哈希表示意图;
图15为本申请提供的第二种基于RDLM装置的集群文件系统加解锁流程示意图;
图16为本申请提供的第一种资源锁管理的装置示意图;
图17为本申请提供的第二种资源锁管理的装置示意图。
具体实施方式
本申请提供一种资源锁管理方法及装置,用以避免现有技术进行分布式系统管理时存在加锁节点加锁饿死的问题。下面结合附图,对本申请实施例进行描述。
以下对本申请实施例中的部分用语进行解释说明,以便于理解。
1)远程直接内存访问(remote direct memory access,RDMA),是一种直接存储器访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许高通量、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。
2)分布式文件系统,其中包含多个节点。在分布式文件系统中,文件会分布式存储在部分节点中,其他节点可以通过网络访问该节点实现对该文件进行读写操作。所述分布式文件系统又可以称为共享存储型文件系统。
当分布式文件系统中包含的节点数量较大时,分布式文件系统又可以称为集群文件系统。
集群文件系统可以将集群内的节点的存储空间资源整合、虚拟化并对外提供文件访问服务。其中,集群文件系统(oracle cluster file system 2,ocfs2)包括用户态工具和内核态模块两部分。用户态工具主要用于配置集群环境,执行格式化或挂载或卸载文件系统等管理操作,内核态处理具体文件输入/输出(input/output,I/O)操作以及集群锁功能。
3)节点(node),是指分布式文件系统中的设备。所述节点可以存储资源,也可以访问位于其他节点中的资源。具体地,所述节点可以是计算节点、服务器、主机、计算机等。
4)RDMA网络接口控制器(RDMAnetwork interface controller,RNIC),是指基于RDMA技术的网络接口控制器(网卡),为分布式文件系统中的节点提供RDMA的底层通信能力。
5)资源,具体可以是文本、视频、图片、音频等各种类型的文件。在本申请实施例中,资源和文件二者表示同一概念,可以互换。
6)资源锁,为了实现对分布式文件系统中的资源进行管理,提高资源管理的效率和安全性设置的。节点可以通过对本地或其他节点中的资源添加资源锁,获取对该资源进行读操作、写操作的访问权限。
目前,资源锁一般包括共享锁和独占锁。
其中,共享锁,又称为读锁。当节点对某资源添加共享锁后,可以对该资源进行查看(即读操作),但无法对该资源进行修改和删除。需要说明的是,分布式文件系统中的多个节点可以同时对同一资源添加共享锁;另外,当某资源已添加独占锁时,其他节点无法再对该资源添加共享锁。
独占锁,又称排他锁或写锁。当节点对某资源添加独占锁后,可以对该资源进行查看,修改和删除等各种操作。需要说明的是,分布式文件系统中,在同一时刻,只能存在一个节点对某资源添加独占锁;同样的,当某资源已添加共享锁时,其他节点无法再对该资源添加独占锁。
总之,在分布式文件系统中,节点对某资源添加一种类型的资源锁需要保证该资源未添加任何类型的资源锁。
另外,本申请实施例中的术语“系统”和“网络”可被互换使用。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中,A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。以下至少一项(个)下或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
此外,本申请实施例和权利要求书及附图中的术语“包括”和“具有”不是排他的。例如,包括了一系列步骤或模块的过程、方法、系统、产品或设备,不限定于已列出的步骤或模块,还可以包括没有列出的步骤或模块。
本申请实施例提供了一种资源锁管理方法可能适用的一种分布式文件网络系统。如图1所示,所述分布式文件系统中有多个节点,例如图中的node01、node02、node03、node4等。
在所述分布式文件系统,某个节点可以存储共享资源,其他节点可以对该节点进行资源访问,并通过对该共享资源添加资源锁以获取对该资源进行读操作、写操作的访问权限。该节点可以称为共享节点,或主节点。那么访问该节点中的资源的其他节点可以称为子节点、从节点、访问节点。
例如图1中node4中可以存储有共享资源1,node1、node2和node3作为该node4的从节点,可以对node4中的共享资源1进行访问。
又例如,图1中的node5中存储有共享资源2,node6和node7作为node5的从节点,可以对共享资源2进行访问。
需要说明的是,分布式文件系统中每个节点均可以存储共享资源,或者分布式文件系统中部分节点存储共享资源,且部分节点的数量不作限定。
可选的,所述分布式文件系统可以采用DLM架构、SDLM架构以及RDLM架构,以实现资源锁管理。
在一种实施方式中,分布式文件系统可以固定为某些节点分配对应的共享节点。
在第一个设计中,所述分布式文件系统中包含一个控制节点,该控制节点可以设置分布式文件系统中的主从节点映射关系。如图2所示,该主从节点映射关系可以为:node4作为node1、node2和node3的主节点;node5作为node6和node7的主节点。
可选的,所述主从节点映射关系可以通过表1来表示。
Figure BDA0002108838840000081
表1主从节点映射关系
当所述控制节点可以将所述主从节点映射关系发送给分布式文件系统中的每个节点(或每个从节点);或者将包含每个从节点的标识的主从节点映射关系发送给对应的从节点。或者子节点可以在需要访问主节点的资源时,从所述控制节点获取所述主从节点映射关系。
例如,所述控制节点可以将上述如表1所示的主从节点映射关系发送给node1-node7,或者发送给node1-node3,以及node6和node7。又例如,所述控制节点将主从节点映射关系:node1<->node4发送给node1,将主从节点映射关系:node2<->node4发送给node2……,将node7<->node5发送给node7。
通过该设计,分布式文件系统中的节点需要访问某资源或者需要对某资源添加资源锁时,可以根据所述主从节点映射关系,确定存储有所述资源的节点。
在另一个设计中,所述分布式文件系统中包含一个控制节点,该控制节点可以获取分布式文件系统中的共享节点与其包含的资源之间的对应关系。所述共享节点与其包含的资源之间的对应关系可以为:共享节点node4存储有共享资源1;共享节点node5存储有共享资源2。可选的,所述共享节点与共享资源的对应关系可以通过表2来表示。
共享节点 共享资源
node4 共享资源1
node5 共享资源2
表2共享节点与共享资源的对应关系
所述控制节点可以将所有共享节点与其包含的资源之间的对应关系发送给系统中的每个节点(或每个从节点),或者将某个共享节点与其包含的资源之间的对应关系发送给该节点对应的从节点。例如,所述控制节点可以将表2所述的共享节点与共享资源的对应关系发送给node1-node7,或者发送给node1-node3,以及node6和node7。又例如,所述控制节点可以将共享节点4与共享资源的对应关系:node4<->共享资源1发送给node1-node3,将共享节点5与共享资源的对应关系:node5<->共享资源2发送给node6和node7。
通过该设计,分布式文件系统中的节点需要访问某资源或者需要对某资源添加资源锁时,可以根据所述共享节点与其包含的资源之间的对应关系,确定存储有所述资源的节点。
在一种可能的实现方式中,上述分布式文件系统中的节点之间进行通信(例如,节点对共享节点进行资源访问)时,可以通过RDMA技术来实现。如图3所示,当节点2或节点3需要对目标资源进行加解资源锁操作和读写操作时,确定存储有目标资源的共享节点为节点1。然后,所述节点2或节点3可以分别通过RDMA技术,对所述目标资源进行上述操作。
由于RDMA技术可以将节点的网络通信处理能力卸载在网卡上,因此,所述节点2或节点3在向所述节点1发送加解资源锁操作和读写操作对应的指令时,可以绕过节点1的内核网络协议栈,减少数据的拷贝次数,无需节点1的主机CPU和操作系统,极大地提升了分布式文件系统的网络传输性能。
目前,现有技术中,分布式文件系统中的节点对目标资源进行加解资源锁的方法一般是:
方法一:采用去中心化架构的DLM技术对目标资源进行加解资源锁管理。
方法二:采用中心化架构的SDLM技术对目标资源进行加解资源锁管理。
但是,上述分布式文件系统对共享资源进行加解资源锁管理的主要问题是:无论是通过方法一还是方法二对共享资源进行加资源锁时,经常出现多个节点并发对目标资源进行加锁操作时,存在节点无限加锁等待的情况。
例如,假设节点1、节点2、节点3、节点4并发对目标资源进行加锁操作。其中,假设节点2请求对目标资源加锁的操作早于其他节点,但节点1、节点3、节点4都成功完成对目标资源加锁操作,而节点2一直无法成功对目标资源进行加锁操作。因此,节点2一直进行无限加锁等待,造成加锁饿死现象。
为解决该问题,本申请实施例提供一种资源锁管理方法。该方法可应用于如图1所示的分布式文件系统中。在该系统中,存储有共享资源的节点针对每个共享资源,均维护一个锁资源信息,用于实现系统中的其他节点对该共享资源进行锁管理。
为方便对本申请实施例进行介绍,下述实施例中,将需要对目标资源进行加解资源锁操作的节点称为第一节点。
如图4所示,该方法具体包括以下流程:
S400:第一节点确定向目标资源添加资源锁,获取目标资源对应的锁资源信息。
其中,所述锁资源信息用于表征所述目标资源是否已添加资源锁,以及请求添加资源锁的等待节点队列的信息,所述资源锁的类型为独占锁或共享锁。
根据具体的场景不同,所述第一节点可以通过以下方式获取所述锁资源信息:
场景一:在所述目标资源位于所述第一节点时,所述第一节点从本地获取所述目标资源对应的所述锁资源信息。
场景二:在所述目标资源位于其他节点(为了便于描述,后续可以称为第二节点)时,所述第一节点从第二节点获取所述目标资源对应的所述锁资源信息。
其中,在上述场景二中,所述第一节点在从所述第二节点获取所述目标资源对应的所述锁资源信息之前,需要确定存储有所述目标资源的所述第二节点。可选的,所述第一节点可以但不限于通过以下方式确定所述第二节点。
确定方式1:所述第一节点根据所述控制节点发送的主从节点映射关系,确定所述第二节点。
例如,假设所述第一节点为node2,所述第一节点接收到的所述控制节点发送的主从节点映射关系如表1所示,则当所述第一节点需要访问某资源或者需要对某资源添加资源锁时,通过表1可以确定出所述第一节点对应的主节点为node4。因此,所述第一节点将所述node4确定为所述第二节点。
确定方式2:所述第一节点根据所述控制节点发送的所有共享节点与其包含的资源之间的对应关系,确定所述目标资源对应的共享节点,并将所述目标资源对应的共享节点确定为所述第二节点。
例如,假设所述第一节点为node2,所述第一节点请求进行加解锁操作的目标资源为共享资源1,所述第一节点接收到的所述控制节点发送的所有共享节点与其包含的资源之间的对应关系如表2所示,则所述第一节点根据所述表2,可以确定出所述目标资源对应的共享节点为node4。因此,所述第一节点将所述node4确定为所述第二节点。
S401:所述第一节点根据所述锁资源信息确定是否满足第一资源锁添加条件,若是,执行步骤S402,若否,执行步骤S403。
S402:所述第一节点对所述目标资源添加资源锁,并更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁。
S403:所述第一节点排队等待添加资源锁,且更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中,继续执行步骤S404。
S404:所述第一节点监测所述锁资源信息,直至确定所述锁资源信息满足第二资源锁添加条件时,对所述目标资源添加资源锁,更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除。
通过上述方法,所述第一节点在对目标资源添加资源锁时,可以根据所述目标资源对应的锁资源信息进行加锁操作。其中,因为所述第一节点根据所述锁资源信息可以确定所述目标资源当前是否添加独占锁资源锁,以及请求添加资源锁的节点队列信息,从而有效改善了进行分布式系统管理时存在加锁节点加锁饿死的问题。
可选的,在一个实施例中,所述锁资源信息如图5a所示,包含:独占锁指示信息、等待节点队列、共享节点数量、独占锁请求节点数量。
其中,所述独占锁指示信息用于指示所述目标资源是否添加独占锁;所述共享节点数量为已对所述目标资源添加共享锁的节点数量;所述等待节点队列为包含请求对所述目标资源添加资源锁的节点标识组成的队列,且所述等待节点队列中的节点的标识节点标识按照请求添加资源锁的前后顺序排列;所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量。可选的,在另一个实施例中,所述锁资源信息如图5b所示,还包含:共享锁请求节点数量。其中,所述共享锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量。
通过上述方法,将所述锁资源信息划分为独占锁指示信息、等待节点队列、共享节点数量、独占锁请求节点数量以及共享锁请求节点数量,从而使所述第一节点在对所述目标资源进行加资源锁操作时,可以根据所述锁资源信息确定所述目标资源当前是否添加独占锁或共享锁,是否有等待对所述目标资源添加资源锁的节点以及对应的节点数量。
可选的,在一个实施例中,所述锁资源信息如图6所示,所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型。此时,所述第一节点可根据所述等待节点队列确定等待对所述目标资源添加共享锁的节点数量以及添加独占锁的节点数量。因此,所述锁资源信息中可无需划分所述独占锁请求节点数量以及共享锁请求节点数量。
另外,在一个实施例中,分布式文件系统还可对所述锁资源信息中的共享节点数量设置一个阈值n,也就是所述目标资源同一时刻最多支持n个节点添加共享锁。当节点需要对所述目标资源添加共享锁时,确定所述锁资源信息中共享节点数量为n时,需要进行排队等待。
下面,按照所述第一节点请求添加的资源锁的类型对S401-S404进行具体介绍,其中,选取如图5b所示的锁资源信息划分的方式进行详细说明。
资源锁类型1:所述第一节点对目标资源进行加解独占锁操作。
如图7a所示,本申请提供了一种对目标资源添加独占锁的流程,包括:
S700:所述第一节点获取目标资源对应的锁资源信息。
S701:所述第一节点根据所述锁资源信息确定所述目标资源是否满足第一独占锁添加条件,若是,执行S702,否则执行S703。
根据以上对独占锁的描述中独占锁的添加规则,在本申请实施例中,所述第一独占锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述等待节点队列的节点数量为0。
S702:所述第一节点对所述目标资源添加独占锁,并更新所述独占锁指示信息。
其中,本申请更新后的所述独占锁指示信息指示所述目标文件资源当前已被所述第一节点添加独占锁。
S703:所述第一节点将所述锁资源信息中独占锁请求节点数量加1。
S704:所述第一节点持续监测所述锁资源信息。
S705:所述第一节点判断所述锁资源信息是否满足第二独占锁添加条件,若是,执行S706,否则,执行S704。
本申请所述第二独占锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述第一节点标识位于所述等待节点队列起始位置。
S706:所述第一节点对所述目标资源添加独占锁,并更新所述锁指示信息,以及将所述独占锁请求节点数量减1。
可选的,本申请所述第一节点对所述目标资源添加独占锁后,在满足一定条件时,还会对所述目标资源进行解除独占锁操作。如图7b所示,当所述第一节点需要解除对所述目标资源添加的独占锁时,所述第一节点确定存储有所述目标资源的共享节点。所述第一节点查找所述目标资源对应的锁资源信息,然后读取所述锁资源信息。所述第一节点对所述目标资源解除所述独占锁,并将所述独占锁指示信息中所记录的所述第一节点信息清除。
通过上述方法,所述第一节点对目标资源进行加独占锁操作时,可根据所述目标资源对应的所述锁资源信息确定当前是否满足第一独占锁添加条件,满足则直接进行加锁操作,不满足则按照请求对目标资源添加资源锁的顺序排队等待进行加独占锁操作。其中,所述第一节点在排队等待过程中,若确定满足第二独占锁添加条件,则对所述目标资源添加独占锁操作。显然,该方法可以有效避免等待节点队列中的请求添加独占锁的第一节点被不断插队抢占,长时间无法加锁成功的情况,可以解决所述第一节点加锁饿死的问题。
基于以上实施例,本申请还提供了对目标资源进行加解独占锁操作的实例。下面对实例进行说明。
实例一:如图8a所示,假设第一节点为节点20,所述第一节点根据主从节点映射关系确定的第二节点为节点4,且所述第一节点从所述第二节点获取的所述目标资源对应的锁资源信息如图8b所示。
其中,从图8b中可以确定当前所述目标资源满足第一独占锁添加条件,因此,所述第一节点对所述目标资源添加独占锁,并将所述第一节点的节点信息添加到所述独占锁指示信息中,最后更新所述锁资源信息。
实例二:如图9a所示,假设第一节点为节点20,所述第一节点根据主从节点映射关系确定的第二节点为节点4,且所述第一节点从所述第二节点获取的所述目标资源对应的锁资源信息如图9b所示。其中,从图9a中可以确定当前所述目标资源不满足第一独占锁添加条件。因此,所述第一节点需要排队等待对目标资源添加独占锁,则所述第一节点将节点信息按照顺序记录到所述锁资源信息中的等待节点队列中,并将所述锁资源信息中的独占锁请求节点数量加1。
所述第一节点持续监测所述锁资源信息,其中,当节点13解除对目标资源添加的独占锁后,位于所述等待节点队列中的节点2按照顺序对所述目标资源添加独占锁,并将所述节点2的节点信息添加到所述独占锁指示信息中,以及将所述独占锁请求节点数量减1。
其中,当所述节点2解除对目标资源添加的独占锁后,位于所述等待节点队列中的节点8按照顺序对所述目标资源添加独占锁,并将所述节点8的节点信息添加到所述独占锁指示信息中,以及将所述独占锁请求节点数量减1。
所述第一节点继续监测所述锁资源信息,直至所述节点8解除对目标资源添加的独占锁,且所述第一节点的节点信息位于所述等待节点队列起始位置。此时,所述第一节点根据所述锁资源信息确定当前所述目标资源满足第二所述独占锁添加条件。
因此,所述第一节点对所述目标资源添加独占锁,并将所述第一节点的节点信息添加到所述独占锁指示信息中,以及将所述独占锁请求节点数量减1,最后更新所述锁资源信息。
资源锁类型2:所述第一节点对目标资源进行加解共享锁操作。
如图10a所示,本申请提供了一种对目标资源添加共享锁的流程,包括:
S1000:所述第一节点获取目标资源对应的锁资源信息。
S1001:所述第一节点根据所述锁资源信息确定所述目标资源是否满足第一共享锁添加条件,若是,执行S1002,否则执行S1003。
本申请中所述第一共享锁添加条件为:所述独占锁指示信息指示所述目标文件资源未添加独占锁,且所述等待添加独占锁的节点第一队列中的节点数量为0。
S1002:所述第一节点对所述目标资源添加独占锁,并将所述共享节点数量加1。
S1003:所述第一节点将所述等待添加共享锁的第二队列中的节点数量加1。
S1004:所述第一节点持续监测所述锁资源信息。
S1005:所述第一节点判断所述锁资源信息是否满足第二共享锁添加条件,若是,执行S1006,否则执行S1004。
本申请中所述第二共享锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点标识位于所述第一等待节点队列起始位置。
S1006:所述第一节点对所述目标资源添加共享锁,并将所述共享节点数量加1,以及将所述共享锁请求节点数量减1。
可选的,本申请中所述第一节点对所述目标资源添加共享锁后,在满足一定条件时,还会对所述目标资源进行解除共享锁操作。如图10b所示,当所述第一节点需要解除对所述目标资源添加的共享锁时,所述第一节点确定存储有所述目标资源的共享节点。所述第一节点查找所述目标资源对应的锁资源信息,然后读取所述锁资源信息。所述第一节点对所述目标资源解除所述共享锁,并将所述共享节点数量减1。
通过上述方法,所述第一节点对目标资源进行加共享锁操作时,可根据所述目标资源对应的所述锁资源信息确定当前是否满足第一共享锁添加条件,满足则直接进行加锁操作,不满足则按照请求对目标资源添加资源锁的顺序排队等待进行加共享锁操作。其中,所述第一节点在排队等待过程中,若确定满足第二共享锁添加条件,则所述目标资源添加共享锁操作。显然,该方法可以有效避免等待队列中的请求添加共享锁的第一节点被不断插队抢占,长时间无法加锁成功的情况,可以解决所述第一节点加锁饿死的问题。
基于以上实施例,本申请还提供了对目标资源进行加解共享锁操作的实例。下面对实例进行说明。
实例一:如图11a所示,假设第一节点为节点20,所述第一节点根据主从节点映射关系确定的第二节点为节点4,且所述第一节点从所述第二节点获取的所述目标资源对应的锁资源信息如图11b所示。
其中,从图11b中可以确定当前所述目标资源满足第一共享锁添加条件,因此,所述第一节点对所述目标资源添加共享锁,并将所述锁资源信息中的共享节点数量加1,最后更新所述锁资源信息。
实例二:如图12a所示,假设第一节点为节点20,所述第一节点根据主从节点映射关系确定的第二节点为节点4,且所述第一节点从所述第二节点获取的所述目标资源对应的锁资源信息如图12b所示。其中,从图12b中可以确定当前所述目标资源不满足第一共享锁添加条件。因此,所述第一节点需要排队等待添加共享锁,则所述第一节点将节点信息按照顺序记录到所述锁资源信息中的等待节点队列中,并将所述锁资源信息中的共享锁请求节点数量加1。
其中,实例二中假设等待节点队列中排队等待的节点标识顺序依次为需要对目标资源添加独占锁的节点2、需要对目标资源添加共享锁的节点6、需要对目标资源添加共享锁的节点11、需要对目标资源添加独占锁的节点9。所述第一节点持续监测所述锁资源信息,其中,当节点13解除对目标资源添加的独占锁后,位于所述等待节点队列中的节点2按照顺序对所述目标资源添加独占锁,并将所述节点2的节点信息添加到所述独占锁指示信息中,以及将所述独占锁请求节点数量减1。
其中,当所述节点2解除对所述目标资源添加的独占锁后,位于所述等待节点队列中的节点6按照顺序对所述目标资源添加共享锁,并将所述共享节点数量加1,以及将所述共享锁请求节点数量减1。
可选的,因当前所述目标资源添加的是共享锁,而目标资源可以同时添加多个共享锁。因此,位于所述等待节点队列中的节点11也可以对所述目标资源添加共享锁,并将所述共享节点数量加1,以及将所述共享锁请求节点数量减1。
当所述节点11、节点6全部对目标资源解除添加的共享锁后,此时,位于所述等待节点队列起始位置的节点9按照顺序对所述目标资源添加独占锁,并将所述节点9的节点信息添加到所述独占锁指示信息中,以及将所述独占锁请求节点数量减1。
所述第一节点继续监测所述锁资源信息,直至所述节点9解除对目标资源添加的独占锁,且所述第一节点的节点信息位于所述等待节点队列起始位置。此时,所述第一节点根据所述锁资源信息确定当前所述目标资源满足所述第二共享锁添加条件。
因此,则所述第一节点对所述目标资源添加共享锁,并将所述共享节点数量加1,以及将所述共享锁请求节点数量减1,最后更新所述锁资源信息。
实例三:第一节点为节点20,目标资源对应的锁资源信息如图12c所示,且假设所述分布式文件系统中每个共享资源同一时刻最多支持4个节点添加共享锁。
其中,从图12c中可以确定当前所述目标资源满足第一共享锁添加条件,但是所述目标资源当前已达到添加共享锁的阈值4。因此,所述第一节点需要排队等待对所述目标资源添加共享锁,则所述第一节点将节点信息按照顺序记录到所述锁资源信息中的等待节点队列中,并将所述锁资源信息中的共享锁请求节点数量加1。
所述第一节点持续监测所述锁资源信息,直到所述目标资源当前添加共享锁的节点数量小于4,且所述第一节点的节点信息位于所述等待节点队列起始位置。此时,所述第一节点对所述目标资源添加共享锁,并将所述共享节点数量加1,以及将所述共享锁请求节点数量减1,最后更新所述锁资源信息。
可选的,如图12d所示,本申请基于RDMA技术的优势,在分布式文件系统进行资源锁管理过程中引入基于RDMA技术的分布式锁管理器RDLM。其中,图13中所示的文件系统模块用于为上层应用程序提供文件管理服务,包括文件读写、修改、删除操作等。
所述文件操作模块用于通过向虚拟机文件系统(VFS)注册通用的文件操作函数,为上层应用提供文件读写、修改、删除等操作。所述元数据操作模块主要管理文件的属性信息,比如文件大小、权限、修改时间、在磁盘中的位置等。所述磁盘空间管理模块主要管理文件系统的存储空间,比如,分配磁盘空间、回收磁盘空间等。
所述RDLM模块用于为上层应用程序提供分布式锁服务,保证集群节点并发访问共享文件资源。所述锁资源管理模块通过hash table数据结构管理锁资源信息。所述锁资源恢复模块负责恢复锁资源信息。所述RDMA通信模块负责初始化远程虚拟内存空间,用于和远端计算节点进行锁资源的数据交互。
由此,通过RDMA技术,本申请可将所述目标资源对应的锁资源信息存储在分布式文件系统的节点中。显然,该方法可以有效降低现有技术中第一节点对目标资源进行加解锁时,需要通过第三方存储服务器获取所述锁资源信息过程中可能造成的系统开销过大,出现系统卡死的问题。
其中,本申请基于RDLM装置进行资源锁管理的方式有多种,下面列举几种分布式网络系统通过RDLM进行资源锁管理的启动流程以及第一节点的加解锁流程。
本发明的一个实施例,如图13所示,开源的ocfs2集群文件系统启动和停止流程如下:
S1300:配置集群信息。
具体的,在集群中所有主机上创建集群配置文件,并添加节点信息,包括节点的名称、IP地址等。
S1301:启动集群服务。
具体的,通过用户态工具将集群配置信息传递到内核态,并在内核态启动RDMA网络监听进程。
S1302:格式化文件系统。
具体的,初始化文件系统的元数据信息,并写入磁盘区域。
S1303:挂载文件系统。
具体的,初始化RDLM模块,并与其它计算节点的RDLM建立互信连接,然后将ocfs2的文件操作函数注册到虚拟文件系统(virtual filesystem,VFS)中,以便上层应用可以通过系统调用操作文件。
S1304:卸载文件系统。
具体的,将文件系统的内存脏数据同步到磁盘,释放所有集群锁,与所有节点断开RDLM连接并卸载RDLM模块,最后卸载文件系统模块。
S1305:停止集群服务。
具体的,断开RDMA网络连接,停止RDMA网络通信进程,最后清理集群配置信息。
本申请还提供了一个资源锁管理方法的实施例,如图14a所示,开源的ocfs2集群文件系统集群节点的加解锁流程如下:
S1401:文件读写。
具体的,用户态应用程序通过装置(glibc)库,调用读/写(read/write)系统调用接口,然后,在内核触发调用ocfs2在VFS层注册的文件读写函数。
S1402:加集群锁。
具体的,获取文件索引节点号,对索引节点号进行哈希(hash)运算规则一,生成锁资源信息对应的第二节点的节点编号,然后再对索引节点号进行hash运算规则二,找到锁资源信息在哈希表(hashtable)中的具体位置。其中,所述hashtable如图14b所示。读取锁资源信息,根据锁资源的当前状态,判断是否可以加锁。通过RDMA提供的比较和交换(compare and swap)/获取并添加(fetch and add)命令,修改hashtable中的锁资源信息的值,完成独占锁/共享锁的加锁操作。
S1403:重试加锁。
具体的,如果compare and swap/fetch and add命令返回失败,表示锁资源已经被其它节点加锁,则尝试加入锁队列,排队等待加锁。如果发现第二节点宕机故障,则将加锁请求重定向到新的第二节点,完成加锁。
S1404:文件系统执行IO操作。
具体的,为本次IO操作分配内存和磁盘空间,将用户数据组成块设备的输入/输出(blockinput output,bio)结构体,向对应块设备的物理地址下发bio请求,等待IO结果返回。
S1405:释放集群锁。
具体的,IO结果返回后,通过RDMA提供的compare and swap/fetch and add命令,修改hashtable中的锁资源信息的值,释放独占锁/共享锁,至此本次IO结束。
本发明的一个实施例,以用户态分布式锁方案为例,介绍RDLM的加解锁流程,具体流程如图15所示。
S1501:安装RDLM函数库。
具体的,在集群所有主机上安装RDLM函数库和接口头文件,应用程序包含头文件后就可以调用RDLM加解锁接口。
S1502:配置集群锁信息。
具体的,在集群所有主机上创建集群配置文件,并添加主机名称和IP地址信息,然后规划第一节点和第二节点。
S1503:启动集群锁服务。
具体的,在第一节点上启动集群锁服务,监听远端第二节点连接,然后为锁资源hashtable分配内存空间并将内存注册到RDMA,用于远程数据交换。
S1504:加集群锁。
具体的,根据需要保护的临界区域的内容或者特征,计算出全局唯一通用唯一识别码(universally unique identifier,UUID),对UUID进行hash运算规则一生成对应的第二节点编号,然后再对UUID进行hash运算规则二生成。找到锁资源信息在hashtable中的具体位置。读取锁资源信息,根据锁资源的当前状态,判断是否可以加锁。通过RDMA提供的compare and swap/fetch and add命令,修改hashtable中的锁资源信息的值,完成独占锁/共享锁的加锁操作。
S1505:重试加锁。
具体的,如果compare and swap/fetch and add命令返回失败,表示锁资源已经被其它节点加锁,则尝试加入锁队列,排队等待加锁。如果发现第一节点宕机故障,则将加锁请求重定向到新的第一节点,完成加锁。
S1506:操作临界区域。
具体的,加锁成功后,表示临界区域进入保护状态,应用程序可以访问操作。
S1507:释放集群锁。
具体的,临界区域操作完成后,通过RDMA提供的compare and swap/fetch andadd命令,修改hashtable中的锁资源信息的值,释放独占锁/共享锁。
通过上述对本申请方案的介绍,可以理解的是,上述实现各设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如图16所示,本申请一种资源锁管理装置,该装置包括处理器1600、存储器1601和通信接口1602。
处理器1600负责管理总线架构和通常的处理,存储器1601可以存储处理器1600在执行操作时所使用的数据。通信接口1602用于处理器1600与存储器1601进行数据通信。
所述处理器1600可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。所述处理器1600还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。存储器1601可以包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
所述处理器1600、所述存储器1601以及所述通信接口1602之间相互连接。可选的,所述处理器1600、所述存储器1601以及所述通信接口1602可以通过总线1603相互连接;所述总线1603可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图16中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
具体地,所述处理器1600,用于读取存储器1601中的程序并执行:
用于确定向目标资源添加资源锁,获取目标资源对应的锁资源信息,其中,所述锁资源信息用于表征所述目标资源是否已添加资源锁,以及请求添加资源锁的等待节点队列的信息,所述资源锁的类型为独占锁或共享锁;根据所述锁资源信息确定是否满足第一资源锁添加条件;若是,则对所述目标资源添加资源锁,并更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁;否则,排队等待添加资源锁,且更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中;并监测所述锁资源信息,直至确定所述锁资源信息满足第二资源锁添加条件时,对所述目标资源添加资源锁,更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除。
在一种可能的实现方法中,所述处理器1600具体用于:
从本地获取所述目标资源对应的所述锁资源信息;或从第二节点获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方法中,所述处理器1600具体用于:
确定存储有所述目标资源的所述第二节点;从所述第二节点中获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方法中,所述处理器1600具体用于:
根据主从节点映射关系,确定所述第一节点的主节点为所述第二节点。
在一种可能的实现方法中,所述处理器1600具体用于:
通过远程直接内存访问RDMA技术,从所述第二节点获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方法中,所述锁资源信息包含:独占锁指示信息、等待节点队列、共享节点数量;其中,所述独占锁指示信息用于指示所述目标资源是否添加独占锁,所述共享节点数量为已对所述目标资源添加共享锁的节点数量,所述等待节点队列包含请求对所述目标资源添加资源锁的节点标识,且所述等待节点队列中的节点标识按照请求添加资源锁的前后顺序排列。
在一种可能的实现方法中,当所述资源锁的类型为独占锁时,所述第一资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述等待节点队列为空;所述第二资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述第一节点的节点标识位于所述等待节点队列首位。
在一种可能的实现方法中,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述处理器1600具体用于:
将所述第一节点的节点标识添加到所述等待节点队列中,并将所述独占锁请求节点数量加1;或者
更新所述独占锁指示信息,将所述独占锁请求节点数量减1,将所述等待节点队列中所述第一节点的节点标识删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
在一种可能的实现方法中,所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述处理器1600具体用于:
将所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息添加到所述等待节点队列中;或者
更新所述独占锁指示信息,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
在一种可能的实现方法中,当所述资源锁为共享锁时,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述独占锁请求节点数量为0;所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
在一种可能的实现方法中,所述处理器1600还用于:
将所述共享节点数量加1;或
将所述共享节点数量加1,以及将所述等待节点队列中所述第一节点的节点标识删除。
在一种可能的实现方法中,所述锁资源信息还包含共享锁请求节点数量,其中,所述共享锁请求节点数量为所述等待节点队列中请求添加共享锁的节点数量;
所述处理器1600具体用于:
将所述第一节点的节点标识添加到所述等待节点队列中,并将所述共享锁请求节点数量加1;或
将所述共享节点数量加1,将所述共享锁请求节点数量减1,以及将所述等待节点队列中所述第一节点的节点标识删除。
在一种可能的实现方法中,当所述资源锁为共享锁时,所述等待节点队列中还包含每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述等待节点队列中不包含对应的资源锁类型指示信息指示独占锁的节点;
所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
在一种可能的实现方法中,所述处理器1600具体用于:
所述第一节点将所述共享节点数量加1;或将所述共享节点数量加1,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的资源锁类型指示信息删除。
在一种可能的实现方法中,所述处理器1600还用于:
对所述目标资源解除所述独占锁,并更新所述独占锁指示信息,其中,更新后的所述独占锁指示信息指示所述目标资源未添加独占锁。
在一种可能的实现方法中,所述处理器1600还用于:
对所述目标资源解除所述共享锁,并将所述共享节点数量减1。
如图17所示,本发明提供一种资源锁管理装置,该装置包括:
获取模块1700:用于确定向目标资源添加资源锁,获取目标资源对应的锁资源信息,其中,所述锁资源信息用于表征所述目标资源是否已添加资源锁,以及请求添加资源锁的等待节点队列的信息,所述资源锁的类型为独占锁或共享锁;
处理模块1701:用于根据所述锁资源信息确定是否满足第一资源锁添加条件;若是,则对所述目标资源添加资源锁,并更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁;否则,排队等待添加资源锁,且更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中;并监测所述锁资源信息,直至确定所述锁资源信息满足第二资源锁添加条件时,对所述目标资源添加资源锁,更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除。
在一种可能的实现方法中,所述处理模块1701具体用于:
从本地获取所述目标资源对应的所述锁资源信息;或从第二节点获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方法中,所述处理模块1701具体用于:
确定存储有所述目标资源的所述第二节点;从所述第二节点中获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方法中,所述处理模块1701具体用于:
根据主从节点映射关系,确定所述第一节点的主节点为所述第二节点。
在一种可能的实现方法中,所述处理模块1701具体用于:
通过远程直接内存访问RDMA技术,从所述第二节点获取所述目标资源对应的所述锁资源信息。
在一种可能的实现方法中,所述锁资源信息包含:独占锁指示信息、等待节点队列、共享节点数量;其中,所述独占锁指示信息用于指示所述目标资源是否添加独占锁,所述共享节点数量为已对所述目标资源添加共享锁的节点数量,所述等待节点队列包含请求对所述目标资源添加资源锁的节点标识,且所述等待节点队列中的节点标识按照请求添加资源锁的前后顺序排列。
在一种可能的实现方法中,当所述资源锁的类型为独占锁时,所述第一资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述等待节点队列为空;所述第二资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述第一节点的节点标识位于所述等待节点队列首位。
在一种可能的实现方法中,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述处理模块1701具体用于:
将所述第一节点的节点标识添加到所述等待节点队列中,并将所述独占锁请求节点数量加1;或者
更新所述独占锁指示信息,将所述独占锁请求节点数量减1,将所述等待节点队列中所述第一节点的节点标识删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
在一种可能的实现方法中,所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述处理模块1701具体用于:
将所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息添加到所述等待节点队列中;或者
更新所述独占锁指示信息,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
在一种可能的实现方法中,当所述资源锁为共享锁时,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述独占锁请求节点数量为0;所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
在一种可能的实现方法中,所述处理模块1701还用于:
将所述共享节点数量加1;或
将所述共享节点数量加1,以及将所述等待节点队列中所述第一节点的节点标识删除。
在一种可能的实现方法中,所述锁资源信息还包含共享锁请求节点数量,其中,所述共享锁请求节点数量为所述等待节点队列中请求添加共享锁的节点数量;
所述处理模块1701具体用于:
将所述第一节点的节点标识添加到所述等待节点队列中,并将所述共享锁请求节点数量加1;或
将所述共享节点数量加1,将所述共享锁请求节点数量减1,以及将所述等待节点队列中所述第一节点的节点标识删除。
在一种可能的实现方法中,当所述资源锁为共享锁时,所述等待节点队列中还包含每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述等待节点队列中不包含对应的资源锁类型指示信息指示独占锁的节点;
所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
在一种可能的实现方法中,所述处理模块1701具体用于:
所述第一节点将所述共享节点数量加1;或将所述共享节点数量加1,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的资源锁类型指示信息删除。
在一种可能的实现方法中,所述处理模块1701还用于:
对所述目标资源解除所述独占锁,并更新所述独占锁指示信息,其中,更新后的所述独占锁指示信息指示所述目标资源未添加独占锁。
在一种可能的实现方法中,所述处理模块1701还用于:
对所述目标资源解除所述共享锁,并将所述共享节点数量减1。
在一些可能的实施方式中,本发明实施例提供的资源锁管理方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序代码在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书中描述的根据本发明各种示例性实施方式的资源锁管理方法中的步骤。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
根据本发明的实施方式的用于资源锁管理程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被信息传输、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由周期网络动作系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备。
本申请实施例针对资源锁管理的方法还提供一种计算设备可读存储介质,即断电后内容不丢失。该存储介质中存储软件程序,包括程序代码,当所述程序代码在计算设备上运行时,该软件程序在被一个或多个处理器读取并执行时可实现本申请实施例上面任何一种资源锁管理的方案。
以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

Claims (34)

1.一种资源锁管理方法,其特征在于,包括:
第一节点确定向目标资源添加资源锁,获取目标资源对应的锁资源信息,其中,所述锁资源信息用于表征所述目标资源是否已添加资源锁,以及请求添加资源锁的等待节点队列的信息,所述资源锁的类型为独占锁或共享锁;
所述第一节点根据所述锁资源信息确定是否满足第一资源锁添加条件;
若是,则所述第一节点对所述目标资源添加资源锁,并更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁;
否则,所述第一节点排队等待添加资源锁,且更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中;并监测所述锁资源信息,直至确定所述锁资源信息满足第二资源锁添加条件时,对所述目标资源添加资源锁,更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除。
2.如权利要求1所述的方法,其特征在于,所述第一节点获取所述目标资源对应的所述锁资源信息,包括:
所述第一节点从本地获取所述目标资源对应的所述锁资源信息;或
所述第一节点从第二节点获取所述目标资源对应的所述锁资源信息。
3.如权利要求2所述的方法,其特征在于,所述第一节点从所述第二节点获取所述目标资源对应的所述锁资源信息,包括:
所述第一节点确定存储有所述目标资源的所述第二节点;
所述第一节点从所述第二节点中获取所述目标资源对应的所述锁资源信息。
4.如权利要求3所述的方法,其特征在于,所述第一节点确定存储有所述目标资源的所述第二节点,包括:
所述第一节点根据主从节点映射关系,确定所述第一节点的主节点为所述第二节点。
5.如权利要求2或3所述的方法,其特征在于,所述第一节点从所述第二节点获取所述目标资源对应的所述锁资源信息,包括:
所述第一节点通过远程直接内存访问RDMA技术,从所述第二节点获取所述目标资源对应的所述锁资源信息。
6.如权利要求1-5任一项所述的方法,其特征在于,所述锁资源信息包含:独占锁指示信息、等待节点队列、共享节点数量;
其中,所述独占锁指示信息用于指示所述目标资源是否添加独占锁,所述共享节点数量为已对所述目标资源添加共享锁的节点数量,所述等待节点队列包含请求对所述目标资源添加资源锁的节点标识,且所述等待节点队列中的节点标识按照请求添加资源锁的前后顺序排列。
7.如权利要求6所述的方法,其特征在于,当所述资源锁的类型为独占锁时,所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述等待节点队列为空;
所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述第一节点的节点标识位于所述等待节点队列首位。
8.如权利要求7所述的方法,其特征在于,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中,包括:
所述第一节点将所述第一节点的节点标识添加到所述等待节点队列中,并将所述独占锁请求节点数量加1;
所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:
所述第一节点更新所述独占锁指示信息,将所述独占锁请求节点数量减1,将所述等待节点队列中所述第一节点的节点标识删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
9.如权利要求7所述的方法,其特征在于,所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中,包括:
所述第一节点将所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息添加到所述等待节点队列中;
所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:
所述第一节点更新所述独占锁指示信息,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
10.如权利要求6所述的方法,其特征在于,当所述资源锁为共享锁时,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述独占锁请求节点数量为0;所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
11.如权利要求10所述的方法,其特征在于,所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁,包括:
所述第一节点将所述共享节点数量加1;
所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:
所述第一节点将所述共享节点数量加1,以及将所述等待节点队列中所述第一节点的节点标识删除。
12.如权利要求10所述的方法,其特征在于,所述锁资源信息还包含共享锁请求节点数量,其中,所述共享锁请求节点数量为所述等待节点队列中请求添加共享锁的节点数量;
所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中,包括:
所述第一节点将所述第一节点的节点标识添加到所述等待节点队列中,并将所述共享锁请求节点数量加1;
所述第一节点更新所述所锁资源信息,以使更新后的所述所锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:
所述第一节点将所述共享节点数量加1,将所述共享锁请求节点数量减1,以及将所述等待节点队列中所述第一节点的节点标识删除。
13.如权利要求6所述的方法,其特征在于,当所述资源锁为共享锁时,所述等待节点队列中还包含每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述等待节点队列中不包含对应的资源锁类型指示信息指示独占锁的节点;
所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
14.如权利要求13所述的方法,其特征在于,所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁,包括:
所述第一节点将所述共享节点数量加1;
所述第一节点更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除,包括:
所述第一节点将所述共享节点数量加1,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的资源锁类型指示信息删除。
15.如权利要求7-9任一所述的方法,其特征在于,所述第一节点对所述目标资源添加独占锁之后,所述方法还包括:
所述第一节点对所述目标资源解除所述独占锁,并更新所述独占锁指示信息,其中,更新后的所述独占锁指示信息指示所述目标资源未添加独占锁。
16.如权利要求10-14任一所述的方法,其特征在于,所述第一节点对所述目标资源添加共享锁之后,所述方法还包括:
所述第一节点对所述目标资源解除所述共享锁,并将所述共享节点数量减1。
17.一种资源锁管理装置,其特征在于,包括:处理单元和通信单元;
所述处理单元,用于确定向目标资源添加资源锁,获取目标资源对应的锁资源信息,其中,所述锁资源信息用于表征所述目标资源是否已添加资源锁,以及请求添加资源锁的等待节点队列的信息,所述资源锁的类型为独占锁或共享锁;根据所述锁资源信息确定是否满足第一资源锁添加条件;若是,则对所述目标资源添加资源锁,并更新所述锁资源信息,以使更新后的所述锁资源信息表征所述目标资源已添加资源锁;否则,排队等待添加资源锁,且更新所述锁资源信息,以使更新后的所述锁资源信息表征所述第一节点已加入所述等待节点队列中;并监测所述锁资源信息,直至确定所述锁资源信息满足第二资源锁添加条件时,对所述目标资源添加资源锁,更新所述锁资源信息,以使更新后的所述锁资源信息表征:所述目标资源已添加资源锁,且所述第一节点已从所述等待节点队列中删除。
18.如权利要求17所述的装置,其特征在于,所述处理单元具体用于:
从本地获取所述目标资源对应的所述锁资源信息;或从第二节点获取所述目标资源对应的所述锁资源信息。
19.如权利要求18所述的装置,其特征在于,所述处理单元具体用于:
确定存储有所述目标资源的所述第二节点;从所述第二节点中获取所述目标资源对应的所述锁资源信息。
20.如权利要求19所述的装置,其特征在于,所述处理单元具体用于:
根据主从节点映射关系,确定所述第一节点的主节点为所述第二节点。
21.如权利要求18或19所述的装置,其特征在于,所述处理单元具体用于:
通过远程直接内存访问RDMA技术,从所述第二节点获取所述目标资源对应的所述锁资源信息。
22.如权利要求17-21任一所述的装置,其特征在于,所述锁资源信息包含:独占锁指示信息、等待节点队列、共享节点数量;其中,所述独占锁指示信息用于指示所述目标资源是否添加独占锁,所述共享节点数量为已对所述目标资源添加共享锁的节点数量,所述等待节点队列包含请求对所述目标资源添加资源锁的节点标识,且所述等待节点队列中的节点标识按照请求添加资源锁的前后顺序排列。
23.如权利要求22所述的装置,其特征在于,当所述资源锁的类型为独占锁时,所述第一资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述等待节点队列为空;所述第二资源锁添加条件为:所述独占锁指示信息指示所述目标资源未添加独占锁、所述共享节点数量为0,且所述第一节点的节点标识位于所述等待节点队列首位。
24.如权利要求23所述的装置,其特征在于,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述处理单元具体用于:
将所述第一节点的节点标识添加到所述等待节点队列中,并将所述独占锁请求节点数量加1;或者
更新所述独占锁指示信息,将所述独占锁请求节点数量减1,将所述等待节点队列中所述第一节点的节点标识删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
25.如权利要求23所述的装置,其特征在于,所述等待节点队列中还包含:每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述处理单元具体用于:
将所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息添加到所述等待节点队列中;或者
更新所述独占锁指示信息,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的指示独占锁的指示信息删除;其中,更新后的所述独占锁指示信息指示所述目标资源已添加独占锁。
26.如权利要求22所述的装置,其特征在于,当所述资源锁为共享锁时,所述锁资源信息还包含独占锁请求节点数量,其中,所述独占锁请求节点数量为所述等待节点队列中请求添加独占锁的节点数量;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述独占锁请求节点数量为0;所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
27.如权利要求26所述的装置,其特征在于,所述处理单元具体用于:
将所述共享节点数量加1;或
将所述共享节点数量加1,以及将所述等待节点队列中所述第一节点的节点标识删除。
28.如权利要求26所述的装置,其特征在于,所述锁资源信息还包含共享锁请求节点数量,其中,所述共享锁请求节点数量为所述等待节点队列中请求添加共享锁的节点数量;
所述处理单元具体用于:
将所述第一节点的节点标识添加到所述等待节点队列中,并将所述共享锁请求节点数量加1;或
将所述共享节点数量加1,将所述共享锁请求节点数量减1,以及将所述等待节点队列中所述第一节点的节点标识删除。
29.如权利要求22所述的装置,其特征在于,当所述资源锁为共享锁时,所述等待节点队列中还包含每个节点的资源锁类型指示信息,其中任一个节点的资源锁类型指示信息用于指示所述节点请求添加资源锁的类型;
所述第一资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述等待节点队列中不包含对应的资源锁类型指示信息指示独占锁的节点;
所述第二资源锁添加条件为:
所述独占锁指示信息指示所述目标资源未添加独占锁,且所述第一节点的节点标识位于所述等待节点队列首位。
30.如权利要求29所述的装置,其特征在于,所述处理单元具体用于:
所述第一节点将所述共享节点数量加1;或将所述共享节点数量加1,将所述等待节点队列中所述第一节点的节点标识和所述第一节点的资源锁类型指示信息删除。
31.如权利要求23-25任一所述的装置,其特征在于,所述处理单元还用于:
对所述目标资源解除所述独占锁,并更新所述独占锁指示信息,其中,更新后的所述独占锁指示信息指示所述目标资源未添加独占锁。
32.如权利要求26-30任一所述的装置,其特征在于,所述处理单元还用于:
对所述目标资源解除所述共享锁,并将所述共享节点数量减1。
33.一种节点,其特征在于,包括:处理器、通信接口和存储器;
所述存储器,用于存储程序指令;
所述处理器,用于通过调用所述存储器存储的程序指令,通过所述通信接口执行如权利要求1至16中任意一项所述的方法。
34.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至16中任一项所述的方法。
CN201910563273.XA 2019-06-26 2019-06-26 一种资源锁管理方法及装置 Pending CN112148695A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910563273.XA CN112148695A (zh) 2019-06-26 2019-06-26 一种资源锁管理方法及装置
PCT/CN2020/091650 WO2020259146A1 (zh) 2019-06-26 2020-05-21 一种资源锁管理方法及装置
US17/557,926 US20220114145A1 (en) 2019-06-26 2021-12-21 Resource Lock Management Method And Apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910563273.XA CN112148695A (zh) 2019-06-26 2019-06-26 一种资源锁管理方法及装置

Publications (1)

Publication Number Publication Date
CN112148695A true CN112148695A (zh) 2020-12-29

Family

ID=73869979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910563273.XA Pending CN112148695A (zh) 2019-06-26 2019-06-26 一种资源锁管理方法及装置

Country Status (3)

Country Link
US (1) US20220114145A1 (zh)
CN (1) CN112148695A (zh)
WO (1) WO2020259146A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113704191A (zh) * 2021-07-23 2021-11-26 郑州云海信息技术有限公司 一种集群文件系统访问方法、装置、设备及可读存储介质
CN114679465A (zh) * 2022-03-28 2022-06-28 北京火山引擎科技有限公司 资源操作方法、装置、电子设备及存储介质
CN117519945A (zh) * 2023-12-07 2024-02-06 北京优炫软件股份有限公司 一种数据库资源调度方法、装置及系统
CN117742979A (zh) * 2024-02-18 2024-03-22 中国电子科技集团公司第十五研究所 一种面向时空数据处理的分布式锁方法及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907117B2 (en) * 2022-06-08 2024-02-20 Dell Products L.P. Efficient method to dynamically select a protection duration for retention locking deduplicated objects

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040002974A1 (en) * 2002-06-27 2004-01-01 Intel Corporation Thread based lock manager
CN101256509A (zh) * 2008-04-07 2008-09-03 中兴通讯股份有限公司 一种锁机制的加锁方法、解锁方法和实现方法
US20090094243A1 (en) * 2004-06-23 2009-04-09 Exanet Ltd. Method for managing lock resources in a distributed storage system
CN102355473A (zh) * 2011-06-28 2012-02-15 用友软件股份有限公司 分布式计算环境下的锁定控制系统和方法
CN104536834A (zh) * 2014-11-26 2015-04-22 华为技术有限公司 一种授权锁权限的方法和分布式锁管理器
CN106991008A (zh) * 2016-01-20 2017-07-28 华为技术有限公司 一种资源锁管理方法、相关设备及系统
CN107181789A (zh) * 2017-03-31 2017-09-19 北京奇艺世纪科技有限公司 一种分布式锁实现方法及装置
CN108990422A (zh) * 2017-03-31 2018-12-11 华为技术有限公司 一种锁分配的方法、装置和计算设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640315B1 (en) * 2000-08-04 2009-12-29 Advanced Micro Devices, Inc. Implementing locks in a distributed processing system
US7346720B2 (en) * 2005-10-21 2008-03-18 Isilon Systems, Inc. Systems and methods for managing concurrent access requests to a shared resource
US7500037B2 (en) * 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
CN101446909B (zh) * 2007-11-30 2011-12-28 国际商业机器公司 用于管理任务事件的方法和系统
US8145817B2 (en) * 2009-04-28 2012-03-27 Microsoft Corporation Reader/writer lock with reduced cache contention
CN102103523A (zh) * 2009-12-22 2011-06-22 国际商业机器公司 锁分配控制的方法和装置
US8868604B2 (en) * 2012-09-26 2014-10-21 Oracle International Corporation Methods and apparatus for implementing Semi-distributed Lock Management
US9747288B1 (en) * 2012-12-10 2017-08-29 Amazon Technologies, Inc. Scalable transaction-based data repository service
CN104376025B (zh) * 2013-08-16 2017-10-10 华为技术有限公司 分布式数据库的数据存储方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040002974A1 (en) * 2002-06-27 2004-01-01 Intel Corporation Thread based lock manager
US20090094243A1 (en) * 2004-06-23 2009-04-09 Exanet Ltd. Method for managing lock resources in a distributed storage system
CN101256509A (zh) * 2008-04-07 2008-09-03 中兴通讯股份有限公司 一种锁机制的加锁方法、解锁方法和实现方法
CN102355473A (zh) * 2011-06-28 2012-02-15 用友软件股份有限公司 分布式计算环境下的锁定控制系统和方法
CN104536834A (zh) * 2014-11-26 2015-04-22 华为技术有限公司 一种授权锁权限的方法和分布式锁管理器
CN106991008A (zh) * 2016-01-20 2017-07-28 华为技术有限公司 一种资源锁管理方法、相关设备及系统
CN107181789A (zh) * 2017-03-31 2017-09-19 北京奇艺世纪科技有限公司 一种分布式锁实现方法及装置
CN108990422A (zh) * 2017-03-31 2018-12-11 华为技术有限公司 一种锁分配的方法、装置和计算设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113704191A (zh) * 2021-07-23 2021-11-26 郑州云海信息技术有限公司 一种集群文件系统访问方法、装置、设备及可读存储介质
CN113704191B (zh) * 2021-07-23 2023-11-03 郑州云海信息技术有限公司 一种集群文件系统访问方法、装置、设备及可读存储介质
CN114679465A (zh) * 2022-03-28 2022-06-28 北京火山引擎科技有限公司 资源操作方法、装置、电子设备及存储介质
CN117519945A (zh) * 2023-12-07 2024-02-06 北京优炫软件股份有限公司 一种数据库资源调度方法、装置及系统
CN117742979A (zh) * 2024-02-18 2024-03-22 中国电子科技集团公司第十五研究所 一种面向时空数据处理的分布式锁方法及电子设备
CN117742979B (zh) * 2024-02-18 2024-04-23 中国电子科技集团公司第十五研究所 一种面向时空数据处理的分布式锁方法及电子设备

Also Published As

Publication number Publication date
WO2020259146A1 (zh) 2020-12-30
US20220114145A1 (en) 2022-04-14

Similar Documents

Publication Publication Date Title
CN112148695A (zh) 一种资源锁管理方法及装置
US10146580B2 (en) Lazy persistent storage volume provisioning
US8775743B2 (en) Resolving ownership deadlock in a distributed shared memory
JP6654183B2 (ja) 通信障害後の分散ワークロード再割り当て
US10002023B2 (en) Method and apparatus for managing one or more tasks of a many-core system using one or more task descriptor entries
CN111258976A (zh) 分布式锁实现方法、系统、设备及存储介质
US9323771B2 (en) Efficient rename in a lock-coupled traversal of B+tree
WO2014173364A1 (zh) 共享资源访问方法和装置
US5682507A (en) Plurality of servers having identical customer information control procedure functions using temporary storage file of a predetermined server for centrally storing temporary data records
WO2021082465A1 (zh) 一种保证数据一致性的方法及相关设备
US9747323B1 (en) Method for reconstruction of a distributed lock state after a node addition or removal using a consistent hash
US10732904B2 (en) Method, system and computer program product for managing storage system
TW201405308A (zh) 用於s列表分配之系統與方法
CN111722933A (zh) 分布式进程之间的死锁解决
US5790868A (en) Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment
CN112099728B (zh) 一种执行写操作、读操作的方法及装置
US5630133A (en) Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment
US20120210074A1 (en) Dual mode reader writer lock
CN110659303A (zh) 一种数据库节点的读写控制方法及装置
US10884992B2 (en) Multi-stream object-based upload in a distributed file system
CN115203133A (zh) 数据处理方法、装置、归约服务器及映射服务器
JP6947421B2 (ja) 監視装置、排他制御システム、プログラム及び制御方法
CN114281765A (zh) 分布式文件系统中的元数据处理方法及设备
KR101889749B1 (ko) 메시지 스케줄링 방법
CN110019057B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20201229