CN114710976B - 一种锁重申方法、锁管理方法以及服务器 - Google Patents

一种锁重申方法、锁管理方法以及服务器 Download PDF

Info

Publication number
CN114710976B
CN114710976B CN202080018013.5A CN202080018013A CN114710976B CN 114710976 B CN114710976 B CN 114710976B CN 202080018013 A CN202080018013 A CN 202080018013A CN 114710976 B CN114710976 B CN 114710976B
Authority
CN
China
Prior art keywords
server
locking
target object
lock
client
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
Application number
CN202080018013.5A
Other languages
English (en)
Other versions
CN114710976A (zh
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
Publication of CN114710976A publication Critical patent/CN114710976A/zh
Application granted granted Critical
Publication of CN114710976B publication Critical patent/CN114710976B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking

Landscapes

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

Abstract

一种锁重申方法、锁管理方法以及服务器,用于减少客户端的非正常重申锁。该方法包括:服务器接收到客户端的锁重申请求后,需要检测该锁重申请求所请求的目标对象的扩展信息上是否存在加锁标识,只在存在加锁标识时才可以对该目标对象进行加锁。

Description

一种锁重申方法、锁管理方法以及服务器
本申请要求于2020年10月16日提交印度专利局、申请号为IN202031045050、发明名称为“LOCK MANAGEMENT METHOD,LOCK MANAGEMENT APPARATUS,AND COMPUTER-READABLESTORAGE MEDIUM”(锁管理方法、锁管理装置及计算机可读存储介质)的印度专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,尤其涉及一种锁重申方法、锁管理方法以及服务器。
背景技术
网络文件***(network file system,NFS)中第3版网络文件***(NFS version3,NFSv3)是一种无状态的网络文件共享协议,可以同时为多个NFS客户端提供文件的读写业务。在实际应用中,为避免多个NFS客户端同时写同一个文件而出现数据不一致,需要在NFS客户端读写时对服务器中的文件执行加锁保护。当服务器故障重启,扩容缩容时会从持久化层读取客户端信息,向客户端发送消息,告知客户端重新申请已经加过的锁。
重申过程中,服务器会设置静默期,静默期间只允许客户端重申锁,不允许新的加锁请求。当静默期结束后,才可以正常接收任意客户端的加锁请求。但在锁重申的过程,客户端可能会重申故障前没有加过的锁。
发明内容
本申请提供了一种锁重申方法、锁管理方法以及服务器,用于减少客户端的非正常重申锁。
本申请第一方面提供了一种锁重申方法,该方法包括:服务器接收来自客户端的锁重申请求;服务器根据锁重申请求确定客户端对应的目标对象,目标对象为客户端在服务器重启后想要加锁的文件;服务器从目标对象对应的扩展信息中的加锁标识对目标对象进行加锁,加锁标识指示目标对象在服务器故障前加过锁。具体的,目标对象可以为文件***中的文件、目录等,也可以为块存储***中的块或者逻辑单元号(logical unit number,LUN),或者对象存储***中的对象。
上述第一方面中,服务器确定有迁入事件时,静默服务器中的各个对象区域,并在特征日志中获取加过锁的客户端信息,以便解除不需要静默的对象区域的静默状态。其中一种实现,在文件***中,对象区域为文件区域或目录区域;在块存储***中,对象区域为块或LUN的元数据区域;在对象存储***中,为对象的元数据区域。服务器重启后,缓存中的数据丢失,各个对象上的锁也都清除,需要提醒客户端重新申请加锁,相应的服务器接收来自客户端的锁重申请求,并从锁重申请求中获取客户端所要重新加锁的目标对象。本申请的服务器中的对象都有对应的扩展信息,该扩展信息中的数据为非易失性数据,服务器可以确定该目标对象的扩展信息中是否存在加锁标识,如果存在该加锁标识,则服务器可以对该目标文件进行加锁,如果不存在加锁标识,则服务器可以拒绝该锁重申请求。本申请只对有加锁标识的对象进行加锁,对于没有加锁标识的对象拒绝客户端的锁重申请求,减少客户端非正常重申锁。
一种可能的实施方式中,扩展信息还包括加锁数量,上述步骤服务器根据锁重申请求对目标对象进行加锁之前,该方法还包括:当目标对象对应的锁重申请求的数量超出锁数量时,服务器标记目标对象锁重申结束。
上述可能的实施方式中,本申请的服务器中每个对象的扩展信息中还包括锁数量,该锁数量可以指示在服务器重启前加过锁的数量。对于客户端的锁重申请求,服务器还需要判断该锁重申请求对应的目标对象,在服务器重启后的进行重申加锁的数量是否超过该锁数量,如果超过则直接拒绝客户端的锁重申请求,如果没超过锁数量,则可以根据客户端的锁重申请求执行相应的加锁操作。这样,可以进一步减少客户端的非正常锁重申。
一种可能的实施方式中,上述步骤服务器根据锁重申请求对目标对象进行加锁之后,该方法还包括:当加锁成功的锁重申请求对应的客户端,及目标对象所在对象区域的加锁关系没有存储在特征日志时,服务器将客户端及目标对象所在对象区域的加锁关系存储在特征日志。
上述可能的实施方式中,服务器可以检测目标成功的客户端以及该对象区域的加锁关系是否存储在特征日志,如果存在,则不进行其他操作,如果不存在,则服务器可以在特征日志存储该加锁关系,以便进行对加锁情况的双重保护。
一种可能的实施方式中,上述步骤服务器接收来自客户端的锁重申请求之前,该方法还包括:服务器接收来自客户端的加锁请求;服务器根据加锁请求确定目标对象;服务器在目标对象对应的扩展信息中存储加锁标识。
上述可能的实施方式中,在服务器重启前,根据客户端的加锁请求中的对象标识,服务器可以确定目标对象,如果该目标对象可以加锁,则在目标对象的扩展信息中存储加锁标识,以便服务器重启后能通过该加锁标识确定该目标对象在服务器重启前加过锁,以提高方案的可行性。
一种可能的实施方式中,扩展信息还包括锁数量,上述步骤服务器在目标对象对应的扩展信息中存储加锁标识之后,该方法还包括:服务器相应增加锁数量。
上述可能的实施方式中,当有多个客户端对目标对象请求加锁时,服务器根据可以加锁成功的请求的数量相应增加锁数量,这样,可以提高方案的可行性。
一种可能的实施方式中,上述步骤服务器在目标对象对应的扩展信息中存储加锁标识之后,该方法还包括:服务器接收来自一个或多个客户端的解锁请求;服务器根据解锁请求确定目标对象;当目标对象的解锁请求的数量与加锁请求的数量相同时,服务器清除加锁标识。
上述可能的实施方式中,服务器在目标对象对应的扩展信息中存储加锁标识之后,如果加锁的客户端不需要加锁了,可以向服务器发送解锁请求。服务器可以在缓存中检测目标对象的解锁请求数量和加锁请求数量,如果解锁请求数量少于加锁请求数量,则保留扩展信息中的加锁标识,如果解锁请求数量等于该加锁请求数量,则服务器删除扩展信息中的加锁标识,可以提高锁重申的可靠性。
一种可能的实施方式中,上述步骤服务器相应增加加锁数量之后,该方法还包括:服务器接收来自客户端的解锁请求;服务器根据解锁请求确定目标对象;服务器相应减少锁数量;当锁数量为0时,服务器清除加锁标识。
上述可能的实施方式中,当扩展信息中包括锁数量时,服务器还需要根据解锁请求相应减少锁数量,如果锁数量为0,则代表该目标对象上没有加锁,则清除加锁标识,以提高锁重申的可靠性。
一种可能的实施方式中,上述步骤服务器根据加锁请求确定目标对象之后,该方法还包括:当客户端及目标对象所在对象区域的加锁关系没有存储在特征日志时,服务器将客户端及目标对象所在对象区域的加锁关系存储在特征日志。
上述可能的实施方式中,将成功加锁的客户端及目标对象所在对象区域的加锁关系存储到特征日志中,以便后续进行锁重申。
本申请第二方面提供了一种锁管理方法,该方法包括:服务器获取目标对象的加锁标识;服务器在目标对象的扩展信息中记录加锁标识。
上述第二方面中,客户端对目标对象申请加锁的加锁请求中携带加锁标识,服务器在加锁请求中获取该加锁标识,并将该加锁标识存储在目标对象的扩展信息中,以便服务器重启后能通过该加锁标识确定该目标对象在服务器重启前加过锁。
一种可能的实施方式中,服务器获取目标对象的锁数量;服务器在目标对象的扩展信息中记录锁数量。
上述可能的实施方式中,当没有解锁请求时,服务器可以将该目标对象在缓存中保存的加锁请求的数量作为目标对象的锁数量,然后记录在目标对象的扩展信息中,以便服务器重启后能通过该锁数量确定在该目标对象加锁的客户端的数量。
一种可能的实施方式中,当释放目标对象的锁时,服务器从目标对象的扩展信息中删除加锁标识。
上述可能的实施方式中,当客户端操作完毕,不需要加锁时,可以向服务器发送解锁请求,相应的,服务器可以释放该目标对象上的锁,并删除扩展信息中的加锁标识。可选的,当目标对象上的锁为写锁或只有一个读锁时,服务器接收到解锁请求即删除该加锁标识,当目标对象上有多个读锁时,如果扩展信息中只有一个加锁标识,则当缓存中该目标对象的加锁请求和接收请求数量相同时,服务器删除该加锁标识,如果扩展信息中有多个加锁标识,服务器接收到解锁请求后可以删除扩展信息中该解锁请求对应的加锁标识。
一种可能的实施方式中,当恢复目标对象的锁时,服务器从硬盘存储的扩展信息中获取加锁标识。
上述可能的实施方式中,当服务器重启后,如果接收到客户端对于目标对象的锁重申请求,可以从硬盘存储的扩展信息中获取加锁标识,如果获取得到该加锁标识,则可以根据该锁重申请求相应对目标对象进行加锁。
一种可能的实施方式中,该方法应用于分布式文件存储***。
本申请第三方面提供了一种服务器,该服务器包括:接收单元,用于接收来自客户端的锁重申请求;确定单元,用于根据锁重申请求确定客户端对应的目标对象,目标对象为客户端在服务器重启后想要加锁的对象;重加锁单元,用于当目标对象对应的扩展信息中确定有加锁标识时,根据锁重申请求对目标对象进行加锁,加锁标识指示目标对象在服务器故障前加过锁。
该服务器用于执行前述第一方面的方法或第一方面任意一种实施方式。
本申请第四方面提供了一种服务器,该服务器包括:获取单元,用于获取目标对象的加锁标识;记录单元,用于在所述目标对象的扩展信息中记录所述加锁标识。
该服务器用于执行前述第二方面的方法或第二方面任意一种实施方式。
本申请第五方面提供了一种计算机设备,包括:处理器、存储器、以及通信接口,该处理器用于执行该存储器中存储的指令,使得计算机设备执行上述第一方面或第一方面任一种可选方式所提供的方法,该通信接口用于接收或发送指示。第五方面提供的计算机设备的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
本申请第六方面提供了一种计算机设备,包括:处理器、存储器、以及通信接口,该处理器用于执行该存储器中存储的指令,使得计算机设备执行上述第二方面或第二方面任一种可选方式所提供的方法,该通信接口用于接收或发送指示。第六方面提供的计算机设备的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。
本申请第七方面提供了一种计算机可读存储介质,该计算机可读存储介质中保存有程序,当该计算机执行程序时,执行前述第一方面或第一方面任一种可选方式提供的方法。
本申请第八方面提供了一种计算机可读存储介质,该计算机可读存储介质中保存有程序,当该计算机执行程序时,执行前述第二方面或第二方面任一种可选方式提供的方法。
本申请第九方面提供了一种计算机程序产品,当该计算机程序产品在计算机上执行时,该计算机执行前述第一方面或第一方面任一种可选方式提供的方法。
本申请第十方面提供了一种计算机程序产品,当该计算机程序产品在计算机上执行时,该计算机执行前述第二方面或第二方面任一种可选方式提供的方法。
附图说明
图1为本申请实施例提供的服务器-客户端***框图;
图2为本申请实施例提供的服务器-客户端的锁恢复场景;
图3为本申请实施例提供的锁重申方法一实施例示意图;
图4为本申请实施例提供的锁重申方法另一实施例示意图;
图5为本申请实施例提供的加锁方法一实施例示意图;
图6为本申请实施例提供的加锁方法另一实施例示意图;
图7为本申请实施例提供的服务器的架构示意图;
图8为本申请实施例提供的服务器一结构示意图;
图9为本申请实施例提供的服务器另一结构示意图;
图10为本申请实施例提供的服务器另一结构示意图;
图11为本申请实施例提供的计算机设备一结构示意图。
具体实施方式
本申请实施例提供了一种锁重申方法、锁管理方法以及服务器,用于减少客户端非正常重申锁。
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面对本申请实施例以在文件***环境为例进行介绍中的一些术语进行描述:
网络文件***(network file system,NFS):网络文件***允许服务器通过网络与客户端共享文件和目录。这允许客户端以与客户端将访问本地文件和目录相同的方式访问远程文件和目录。NFS结构可以提供许多优点。例如,客户端使用较少的存储空间,因为数据可以存储在单个服务器上并且仍然能够由客户端访问。因此,否则将在每个客户端上被复制的数据可以存储在单个位置中并由网络上的多个客户端访问。
文件***:数据存储***的存储设备可以实现一个或多个文件***以组织存储在其上的数据。如本文所使用的,“文件***”可以指文件或目录的结构或组织,并且“文件”可以指一组数据。每个文件可以与文件名相关联,该文件名允许唯一地识别和定位文件。取决于具体要求和期望的应用,可以使用多种不同的文件***。
端口映射(PortMapper)协议,使用固定端口,管理NFS各种服务的端口。
网络锁管理(network lock manager,NLM)协议,在NFS服务启动时,向PortMapper模块注册监听端口。客户端可以通过此协议对文件加锁和解锁,支持阻塞锁和非阻塞锁,支持传输控制协议(transmission control protocol,TCP)和用户数据报协议(userdatagram protocol,UDP)连接。
网络状态监控(network status monitoring,NSM)协议,在NFS服务启动时,向PortMapper模块注册监听端口。客户端和服务器通过此协议告知对方自身的状态,用于客户端故障、服务端故障场景下的NLM的清理和恢复。支持TCP和UDP连接。
图1是本申请实施例提供的服务器-客户端***框图。***100可以包括通过网络102与NFS服务器103(即服务器,此处以NFS服务器示例)通信的客户端101。NFS服务器103可以访问包括文件***1041的存储设备104。虽然被示出和描述为单独的部件,但是可以预期在一些实施例中,存储设备104可以被包括在NFS服务器103中。
实际上,客户端101可以通过网络102发出访问NFS服务器103上的数据对象或对其执行操作的请求。可以将请求封装为由NFS协议定义的标准化消息格式。如本文所使用的,“数据对象”可以指数据、文件、应用、子目录、目录、文件***、它们的组合等中的任何一种。一旦接收到请求,NFS服务器103就可以允许客户端101从存储设备104的文件***1041访问数据对象。例如,NFS服务器103可以将数据对象从文件***1041发送到发出请求的客户端101。在另一个示例中,NFS服务器103可以允许客户端101将文件***1041的远程目录安装在客户端101处的本地目录上。
NFS服务器103还可以允许客户端101对数据对象执行一个或多个操作。例如,客户端101可以打开数据对象、读取数据对象、写入数据对象、关闭数据对象、创建数据对象、锁定数据对象、删除数据对象、委托(delegate)数据对象、其组合等。NFS服务器103可以以状态的形式跟踪这些操作中的一些或全部。NFS服务器103可以跟踪与一个或多个数据对象相关联的这些状态中的一个或多个。在一些实施例中,客户端101可以附加地跟踪这些状态。
在一些实施例中,NFS服务器103可以首先确定客户端101是否具有访问存储设备104的文件***1041中的数据对象或对其执行特定操作的适当许可。如本文所使用的,“许可”定义可以应用于一个或多个用户的访问控制选项。例如,NFS服务器103可以检查与数据对象相关联的元数据,以确保发出请求的用户(例如,与客户端101相关联的用户ID)与数据对象的“读取”操作相关联。如果发出请求的用户不与该操作相关联,则NFS服务器103可以拒绝客户端101对数据对象的访问。
传统上,与非易失性存储器相比,数据对象的状态信息存储在易失性存储器中以便快速访问和更新。但是,如以上所讨论的,当存储***断电时,易失性存储器被擦除。因此,在NFS服务器崩溃或故障的情况下,常规的NFS协议经常依赖于客户端在平稳的恢复时段中将所有先前的状态信息和/或相关数据重新发送到服务器。
此外,即使没有崩溃或故障,一个存储设备上的数据对象的状态信息也可能难以从易失性存储器复制到另一个存储设备上。例如,可能期望用目的地存储设备对源存储设备进行镜像以无缝地替换源存储设备或在给定时间点备份数据。在这种情况下,通常只迁移数据对象本身,可能还期望迁移数据对象的状态,但是,在迁移期间,存储在易失性存储器中的数据(例如,状态信息)通常将不会被迁移到目的地存储设备。
因此,根据本申请的一些实施例,提供了用于捕获和存储与NFS的各种状态对应的状态信息的***和方法。在各个方面,所公开的***和方法可以自动地收集对NFS做出的状态改变并将其同步地写入到非易失性存储装置。在NFS***发生故障或崩溃(例如,NFS服务器的故障)的情况下,可以从非易失性存储装置自动导入与NFS***对应的状态信息,从而使得NFS服务能够被立即且透明地恢复。在迁移的情况下,可以将状态信息从非易失性存储装置传输到目的地存储设备,然后目的地存储设备可以将状态信息导入到存储器中以对源存储设备进行镜像。
图2是本申请实施例提供的服务器-客户端的锁恢复场景,如图2中所示,客户端101包括NSM1模块和NLM1模块,服务器103包括NSM2模块、NLM2模块和锁服务模块。
NLM1模块加锁成功后,会通知NSM1模块保存加锁的服务器信息,由NSM1模块负责持久化此信息。当客户端故障重启时,NSM1从持久化层读取服务器信息,向服务器103的NSM2模块发送通知消息,告知服务器103清理从此客户端101发送的所有加锁请求。
NLM2模块收到加锁请求后,会将请求递交到锁服务模块(LockServer)进行锁业务逻辑的处理(加锁、解锁、锁冲突检查等),并将客户端信息持久化。当服务器103故障重启,扩容缩容时会从持久化层读取客户端信息,向客户端101发送通知消息,告知客户端101重新申请已经加过的锁。重申过程中,服务器103会设置静默期,静默期间只允许客户端101重申锁,不允许新的客户端的加锁请求。当静默期结束后,才可以正常接收任意客户端的加锁请求。
服务器没有保存对哪些文件加过锁,在客户端锁重申的过程中,无法防止客户端重申故障前没有加过的锁,为解决上述问题,本申请实施例提供了一种锁重申方法,该方法包括:服务器接收来自客户端的锁重申请求;服务器根据锁重申请求确定客户端对应的目标文件,目标文件为客户端在服务器重启后想要加锁的文件;服务器从目标文件对应的扩展信息中的加锁标识对目标文件进行加锁,加锁标识指示目标文件在服务器故障前加过锁。这样,客户端只能对在故障前加过锁的文件进行锁重申,减少客户端非正常重申锁。
下面,基于上述的***框架,下面对本申请实施例中的锁重申方法进行描述。
本实施例中的服务器可以为网络附属存储(network attached storage,NAS)服务器,它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。NAS被定义为一种特殊的专用数据存储服务器,包括存储器件(例如磁盘阵列、光盘(compact disc,CD)/数字多功能光盘(digital versatiledisc,DVD)驱动器、磁带驱动器或可移动的存储介质)和内嵌***软件,可提供跨平台文件共享功能。NAS通常在一个局域网(local area network,LAN)上占有自己的节点,无需应用服务器的干预,允许用户在网络上存取数据,在这种配置中,NAS集中管理和处理网络上的所有数据,将负载从应用或企业服务器上卸载下来,有效降低总拥有成本,保护用户投资。
本申请实施例的锁重申方法中,服务器对文件配置有可存储非易失性数据的扩展信息,服务器需要在客户端申请加锁的时候对文件的扩展信息设置加锁标识,在客户端重申锁的时候根据扩展信息的锁标识对锁重申请求进行处理。
一、服务器在客户端重申锁的时候根据扩展信息的锁标识对锁重申请求进行处理。
本申请实施例中,服务器重启后设置有一段静默时间以供客户端进行锁重申,服务器可以配置提前结束静默,也可以不配置提前结束静默。
1.1、服务器不配置提前结束静默。
请参阅图3所示的锁重申方法一实施例包括:
301、当服务器确定迁入事件时,将各个文件区域设置静默,并从特征日志中读取客户端信息。
本实施例应用于第3版网络文件***(NFS version 3,NFSv3)的分布式文件存储***,迁入事件为当服务器中的一个节点故障时,由另一节点接管该故障的节点的物理存储资源。服务器可以将各个文件区域执行静默,以避免其他客户端申请加锁影响故障前客户端的加锁服务。服务器可以从该物理存储资源的特征日志中读取客户端信息,该客户端信息可以为客户端与服务器中的文件所在文件区域的加锁关系,指示该客户端在该文件区域中的某个文件有加锁。
302、对不需要静默的文件区域解除静默。
服务器可以根据客户端信息中客户端与服务器中的文件所在文件区域的加锁关系,确定哪些文件区域在服务器故障前哪些客户端还加过锁。服务器可以将故障前没有加过锁的文件区域解静默,以使得其他客户端的加锁申请可以正常执行。
303、服务器根据客户端信息发送锁重申消息至客户端。
服务器的故障可以是崩溃或其他故障,当服务器重启后,缓存中的数据丢失,各个文件上的锁也都清除,需要客户端在恢复时段(即静默时间)中将所有先前的状态信息和/或相关数据重新发送到服务器,服务器可以向在服务器故障前对文件加过锁的客户端发送锁重申消息,通知该客户端需要对文件锁进行重新申请。
304、客户端根据锁重申消息向服务器发送锁重申请求。
客户端在接收到该锁重申消息后,即可基于缓存记录的文件锁向服务器发送锁重申请求,该锁重申请求中可以包括所要申请重新加锁的目标文件的文件标识。其中,锁重申请求中还包括锁状态回复标志位(reclaim),客户端需要恢复以前申请的文件锁,这时锁重申请求报文中的reclaim设置为1,其他情况下这个值为0。
305、服务器根据锁重申请求确定客户端对应的目标文件。
服务器接收到锁重申请求后,可以根据上述文件标识从文件***中确定客户端所要申请的目标文件。
306、从目标文件对应的扩展信息中的加锁标识对目标文件进行加锁。
文件***中的每个文件都设置有一个扩展信息,该扩展信息用于存储非易失性数据。当服务器确定目标文件,当需要恢复目标文件的锁时,服务器从硬盘存储的所述扩展信息中获取加锁标识,示例性的,可以读取该目标文件对应的扩展信息中的数据到缓存中,如果扩展信息中没有加锁标识,则服务器可以拒绝客户端的锁重申请求,如果该扩展信息中存在该加锁标识,则服务器可以根据锁重申请求相应地对该目标文件进行读加锁或写加锁,其中,该加锁标识用来指示该目标文件在服务器故障前加过锁。可选的,对于目标文件,如果有其他客户端的锁重申,服务器可以不用读取扩展信息,可以直接根据缓存中的数据执行相应操作。
307、当加锁成功的锁重申请求对应的客户端及目标文件所在文件区域的加锁关系没有存储在特征日志时,服务器将客户端及目标文件所在文件区域的加锁关系存储在特征日志。
本实施例中,服务器在扩展信息存在加锁标识,并根据锁重申请求对该目标文件执行相应的加锁操作后,可以判断该客户端与该目标文件所在文件区域的加锁关系是否已经写入特征日志(Feature log)中,如果已经写入,则不用重复写入,如果没有写入,则可以将客户端及目标文件所在文件区域的加锁关系存储在特征日志,以保证数据可靠。
本申请实施例中,服务器从客户端重申的目标文件的扩展信息中确认加锁标识,对于没有加锁标识的文件拒绝客户端的锁重申请求,由于客户端的锁重申请求中的重申的文件不一定是该客户端在服务器故障前加过锁的文件,本实施例对于在服务器故障前没有加过锁的文件可以拒绝客户端的锁重申请求,可以减少客户端非正常重申锁。
1.2、服务器配置提前结束静默。
请参阅图4所示的锁重申方法另一实施例包括:
401、当服务器确定迁入事件时,将各个文件区域设置静默,并从特征日志中读取客户端信息。
402、对不需要静默的文件区域解除静默。
403、服务器根据客户端信息发送锁重申消息至客户端。
404、客户端根据锁重申消息向服务器发送锁重申请求。
405、服务器根据锁重申请求确定客户端对应的目标文件。
本实施例步骤401至步骤405可以参照图3所示锁重申方法中步骤301至步骤305的相关描述,此处不再赘述。
406、当目标文件对应的扩展信息中确定有加锁标识时,如果目标文件对应的锁重申请求的数量达到扩展信息中的锁数量,则服务器标记目标文件的锁重申结束。
本实施例中,文件区域级别的静默影响范围比较大,而且静默时无法提前解除静默,影响时间比较长,一般为60s。静默重申期间,由于NAS服务器没有保存客户端加锁的文件信息,无法防止客户端在重申期间利用重申的规则申请不属于自己的锁。文件***中的每个文件都设置有一个扩展信息,该扩展信息用于存储非易失性数据。当服务器确定目标文件,可以读取该目标文件对应的扩展信息中的数据到缓存中,如果扩展信息中没有加锁标识,则服务器可以拒绝客户端的锁重申请求,如果该扩展信息中存在该加锁标识,服务器还可以获取扩展信息中的锁数量,该锁数量用于指示该目标文件在服务器故障前加过的锁的数量,示例性的,该目标文件在服务器故障前可以设置多个读取锁,服务器可以判断重启后该目标文件的多个锁重申请求的数量是否超出该锁数量,如果超出锁数量,则表示当前的锁重申请求不在该目标文件在服务器故障前加过的锁的范围内,则服务器可以拒绝当前的锁重申请求,并标记该目标文件的锁重申流程结束,即可以提前结束该目标文件的静默。其中,该加锁标识用来指示该目标文件在服务器故障前加过锁。
407、如果目标文件对应的锁重申请求的数量没有超出扩展信息中的锁数量,服务器根据锁重申请求对目标文件进行加锁。
本实施例中,当目标文件的多个锁重申请求的数量没有超出该锁数量时,即表示当前的锁重申请求还在该目标文件在服务器故障前加过的锁的范围内,服务器可以直接根据锁重申请求相应地对该目标文件进行读加锁或写加锁。
408、当加锁成功的锁重申请求对应的客户端及目标文件所在文件区域的加锁关系没有存储在特征日志时,服务器将客户端及目标文件所在文件区域的加锁关系存储在特征日志。
本实施例步骤408可以参照图3所示的锁重申方法中步骤307的相关描述,此处不再赘述。
本申请实施例中,服务器从客户端重申的目标文件的扩展信息中确认加锁标识,对于没有加锁标识的文件拒绝客户端的锁重申请求,由于客户端的锁重申请求中的重申的文件不一定是该客户端在服务器故障前加过锁的文件,本实施例对于在服务器故障前没有加过锁的文件可以拒绝客户端的锁重申请求,可以减少客户端非正常重申锁。
进一步的,当目标文件对应的锁重申请求的数量达到扩展信息中的锁数量时,服务器可以标记目标文件的锁重申结束,即提前结束对该目标文件的静默,其他客户端还可以正常地进行加锁申请,也可以避免客户端在重申期间通过锁重申申请不属于自己的锁,提前结束静默,降低了故障影响的时间。
二、服务器在客户端申请加锁的时候对文件的扩展信息设置加锁标识。
本申请实施例中,服务器重启后设置有一段静默时间以供客户端进行锁重申,服务器可以配置提前结束静默,也可以不配置提前结束静默。
2.1、服务器不配置提前结束静默。
请参阅图5所示的加锁方法一实施例包括:
501、客户端向服务器发送加锁请求。
本实施例中,客户端访问服务器中的文件时可以检查服务器是否存在文件锁,因此所有客户端访问同一个文件时都不会发生冲突。当服务器中该客户端所要访问的文件没有文件锁或者只有读锁时,客户端可以向服务器发送关于该文件的加锁请求。示例性的,该文件上没有文件锁时,客户端可以请求读加锁或写加锁,当该文件上只有读锁时,客户端只可以申请读加锁。
502、服务器根据加锁请求确定目标文件。
客户端发送的加锁请求中包括该客户端所要访问的文件的标识,服务器可以根据该标识确定客户端所要加锁的目标文件。
503、当客户端及目标文件所在文件区域的加锁关系没有存储在特征日志时,服务器将客户端及目标文件所在文件区域的加锁关系存储在特征日志。
服务器可以判断该客户端与该目标文件所在文件区域的加锁关系是否已经写入特征日志(Feature log)中,如果已经写入,则不用重复写入,如果没有写入,则可以将客户端及目标文件所在文件区域的加锁关系存储在特征日志,以作为客户端进行锁重申的依据。
504、服务器在目标文件对应的扩展信息中存储加锁标识。
文件***中的每个文件都设置有一个扩展信息,该扩展信息用于存储非易失性数据。本实施例中,服务器接收到客户端的加锁请求后,可以确定目标文件,获取该目标文件的加锁标识,并可以在该目标文件的扩展信息中保存加锁标识,该加锁标识表示该目标文件当前处于加锁状态,可以用来指示该目标文件在服务器故障前加过锁。
当目标文件有多个可以实施的加锁请求时,扩展信息只记录一次加锁标识,可以节省内存资源。示例性的,目标文件的写锁只有一个,读锁可以一个或多个,当目标文件有多个读锁时,扩展信息中可以只记录一次加锁标识。
505、客户端向服务器发送解锁请求。
客户端对服务器中文件访问结束后,需要解除该文件的加锁状态,可以向该服务器发送关于该文件的解锁请求,其中,向服务器发送解锁请求的客户端可以为一个或多个。
506、服务器根据解锁请求确定目标文件。
本实施例中,服务器根据该解锁请求中包含的文件标识确定客户端要解除加锁状态的目标文件。
507、当目标文件的解锁请求的数量与加锁请求的数量相同时,服务器清除加锁标识。
本实施例中,所有客户端对该目标文件的加锁请求和解锁请求数量都保存在缓存中,服务器可以基于缓存的记录,当目标文件的解锁请求的数量与加锁请求的数量相同时,即当前的解锁请求所要解除的锁为该目标文件的最后一个锁,服务器可以清楚该目标文件对应的扩展信息中的加锁标识,即当释放目标文件的锁时,服务器从目标文件的扩展信息中删除加锁标识。
本申请实施例中,服务器为文件配置扩展信息,该扩展信息中的加锁标识是否存在可以在服务器重启时指示该文件是否加过锁,对于在服务器故障前没有加过锁的文件,服务器可以拒绝客户端的锁重申请求,可以减少客户端非正常重申锁。
2.2、服务器配置提前结束静默。
请参阅图6所示的加锁方法另一实施例包括:
601、客户端向服务器发送加锁请求。
602、服务器根据加锁请求确定目标文件。
603、当客户端及目标文件所在文件区域的加锁关系没有存储在特征日志时,服务器将客户端及目标文件所在文件区域的加锁关系存储在特征日志。
604、服务器在目标文件对应的扩展信息中存储加锁标识。
本实施例步骤601至步骤604可以参照图5所示加锁方法中步骤501至步骤504的相关描述,此处不再赘述。
605、服务器相应增加锁数量。
扩展信息中还包括该目标文件的加的锁的锁数量,当服务器接收到可以实施的加锁请求后,对目标文件执行相应的加锁操作,然后可以获取该目标文件的锁数量,并相应在扩展信息中记录该锁数量,例如,可以对扩展信息中的锁数量执行增加操作。示例性的,服务器对目标文件加锁后则对该锁数量加1。
606、客户端向服务器发送解锁请求。
607、服务器根据解锁请求确定目标文件。
本实施例步骤606至步骤607可以参照图5所示加锁方法中步骤505至步骤506的相关描述,此处不再赘述。
608、服务器相应减少锁数量。
相应的,服务器接收到解锁请求后,则减少目标文件对应的扩展信息中的锁数量。示例性的,接收到一个解锁请求,则该锁数量减1。
609、当锁数量为0时,服务器清除加锁标识。
当目标文件的解锁请求的数量与加锁请求的数量相同时,锁数量相应减少为0,则服务器可以清除目标文件扩展信息中的加锁标识,即当释放目标文件的锁时,服务器从目标文件的扩展信息中删除加锁标识。
本申请实施例中,服务器为文件配置扩展信息,该扩展信息中的加锁标识是否存在可以在服务器重启时指示该文件是否加过锁,以使得在服务器故障前没有加过锁的文件,服务器可以拒绝客户端的锁重申请求,可以减少客户端非正常重申锁。
进一步的,扩展信息还包括锁数量,该锁数量可以在服务器重启后为服务器提供该文件加过的锁的数量,以使得服务器在重启后可以根据该锁数量提前结束文件的静默。
示例性的,本申请实施例中的锁重申方法可以通过一个***架构实现,请参阅图7,本申请实施例服务器的架构示意图,服务器103包括NFS模块1031,锁服务(lock server)模块1032,特征日志模块1033和文件***1034。其中lock server模块1032还包括:恢复(recover)模块10321,锁管理(lock manager)模块10322和持久化(persistent)模块10323。
加锁流程中:
NFS模块1031收到来自客户端的加锁请求后,解析加锁信息,将加锁信息发送到锁管理模块10322。NFS模块1031执行图5中步骤501和505或图6中步骤601和606。
锁管理模块10322判断加锁客户端的信息是否已经写入特征日志模块1033,如果已经写入,不再重复写入,如果之前未写入特征日志模块1033,则将客户端信息写入特征日志模块1033。锁管理模块10322可以执行图5中步骤502、503、506和507或图6中步骤602、603、607和609。
锁管理模块10322将加锁信息发送到持久化模块10323,持久化模块10323判断是否写入文件***。持久化模块10323判断当前服务器是否配置有提前结束静默功能。如果没有提前结束静默功能,则只需要对第一把NFS锁的标识写入文件的扩展信息中。客户端解锁时,对于最后一把锁解锁时,清除文件的扩展信息中的锁标识。如果设置有提前结束静默功能,则将加锁的数量(锁数量)写入文件的扩展信息中。客户端解锁时,刷新文件的扩展信息中的锁数量。锁管理模块10322可以执行图5中步骤504或图6中步骤605和608。
锁重申流程:
恢复模块10321收到迁入事件后,从特征日志模块1033中读取锁客户端信息,然后将客户端信息发送给NFS模块1031。恢复模块10321可以执行图3中步骤301和302或图4中步骤401和402。
NFS模块1031发送锁重申消息到客户端,并接收来自客户端的锁重申请求,解析锁信息,将锁信息发送到锁管理模块10322。NFS模块1031可以执行图3中步骤303和304或图4中步骤403和404。
锁管理模块10322通过持久化模块10323读取扩展信息,如果已经读取过,不需要重复读取,直接从缓存中读取即可。如果没有设置提前结束静默功能,则只需要判断是否有加锁标识。如果有加锁标识,则进行锁重申的逻辑判断。如果没有加锁标识,则返回错误,拒绝客户端的锁重申。如果设置有提前结束静默功能,则判断重申的锁个数是否与读取到的锁个数相等,如果小于读取的锁个数,则进行锁重申的逻辑判断。如果锁重申的锁个数已经等于读取到的锁个数,则标记锁重申结束。持久化模块10323可以执行图3中步骤306或图4中步骤406和407。
锁管理模块10322判断加锁客户端的信息是否已经写入特征日志模块1033,如果已经写入,不再重复写入,如果之前未写入特征日志模块1033,则将客户端信息写入特征日志模块1033。锁管理模块10322可以执行图3中步骤305和307或图4中步骤405和408。
以上描述了锁重申方法,下面结合附图介绍本申请实施例的服务器。
图8为本申请实施例中服务器80的一实施例示意图。
如图8所示,本申请实施例提供了服务器80一结构包括:
接收单元801,用于接收来自客户端的锁重申请求;
确定单元802,用于根据锁重申请求确定客户端对应的目标对象,目标对象为客户端在服务器重启后想要加锁的对象;
重加锁单元803,用于从目标对象对应的扩展信息中的加锁标识对目标对象进行加锁,加锁标识指示目标对象在服务器故障前加过锁。
如图9所示,本申请实施例提供了服务器90另一结构包括:
接收单元901,用于接收来自客户端的锁重申请求;
确定单元902,用于根据锁重申请求确定客户端对应的目标对象,目标对象为客户端在服务器重启后想要加锁的对象;
重加锁单元903,用于从目标对象对应的扩展信息中的加锁标识对目标对象进行加锁,加锁标识指示目标对象在服务器故障前加过锁。
可选的,扩展信息还包括加锁数量,服务器还包括标记单元904,标记单元904具体用于:当目标对象对应的锁重申请求的数量超出锁数量时,标记目标对象锁重申结束。
具体的,目标对象可以为文件***中的文件、目录等,也可以为块存储***中的块或者逻辑单元号(Logical Unit Number,LUN),或者对象存储***中的对象。
可选的,服务器还包括第一存储单元905,第一存储单元905具体用于:当加锁成功的锁重申请求对应的客户端,及目标对象所在对象区域的加锁关系没有存储在特征日志时,将客户端及目标对象所在对象区域的加锁关系存储在特征日志。其中一种实现,在文件***中,对象区域为文件区域或目录区域;在块存储***中,对象区域为块或LUN的元数据区域;在对象存储***中,为对象的元数据区域。
可选的,服务器还包括加锁单元906,加锁单元906具体用于:接收来自客户端的加锁请求;根据加锁请求确定目标对象,目标对象为客户端所要加锁的对象;在目标对象对应的扩展信息中存储加锁标识。
可选的,扩展信息还包括锁数量,加锁单元还用于:相应增加锁数量。
可选的,服务器还包括第一解锁单元907,第一解锁单元907具体用于:接收来自一个或多个客户端的解锁请求;根据解锁请求确定目标对象,目标对象为目标对象;当目标对象的解锁请求的数量与加锁请求的数量相同时,清除加锁标识。
可选的,服务器还包括第二解锁单元908,第二解锁单元908具体用于:接收来自客户端的解锁请求;根据解锁请求确定目标对象;相应减少锁数量;当目标对象的解锁请求的数量与加锁请求的数量相同时,清除加锁标识。
可选的,服务器还包括第二存储单元909,第二存储单元909具体用于:当客户端及目标对象所在对象区域的加锁关系没有存储在特征日志时,将客户端及目标对象所在对象区域的加锁关系存储在特征日志。
如图10所示,本申请实施例提供了服务器100另一结构包括:
获取单元1001,用于获取目标对象的加锁标识;
记录单元1002,用于在目标对象的扩展信息中记录加锁标识。
可选的,获取单元1001,还用于获取目标对象的锁数量;记录单元1002,还用于在目标对象的扩展信息中记录锁数量。
可选的,服务器100还包括删除单元1003,删除单元1003,用于当释放目标对象的锁时,从目标对象的扩展信息中删除加锁标识。
可选的,服务器100还包括读取单元1004,读取单元1004,用于当恢复目标对象的锁时,从硬盘存储的扩展信息中获取加锁标识。
可选的,服务器100应用于分布式文件存储***。
图11所示,为本申请的实施例提供的计算机设备110的一种可能的逻辑结构示意图。计算机设备110包括:处理器1101、通信接口1102、存储***1103以及总线1104。处理器1101、通信接口1102以及存储***1103通过总线1104相互连接。在本申请的实施例中,处理器1101用于对计算机设备110的动作进行控制管理,例如,处理器1101用于执行图3方法实施例中存储管理装置所执行的步骤。通信接口1102用于支持计算机设备110进行通信。存储***1103,用于存储计算机设备110的程序代码和数据。
其中,处理器1101可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1101也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线1104可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本发明实施例上述各实施例中的模块或单元,具体实现可以由软件实现,例如由指令实现,也可以由硬件实现,或者由软件和硬件实现。本发明实施例对此不作限定。本发明实施例可以用于支持文件***的存储阵列中,还可以用于对文件***中的目录的进行本发明实施例上述操作。另外,本发明实施例还可以应用于块存储***或对象存储***。块存储***可以是分布式块存储***或存储阵列,在块存储***中,本发明实施例上述操作可以用于对块或LUN的操作。在对象存储***中,本发明实施例上述操作可以应用于对象存储***中的对象。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的处理器执行该计算机执行指令时,设备执行上述图3至图6中服务器所执行的锁重申方法的步骤。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;当设备的处理器执行该计算机执行指令时,设备执行上述图3至图6中服务器所执行的锁重申方法的步骤。
本发明实施例中的服务器可以为锁服务器、存储阵列中的阵列控制器、分布式存储***中的提供相应功能的服务器等,本发明实施例对此不作限定。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (25)

1.一种锁重申方法,其特征在于,包括:
服务器接收来自客户端的锁重申请求;
所述服务器根据所述锁重申请求确定所述客户端对应的目标对象,所述目标对象为所述客户端在所述服务器重启后想要加锁的对象,所述目标对象具有包括加锁标识和锁数量的扩展信息,所述锁数量指示所述目标对象在所述服务器故障前加过的锁的数量;
当所述目标对象对应的锁重申请求的数量超出所述锁数量时,所述服务器标记所述目标对象锁重申结束;
当所述目标对象对应的锁重申请求的数量没有超出所述锁数量时,所述服务器根据所述加锁标识对所述目标对象进行加锁,所述加锁标识指示所述目标对象在所述服务器故障前加过锁。
2.根据权利要求1所述的锁重申方法,其特征在于,所述服务器根据所述锁重申请求对所述目标对象进行加锁之后,所述方法还包括:
当加锁成功的所述锁重申请求对应的所述客户端,及所述目标对象所在对象区域的加锁关系没有存储在特征日志时,所述服务器将所述客户端及所述目标对象所在对象区域的加锁关系存储在所述特征日志。
3.根据权利要求1所述的锁重申方法,其特征在于,所述服务器接收来自客户端的锁重申请求之前,所述方法还包括:
所述服务器接收来自所述客户端的加锁请求;
所述服务器根据所述加锁请求确定所述目标对象;
所述服务器在所述目标对象对应的扩展信息中存储所述加锁标识。
4.根据权利要求3所述的锁重申方法,其特征在于,所述扩展信息还包括锁数量,所述服务器在所述目标对象对应的扩展信息中存储所述加锁标识之后,所述方法还包括:
所述服务器相应增加所述锁数量。
5.根据权利要求3所述的锁重申方法,其特征在于,所述服务器在所述目标对象对应的扩展信息中存储所述加锁标识之后,所述方法还包括:
所述服务器接收来自一个或多个客户端的解锁请求;
所述服务器根据所述解锁请求确定所述目标对象;
当所述解锁请求的数量与所述加锁请求的数量相同时,所述服务器清除所述加锁标识。
6.根据权利要求4所述的锁重申方法,其特征在于,所述服务器相应增加所述锁数量之后,所述方法还包括:
所述服务器接收来自所述客户端的解锁请求;
所述服务器根据所述解锁请求确定所述目标对象;
所述服务器相应减少所述锁数量;
当所述锁数量为0时,所述服务器清除所述加锁标识。
7.根据权利要求3所述的锁重申方法,其特征在于,所述服务器根据所述加锁请求确定所述目标对象之后,所述方法还包括:
当所述客户端及所述目标对象所在对象区域的加锁关系没有存储在特征日志时,所述服务器将所述客户端及所述目标对象所在对象区域的加锁关系存储在所述特征日志。
8.一种锁管理方法,其特征在于,所述方法包括:
服务器获取目标对象的加锁标识;
所述服务器在所述目标对象的扩展信息中记录所述加锁标识,所述加锁标识指示所述目标对象在所述服务器故障前加过锁;
所述服务器获取所述目标对象的锁数量;
所述服务器在所述目标对象的扩展信息中记录所述锁数量,所述锁数量用于指示可进行锁重申的客户端的数量。
9.根据权利要求8所述的锁管理方法,其特征在于,所述方法还包括:
当释放所述目标对象的锁时,所述服务器从所述目标对象的扩展信息中删除所述加锁标识。
10.根据权利要求8所述的锁管理方法,其特征在于,所述方法还包括:
当恢复所述目标对象的锁时,所述服务器从硬盘存储的所述扩展信息中获取所述加锁标识。
11.根据权利要求8-10任一所述的锁管理方法,其特征在于,所述方法应用于分布式文件存储***。
12.一种服务器,其特征在于,包括:
接收单元,用于接收来自客户端的锁重申请求;
确定单元,用于根据所述锁重申请求确定所述客户端对应的目标对象,所述目标对象为所述客户端在所述服务器重启后想要加锁的对象,所述目标对象具有包括加锁标识和锁数量的扩展信息,所述锁数量指示所述目标对象在所述服务器故障前加过的锁的数量;
标记单元,当所述目标对象对应的锁重申请求的数量超出所述锁数量时,标记所述目标对象锁重申结束;
重加锁单元,用于当所述目标对象对应的锁重申请求的数量没有超出所述锁数量时,根据所述加锁标识对所述目标对象进行加锁,所述加锁标识指示所述目标对象在所述服务器故障前加过锁。
13.根据权利要求12所述的服务器,其特征在于,所述服务器还包括第一存储单元,所述第一存储单元具体用于:
当加锁成功的所述锁重申请求对应的所述客户端,及所述目标对象所在对象区域的加锁关系没有存储在特征日志时,将所述客户端及所述目标对象所在对象区域的加锁关系存储在所述特征日志。
14.根据权利要求12所述的服务器,其特征在于,所述服务器还包括加锁单元,所述加锁单元具体用于:
接收来自所述客户端的加锁请求;
根据所述加锁请求确定所述目标对象;
在所述目标对象对应的扩展信息中存储所述加锁标识。
15.根据权利要求14所述的服务器,其特征在于,所述扩展信息还包括锁数量,所述加锁单元还用于:
相应增加所述锁数量。
16.根据权利要求14所述的服务器,其特征在于,所述服务器还包括第一解锁单元,所述第一解锁单元具体用于:
接收来自一个或多个客户端的解锁请求;
根据所述解锁请求确定所述目标对象;
当所述目标对象的解锁请求的数量与所述加锁请求的数量相同时,清除所述加锁标识。
17.根据权利要求15所述的服务器,其特征在于,所述服务器还包括第二解锁单元,所述第二解锁单元具体用于:
接收来自所述客户端的解锁请求;
根据所述解锁请求确定所述目标对象;
相应减少所述锁数量;
当所述锁数量为0时,清除所述加锁标识。
18.根据权利要求14所述的服务器,其特征在于,所述服务器还包括第二存储单元,所述第二存储单元具体用于:
当所述客户端及所述目标对象所在对象区域的加锁关系没有存储在特征日志时,将所述客户端及所述目标对象所在对象区域的加锁关系存储在所述特征日志。
19.一种服务器,其特征在于,包括:
获取单元,用于获取目标对象的加锁标识;
记录单元,用于在所述目标对象的扩展信息中记录所述加锁标识,所述加锁标识指示所述目标对象在所述服务器故障前加过锁;
所述获取单元,还用于获取所述目标对象的锁数量;
所述记录单元,还用于在所述目标对象的扩展信息中记录所述锁数量,所述锁数量用于指示可进行锁重申的客户端的数量。
20.根据权利要求19所述的服务器,其特征在于,所述服务器还包括删除单元,
所述删除单元,用于当释放所述目标对象的锁时,从所述目标对象的扩展信息中删除所述加锁标识。
21.根据权利要求19所述的服务器,其特征在于,所述服务器还包括读取单元,
所述读取单元,用于当恢复所述目标对象的锁时,从硬盘存储的所述扩展信息中获取所述加锁标识。
22.根据权利要求19-21任一所述的服务器,其特征在于,所述服务器应用于分布式文件存储***。
23.一种计算机设备,其特征在于,包括:处理器以及存储器,
所述处理器用于执行所述存储器中存储的指令,使得所述计算机设备执行权利要求1至7中任一项所述的方法。
24.一种计算机设备,其特征在于,包括:处理器以及存储器,
所述处理器用于执行所述存储器中存储的指令,使得所述计算机设备执行权利要求8至11中任一项所述的方法。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在所述计算机上运行时,使得所述计算机执行如权利要求1至11中任一项所述的方法。
CN202080018013.5A 2020-10-16 2020-12-31 一种锁重申方法、锁管理方法以及服务器 Active CN114710976B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN202031045050 2020-10-16
IN202031045050 2020-10-16
PCT/CN2020/141986 WO2022077777A1 (zh) 2020-10-16 2020-12-31 一种锁重申方法、锁管理方法以及服务器

Publications (2)

Publication Number Publication Date
CN114710976A CN114710976A (zh) 2022-07-05
CN114710976B true CN114710976B (zh) 2023-06-16

Family

ID=81207627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080018013.5A Active CN114710976B (zh) 2020-10-16 2020-12-31 一种锁重申方法、锁管理方法以及服务器

Country Status (2)

Country Link
CN (1) CN114710976B (zh)
WO (1) WO2022077777A1 (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105208124A (zh) * 2015-09-29 2015-12-30 华为技术有限公司 管理锁的方法及装置、确定锁管理服务器的方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143097B1 (en) * 2003-07-30 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for migrating file locks from one server to another
CN102375955A (zh) * 2010-08-17 2012-03-14 伊姆西公司 网络文件***联合命名空间内文件加锁的***与方法
US9304861B2 (en) * 2013-06-27 2016-04-05 International Business Machines Corporation Unobtrusive failover in clustered network-attached storage
JP6388290B2 (ja) * 2014-11-12 2018-09-12 華為技術有限公司Huawei Technologies Co.,Ltd. 分散システムにおけるロック・サーバの故障を処理するための方法およびシステム
CN109359081B (zh) * 2015-12-14 2022-05-17 华为技术有限公司 一种集群中锁管理的方法、锁服务器及客户端
CN110990190A (zh) * 2019-10-31 2020-04-10 苏州浪潮智能科技有限公司 一种分布式文件锁故障处理方法、***、终端及存储介质
CN111125048B (zh) * 2019-12-06 2022-04-22 浪潮电子信息产业股份有限公司 一种故障通知方法、装置、设备及计算机可读存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105208124A (zh) * 2015-09-29 2015-12-30 华为技术有限公司 管理锁的方法及装置、确定锁管理服务器的方法及装置

Also Published As

Publication number Publication date
CN114710976A (zh) 2022-07-05
WO2022077777A1 (zh) 2022-04-21

Similar Documents

Publication Publication Date Title
US6915391B2 (en) Support for single-node quorum in a two-node nodeset for a shared disk parallel file system
KR100825720B1 (ko) 파일 시스템에서 파일 관리 방법 및 이를 위한 메타데이터서버
US9176853B2 (en) Managing copy-on-writes to snapshots
US20120259820A1 (en) Method and system for restarting file lock services at an adoptive node during a network filesystem server migration or failover
US8380951B1 (en) Dynamically updating backup configuration information for a storage cluster
JP4726909B2 (ja) ストレージ階層内のデータの冗長記憶を管理する方法、システムおよびコンピュータ・プログラム
CN108352995B (zh) 一种smb业务故障处理方法和存储设备
CN115277145B (zh) 分布式存储访问授权管理方法、***、设备和可读介质
CN112130959B (zh) 一种虚拟机的保护***及方法
CN111708744A (zh) 基于无状态协议维护文件锁的方法、***、设备及介质
US20240187248A1 (en) Techniques for data retrieval using cryptographic signatures
EP3579501B1 (en) Message transmission method and device in cluster file system
CN108133034B (zh) 共享存储访问方法及相关装置
CN114710976B (zh) 一种锁重申方法、锁管理方法以及服务器
CN116560904A (zh) Nas数据备份容灾方法、***、终端及存储介质
US20230401337A1 (en) Two person rule enforcement for backup and recovery systems
US6711588B1 (en) File management method for file system
CN111176886B (zh) 一种数据库模式的切换方法、装置及电子设备
US20240256575A1 (en) Access authorization for report data in a multi-tenancy data management system
US20240054052A1 (en) Failover recovery techniques for multi cloud recovery
US20240202162A1 (en) Immutable object locking for snapshot management
US20240256400A1 (en) Multi-tenancy for large scale data management
US20240143454A1 (en) System and techniques for backing up scalable computing objects
US20230393947A1 (en) Archiving computing snapshots to multiple locations in accordance with a service level agreement
WO2024098762A1 (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