CN112839099B - 一种分布式字节锁检测控制的方法和设备 - Google Patents
一种分布式字节锁检测控制的方法和设备 Download PDFInfo
- Publication number
- CN112839099B CN112839099B CN202110124107.7A CN202110124107A CN112839099B CN 112839099 B CN112839099 B CN 112839099B CN 202110124107 A CN202110124107 A CN 202110124107A CN 112839099 B CN112839099 B CN 112839099B
- Authority
- CN
- China
- Prior art keywords
- file
- byte
- information
- lock
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 95
- 238000001514 detection method Methods 0.000 title claims description 19
- 230000004044 response Effects 0.000 claims abstract description 44
- 230000008569 process Effects 0.000 claims description 62
- 230000006854 communication Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 10
- 241001362551 Samba Species 0.000 claims description 9
- 230000000903 blocking effect Effects 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明提供了一种分布式字节锁检测控制的方法和设备,该方法包括:响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一数据库中;响应于分布式节点中的第二节点打开文件,判断第二数据库中是否存在文件的字节锁的信息;响应于第二数据库中没有文件的字节锁的信息,向所有节点的数据库发送同步请求;响应于第一数据库接收到请求,将文件的字节锁的信息发送到第二数据库中;响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突;响应于不冲突,第二节点对文件的文件句柄添加字节锁。通过使用本发明的方案,能够避免通道线程间的字节锁影响。
Description
技术领域
本领域涉及计算机领域,并且更具体地涉及一种分布式字节锁检测控制的方法和设备。
背景技术
SMB(一种用于不同网络节点间的共享传输协议)字节锁为多客户端进程以共享或互斥方式读写SMB服务端文件的不同区域提供了更准确的控制方法,当一个客户端进程以读写共享模式打开一个文件时,其他客户端进程就可以并行访问一个文件,此时如果需要约束两个客户端对文件同一个区段范围以互斥的方式进行写数据,则需要每个客户端在写操作之前添加上SMB字节锁。
Samba(实现SMB协议,用于从Linux服务端向Windows客户端提供共享服务的应用)原生多通道是针对SMB 2.2及之后多通道协议的一个实现方案,在支持网络多通道的网卡上可以更加充分发挥网卡的传输性能。Samba多通道多线程是针对原生Samba多通道功能的一个开发扩展,在Samba多通道多线程条件下,每个网络通道的传输单独和一个线程绑定,这样各个通道的数据转发处理互不影响,一个通道出现相对耗时的文件操作时,另一个通道可以继续完成其他的文件读写动作。
在Samba多通道多线程条件下,为了避免集群环境下跨节点收发消息时,两个线程错误地接收到同一个操作句柄消息,将每个通道线程设计为单独一个消息上下文,每个消息上下文包含了自身的线程TID(线程控制符),这样SMBD(Samba的服务进程名)进程间的消息通信本质上转为各个通道线程间的消息通信。由于每个通道线程的字节锁检测是根据自身的消息上下文进行判断比较,这样原本需要实现为进程隔离的字节锁就会错误地转为线程隔离,并造成同一个SMBD进程中一个通道线程添加的字节锁之后,另一个通道线程读写同一个文件相同区域时,就会检测到访问冲突导致无法进一步写数据。
发明内容
有鉴于此,本发明实施例的目的在于提出一种分布式字节锁检测控制的方法和设备,通过使用本发明的技术方案,能够使同一个SMBD进程的不同通道线程访问同一个文件的字节锁时不受影响,能够实现多通道多线程条件下的分布式字节锁检测和控制效果。
基于上述目的,本发明的实施例的一个方面提供了一种分布式字节锁检测控制的方法,包括以下步骤:
响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一节点的第一数据库中;
响应于分布式节点中的第二节点打开文件,判断第二节点的第二数据库中是否存在文件的字节锁的信息;
响应于第二数据库中没有文件的字节锁的信息,向所有节点的数据库发送同步请求;
响应于第一数据库接收到请求,将文件的字节锁的信息发送到第二数据库中;
响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突;
响应于不冲突,第二节点对文件的文件句柄添加字节锁。
根据本发明的一个实施例,还包括:
将分布式节点中的每个通道线程分别设置为采用独立的消息通信上下文以使每个通道线程的消息在分布式数据库中收发互不影响。
根据本发明的一个实施例,将分布式节点中的每个通道线程分别设置为采用独立的消息通信上下文包括:
服务端的SMBD进程初始化主线程的消息上下文并注册消息接收函数;
客户端建立SMB连接,将Samba服务端中的SMBD子进程的主线程默认为主通道以进行正常的SMB请求处理;
响应于客户端发起文件读写操作且服务端支持多通道,客户端在读写过程再次发起新的SMB连接;
响应于服务端SMBD进程检测到同一客户端的标识符,将整个SMB会话转移至同一个SMBD子进程处理;
响应于SMBD子进程收到连接转移请求,开启新的通道线程单独处理转移的SMB会话并且初始化通道线程的消息上下文。
根据本发明的一个实施例,还包括:
将第二节点对文件的文件句柄添加字节锁的信息记录到第二数据库中。
根据本发明的一个实施例,响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一节点的第一数据库中包括:
第一节点以共享读写的方式打开文件,并对文件的权限进行校验;
响应于文件的权限校验通过,向客户端返回一个全局标识符以标识当前的文件句柄;
客户端向服务端发送对文件句柄添加字节锁的请求;
响应于服务端接收到对文件句柄添加字节锁的请求,判断对文件句柄添加字节锁是否存在冲突;
响应于不存在冲突,确认加锁成功并将字节锁的信息记录到第一数据库中。
根据本发明的一个实施例,字节锁的信息包括:文件句柄、字节锁类型、起始位置、锁定长度、以及SMBD进程的PID。
根据本发明的一个实施例,还包括:
响应于第二节点将对文件添加的字节锁信息与接收到的字节锁的信息冲突,向第二节点返回加锁失败的警告。
根据本发明的一个实施例,响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突包括:
判断将对文件添加的字节锁信息中的字节锁类型与字节锁的信息中的字节锁类型是否都为读类型;
响应于都为读类型,判断将对文件添加的字节锁信息中的字节锁范围与字节锁的信息中的字节锁范围是否有重叠区段;
响应于没有重叠区段,判断将对文件添加的字节锁信息中的PID信息与字节锁的信息中的PID信息是否相同。
响应于相同,判断第二节点将对文件添加的字节锁信息与接收到的字节锁的信息不冲突。
根据本发明的一个实施例,字节锁的加锁方式包括阻塞字节锁和非阻塞字节锁。
本发明的实施例的另一个方面,还提供了一种分布式字节锁检测控制的设备,设备包括:
记录模块,记录模块配置为响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一节点的第一数据库中;
第一判断模块,判断模块配置为响应于分布式节点中的第二节点打开文件,判断第二节点的第二数据库中是否存在文件的字节锁的信息;
同步模块,同步模块配置为响应于第二数据库中没有文件的字节锁的信息,向所有节点的数据库发送同步请求;
传输模块,传输模块配置为响应于第一数据库接收到请求,将文件的字节锁的信息发送到第二数据库中;
第二判断模块,第二判断模块配置为响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突;
加锁模块,加锁模块配置为响应于不冲突,第二节点对文件的文件句柄添加字节锁。
本发明具有以下有益技术效果:本发明实施例提供的分布式字节锁检测控制的方法,通过响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一节点的第一数据库中;响应于分布式节点中的第二节点打开文件,判断第二节点的第二数据库中是否存在文件的字节锁的信息;响应于第二数据库中没有文件的字节锁的信息,向所有节点的数据库发送同步请求;响应于第一数据库接收到请求,将文件的字节锁的信息发送到第二数据库中;响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突;响应于不冲突,第二节点对文件的文件句柄添加字节锁的技术方案,能够使同一个SMBD进程的不同通道线程访问同一个文件的字节锁时不受影响,能够实现多通道多线程条件下的分布式字节锁检测和控制效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明一个实施例的分布式字节锁检测控制的方法的示意性流程图;
图2为根据本发明一个实施例的分布式字节锁检测控制的设备的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
基于上述目的,本发明的实施例的第一个方面,提出了一种分布式字节锁检测控制的方法的一个实施例。图1示出的是该方法的示意性流程图。
如图1中所示,该方法可以包括以下步骤:
S1响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一节点的第一数据库中,当在一个节点上添加字节锁成功后,字节锁只会在当前节点的数据库中进行保存,若其他节点不存在对同一文件的加锁访问,则不再触发当前字节锁记录的同步,这样可以避免过多的无用消息传递,第一数据库为分布式TDB(用于记录数据的一种数据库组织形式)数据库;
S2响应于分布式节点中的第二节点打开文件,判断第二节点的第二数据库中是否存在文件的字节锁的信息,若第二节点的客户端开始加锁与第一个节点相同的文件,则会首先判断第二节点中是否有该文件的加锁信息,如果有则判断是否有冲突,如果没有则向其他节点发送同步请求,第二数据库也是分布式TDB数据库;
S3响应于第二数据库中没有文件的字节锁的信息,向所有节点的数据库发送同步请求;
S4响应于第一数据库接收到请求,将文件的字节锁的信息发送到第二数据库中,当收到其他节点的同步请求时,节点存储器中存储的字节锁的信息才会发送到其他节点中,这样可以避免过多的无用消息传递;
S5响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突;
S6响应于不冲突,第二节点对文件的文件句柄添加字节锁。如果冲突则向第二节点的客户端返回相应的警告。
分布式SMB字节锁的实现采用了分布式TDB数据库的方式,当一个客户端进程发出SMB字节锁动作之后,在TDB数据库中对此字节锁新增一条数据库记录,数据库记录的关键字是为文件句柄ID,记录内容为SMBD服务进程的SERVER_ID(SMBD进程中表示进程或线程ID的一种组合形式,包含了节点编号信息)、字节锁在文件中的偏移位置、和锁定长度;各个数据库记录按照不同文件进行区分,同一个文件支持添加多个范围段的SMB字节锁。
其中,服务进程SERVER_ID同时包含了两个组成元素:集群节点编号NODE_ID,和SMBD服务进程PID(标识符),通过一个SERVER_ID,就可以唯一确认集群中的SMBD服务进程。
对于集群同一节点的多个客户端读写,不同的SMBD进程都在同一个节点上执行,所有SMBD进程通过同一个TDB数据库的字节锁记录来区分文件的字节锁占用情况。对于集群不同节点的多个客户端读写,分布式TDB数据库会将当前字节锁记录的内容同步至对端节点,这样对端查询在加锁之前会判断客户端请求的字节锁范围是否和现有的字节锁范围有冲突,从而达到分布式字节锁的控制效果。
不同SMBD服务进程之间没有直接的运行依赖关系,但是需要涉及到租约降级、文件变动等功能的通知消息,因此涉及到相互之间的通信完全采用UNIX数据报消息方式,每个进程分别创建一个UNIX数据报套接字,并绑定自己的本地进程信息结构,这样各个SMBD进程之间只需要指定目的进程PID即可直接发送消息通知。
对于跨节点消息通知,单独的PID无法直接发送到对端,此时需要指定完整的SMBD进程SERVER_ID信息,并由分布式TDB数据库模块完成节点间的消息传送;SMBD进程和分布式TDB数据库之间是一个连接通信方式,在多通道多线程条件下,如果分布式TDB向一个线程发送回应消息的话,有可能被另一个通道线程接收,单一的连接句柄无法满足多个线程的消息接收。因此为了支持集群跨节点数据同步,同一个SMBD进程的每个线程采用独立的UNIX SOCKET套接字,和UNIX数据报套接字。
通过本发明的技术方案,能够使同一个SMBD进程的不同通道线程访问同一个文件的字节锁时不受影响,能够实现多通道多线程条件下的分布式字节锁检测和控制效果。
在本发明的一个优选实施例中,还包括:
将分布式节点中的每个通道线程分别设置为采用独立的消息通信上下文以使每个通道线程的消息在分布式数据库中收发互不影响。
在本发明的一个优选实施例中,将分布式节点中的每个通道线程分别设置为采用独立的消息通信上下文包括:
服务端的SMBD进程初始化主线程的消息上下文并注册消息接收函数;
客户端建立SMB连接,将Samba服务端中的SMBD子进程的主线程默认为主通道以进行正常的SMB请求处理;
响应于客户端发起文件读写操作且服务端支持多通道,客户端在读写过程再次发起新的SMB连接;
响应于服务端SMBD进程检测到同一客户端的标识符,将整个SMB会话转移至同一个SMBD子进程处理;
响应于SMBD子进程收到连接转移请求,开启新的通道线程单独处理转移的SMB会话并且初始化通道线程的消息上下文。
采用多通道多线程设计的条件下,每个通道线程在读写数据时,都会触发TDB数据库的访问,在分布式环境下,在一个节点上触发数据库访问时,若当前数据库内容不是最新,则还会进一步触发TDB数据的迁移。SMBD进程和TDB数据库模块采用了UNIX SOCKET(套接字)连接,如果每个通道线程都采用同一个连接句柄,就会导致一个通道线程发出TDB访问请求时,另一个通道线程收到访问应答。因此每个通道线程先用单独的消息通信模块。
另外,文件的读写访问会在某些情况下触发文件变动通告、租约降级通告等,当一个通道线程触发了这些变动时,则需要向其他SMBD进程发送一次变动通告,通道线程只负责读写,因此文件变动、租约降级等特殊消息的处理统一发送到SMBD主线程去处理。综合来看,消息通信的控制方式有同一节点的SMBD通信,主要包括:SMBD进程1主线程和SMBD进程2主线程的双向通信;SMBD进程1通道线程到SMBD进程2主线程的单向通信;客户端打开一个文件时,TDB数据库会记录该文件的所有打开进程的PID信息,当SMBD进程1需要触发文件变动、租约降级通告时,遍历到其中的PID信息,然后构造消息头,以对应的PID为目的进程发送过去。分布式跨节点SMBD通信主要包括:节点A SMBD进程1主线程和节点B SMBD进程3主线程的双向通信;节点A SMBD进程1通道线程和节点B SMBD进程3主线程的单向通信;TDB数据库会记录一个被打开文件的所有占用者SMBD进程的PID信息,对于分布式节点,节点的PID会连同SMBD进程的PID一块存储,当要通知的目的节点是一个远端节点时,分布式TDB数据库会将消息直接发送到远端,远端的TDB数据库模块再进一步通知到所在节点的SMBD进程。
在本发明的一个优选实施例中,还包括:
将第二节点对文件的文件句柄添加字节锁的信息记录到第二数据库中。
在本发明的一个优选实施例中,响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一节点的第一数据库中包括:
第一节点以共享读写的方式打开文件,并对文件的权限进行校验;
响应于文件的权限校验通过,向客户端返回一个全局标识符以标识当前的文件句柄;
客户端向服务端发送对文件句柄添加字节锁的请求;
响应于服务端接收到对文件句柄添加字节锁的请求,判断对文件句柄添加字节锁是否存在冲突;
响应于不存在冲突,确认加锁成功并将字节锁的信息记录到第一数据库中。以共享读写方式打开文件,保证其他客户端也可以同时访问文件,如果客户端以独占方式打开文件,则其他客户端将完全无法打开文件,此时无需考虑字节锁的使用,因此这里只考虑共享打开方式的处理方式。
在本发明的一个优选实施例中,字节锁的信息包括:文件句柄、字节锁类型、起始位置、锁定长度、以及SMBD进程的PID。
在本发明的一个优选实施例中,还包括:
响应于第二节点将对文件添加的字节锁信息与接收到的字节锁的信息冲突,向第二节点返回加锁失败的警告。
在本发明的一个优选实施例中,响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突包括:
判断将对文件添加的字节锁信息中的字节锁类型与字节锁的信息中的字节锁类型是否都为读类型;
响应于都为读类型,判断将对文件添加的字节锁信息中的字节锁范围与字节锁的信息中的字节锁范围是否有重叠区段;
响应于没有重叠区段,判断将对文件添加的字节锁信息中的PID信息与字节锁的信息中的PID信息是否相同。
响应于相同,判断第二节点将对文件添加的字节锁信息与接收到的字节锁的信息不冲突。如果都是读类型的锁,则无冲突,如果一个时读类型一个时写类型,则冲突,如果字节锁范围无重叠,则无冲突,如果字节锁范围有重叠,则冲通,如果进程PID信息相同,则进一步检查文件ID,若相同,则无冲突,若进程PID相同,文件ID不同,则说明是同一个客户端的不同用户进程打开了同一个文件,同样冲突。
在本发明的一个优选实施例中,字节锁的加锁方式包括阻塞字节锁和非阻塞字节锁。客户端加锁的方式主要有阻塞和非阻塞两种,当客户端以阻塞方式加锁时,SMBD服务端在无法获取到字节锁时一方面不能让整个SMBD进程处于完全卡死状态,需要保证其他现有的定时器处理能够继续执行,另一方面不能立即向客户端返回失败,因此采用立即事件不间断检查并尝试获取,当获取成功时需要立即返回给客户端。如果客户端以非阻塞方式加锁,则SMBD进程获取锁失败时应该立即返回给客户端最终结果。
本发明对多通道多线程条件下的各个通道线程分别采用一个消息上下文,这样通道线程在分布式文件系统中可以正确发送给对端,同时原有的同一节点不同SMBD进程间收发消息互补影响,从而使消息通路的传输得到可靠保证。各个通道对文件读写时的字节锁占有者信息不论检测或控制,统一采用全局进程PID作为文件占有者,一方面同一个SMBD进程的多个通道线程之间相互检测时不会受到通道线程ID差异的影响,另一方面在整个分布式节点间的文件字节锁控制也可以得到有效保证。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。
基于上述目的,本发明的实施例的第二个方面,提出了一种分布式字节锁检测控制的设备,如图2所示,设备200包括:
记录模块,记录模块配置为响应于分布式节点中的第一节点打开文件,对文件的文件句柄添加字节锁并将字节锁的信息记录到第一节点的第一数据库中;
第一判断模块,判断模块配置为响应于分布式节点中的第二节点打开文件,判断第二节点的第二数据库中是否存在文件的字节锁的信息;
同步模块,同步模块配置为响应于第二数据库中没有文件的字节锁的信息,向所有节点的数据库发送同步请求;
传输模块,传输模块配置为响应于第一数据库接收到请求,将文件的字节锁的信息发送到第二数据库中;
第二判断模块,第二判断模块配置为响应于第二数据库接收到字节锁的信息,判断第二节点将对文件添加的字节锁信息是否与接收到的字节锁的信息冲突;
加锁模块,加锁模块配置为响应于不冲突,第二节点对文件的文件句柄添加字节锁。
上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。
Claims (10)
1.一种分布式字节锁检测控制的方法,其特征在于,包括以下步骤:
响应于分布式节点中的第一节点打开文件,对所述文件的文件句柄添加字节锁并将所述字节锁的信息记录到第一节点的第一数据库中;
响应于所述分布式节点中的第二节点打开所述文件,判断第二节点的第二数据库中是否存在所述文件的字节锁的信息;
响应于所述第二数据库中没有所述文件的字节锁的信息,向所有节点的数据库发送同步请求;
响应于所述第一数据库接收到所述请求,将所述文件的字节锁的信息发送到所述第二数据库中;
响应于所述第二数据库接收到所述字节锁的信息,判断所述第二节点将对所述文件添加的字节锁信息是否与接收到的所述字节锁的信息冲突;
响应于不冲突,所述第二节点对所述文件的文件句柄添加字节锁。
2.根据权利要求1所述的方法,其特征在于,还包括:
将所述分布式节点中的每个通道线程分别设置为采用独立的消息通信上下文以使每个通道线程的消息在分布式数据库中收发互不影响。
3.根据权利要求2所述的方法,其特征在于,将所述分布式节点中的每个通道线程分别设置为采用独立的消息通信上下文包括:
服务端的SMBD进程初始化主线程的消息上下文并注册消息接收函数;
客户端建立SMB连接,将Samba服务端中的SMBD子进程的主线程默认为主通道以进行正常的SMB请求处理;
响应于客户端发起文件读写操作且服务端支持多通道,客户端在读写过程再次发起新的SMB连接;
响应于服务端SMBD进程检测到同一客户端的标识符,将整个SMB会话转移至同一个SMBD子进程处理;
响应于SMBD子进程收到连接转移请求,开启新的通道线程单独处理转移的SMB会话并且初始化通道线程的消息上下文。
4.根据权利要求1所述的方法,其特征在于,还包括:
将所述第二节点对所述文件的文件句柄添加字节锁的信息记录到所述第二数据库中。
5.根据权利要求1所述的方法,其特征在于,响应于分布式节点中的第一节点打开文件,对所述文件的文件句柄添加字节锁并将所述字节锁的信息记录到第一节点的第一数据库中包括:
所述第一节点以共享读写的方式打开所述文件,并对文件的权限进行校验;
响应于文件的权限校验通过,向客户端返回一个全局标识符以标识当前的文件句柄;
客户端向服务端发送对所述文件句柄添加字节锁的请求;
响应于服务端接收到对所述文件句柄添加字节锁的请求,判断对所述文件句柄添加字节锁是否存在冲突;
响应于不存在冲突,确认加锁成功并将所述字节锁的信息记录到第一数据库中。
6.根据权利要求1所述的方法,其特征在于,所述字节锁的信息包括:文件句柄、字节锁类型、起始位置、锁定长度、以及SMBD进程的PID。
7.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述第二节点将对所述文件添加的字节锁信息与接收到的所述字节锁的信息冲突,向所述第二节点返回加锁失败的警告。
8.根据权利要求1所述的方法,其特征在于,响应于所述第二数据库接收到所述字节锁的信息,判断所述第二节点将对所述文件添加的字节锁信息是否与接收到的所述字节锁的信息冲突包括:
判断将对所述文件添加的字节锁信息中的字节锁类型与所述字节锁的信息中的字节锁类型是否都为读类型;
响应于都为读类型,判断将对所述文件添加的字节锁信息中的字节锁范围与所述字节锁的信息中的字节锁范围是否有重叠区段;
响应于没有重叠区段,判断将对所述文件添加的字节锁信息中的PID信息与所述字节锁的信息中的PID信息是否相同;
响应于相同,判断所述第二节点将对所述文件添加的字节锁信息与接收到的所述字节锁的信息不冲突。
9.根据权利要求1所述的方法,其特征在于,所述字节锁的加锁方式包括阻塞字节锁和非阻塞字节锁。
10.一种分布式字节锁检测控制的设备,其特征在于,所述设备包括:
记录模块,所述记录模块配置为响应于分布式节点中的第一节点打开文件,对所述文件的文件句柄添加字节锁并将所述字节锁的信息记录到第一节点的第一数据库中;
第一判断模块,所述判断模块配置为响应于所述分布式节点中的第二节点打开所述文件,判断第二节点的第二数据库中是否存在所述文件的字节锁的信息;
同步模块,所述同步模块配置为响应于所述第二数据库中没有所述文件的字节锁的信息,向所有节点的数据库发送同步请求;
传输模块,所述传输模块配置为响应于所述第一数据库接收到所述请求,将所述文件的字节锁的信息发送到所述第二数据库中;
第二判断模块,所述第二判断模块配置为响应于所述第二数据库接收到所述字节锁的信息,判断所述第二节点将对所述文件添加的字节锁信息是否与接收到的所述字节锁的信息冲突;
加锁模块,所述加锁模块配置为响应于不冲突,所述第二节点对所述文件的文件句柄添加字节锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110124107.7A CN112839099B (zh) | 2021-01-29 | 2021-01-29 | 一种分布式字节锁检测控制的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110124107.7A CN112839099B (zh) | 2021-01-29 | 2021-01-29 | 一种分布式字节锁检测控制的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112839099A CN112839099A (zh) | 2021-05-25 |
CN112839099B true CN112839099B (zh) | 2022-05-13 |
Family
ID=75932365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110124107.7A Active CN112839099B (zh) | 2021-01-29 | 2021-01-29 | 一种分布式字节锁检测控制的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112839099B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568736A (zh) * | 2021-06-24 | 2021-10-29 | 阿里巴巴新加坡控股有限公司 | 数据处理方法及装置 |
CN114567540B (zh) * | 2022-02-25 | 2023-07-21 | 北京百度网讯科技有限公司 | 主备节点切换方法、装置、设备、介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件系统访问控制方法及集群节点 |
CN105426469A (zh) * | 2015-11-16 | 2016-03-23 | 天津南大通用数据技术股份有限公司 | 一种数据库集群元数据管理方法及系统 |
CN111708744A (zh) * | 2020-05-15 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 基于无状态协议维护文件锁的方法、系统、设备及介质 |
CN112100190A (zh) * | 2020-09-21 | 2020-12-18 | 天津神舟通用数据技术有限公司 | 一种基于更新序列的分布式锁状态同步方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136508A1 (en) * | 2004-12-16 | 2006-06-22 | Sam Idicula | Techniques for providing locks for file operations in a database management system |
-
2021
- 2021-01-29 CN CN202110124107.7A patent/CN112839099B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件系统访问控制方法及集群节点 |
CN105426469A (zh) * | 2015-11-16 | 2016-03-23 | 天津南大通用数据技术股份有限公司 | 一种数据库集群元数据管理方法及系统 |
CN111708744A (zh) * | 2020-05-15 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 基于无状态协议维护文件锁的方法、系统、设备及介质 |
CN112100190A (zh) * | 2020-09-21 | 2020-12-18 | 天津神舟通用数据技术有限公司 | 一种基于更新序列的分布式锁状态同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112839099A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6496942B1 (en) | Coordinating persistent status information with multiple file servers | |
CN112839099B (zh) | 一种分布式字节锁检测控制的方法和设备 | |
RU2686594C2 (ru) | Файловая служба, использующая интерфейс совместного файлового доступа и передачи состояния представления | |
US5544353A (en) | Distributed processing object shared resource control apparatus and method | |
US5463733A (en) | Failure recovery apparatus and method for distributed processing shared resource control | |
CN1794207B (zh) | 实现缓存一致性的方法和系统 | |
US9165157B2 (en) | Methods and apparatus facilitating access to storage among multiple computers | |
EP1402363B1 (en) | Method for ensuring operation during node failures and network partitions in a clustered message passing server | |
EP2695083B1 (en) | Cluster unique identifier | |
US7165083B2 (en) | File management method in a distributed storage system | |
JPH086840A (ja) | サーバ回復のためのディレクトリ操作の完了を判定する機構 | |
US11233874B2 (en) | Ordinary write in distributed system maintaining data storage integrity | |
US7228352B1 (en) | Data access management system in distributed processing system | |
US7809898B1 (en) | Detecting and repairing inconsistencies in storage mirrors | |
CN107168970A (zh) | 一种分布式文件系统hdfs的管理方法、装置及系统 | |
CN111797172B (zh) | 数据迁移方法、装置、设备、分布式系统及存储介质 | |
US20210072903A1 (en) | Future write in distributed system maintaining data storage integrity | |
CN108965054B (zh) | 一种客户端与服务端数据快速交互方法 | |
US5692120A (en) | Failure recovery apparatus and method for distributed processing shared resource control | |
US7047376B2 (en) | Backup system and method and program | |
US7421613B2 (en) | Method and system for managing of job execution | |
CN114697201B (zh) | 一种基于应用客户端代理请求的数据处理方法及装置 | |
US7778991B2 (en) | Service providing system, computer which executes program providing service and repository service control program | |
US11108730B2 (en) | Group heartbeat information in a domain name system server text record | |
KR100502501B1 (ko) | 데이터베이스 시스템의 실시간 원격 로깅 및 복구 방법 |
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 |