文件系统分布式锁简要介绍

1 命名空间

不同服务的锁用不同的namespace来区分,不同元数据服务上锁namespace的名字不同,元数据锁和数据锁的namespace也不同,客户端理论上会向所有的服务发请求,所以客户端的锁分布在不同的namespace下,锁客户端用namespace来组织不同的锁链表.

在这里插入图片描述
分布式锁模块跟元数据服务器中其他模块比较独立,它保存了系统中所有已经向该元数据服务器申请的锁。当有新的锁请求到来时,会直接进入锁申请模块。锁模块会检查该资源上是否已经有锁,并检查锁是否存在冲突,以决定申请的锁是否会被授权。客户端上有专门的锁客户端缓存该客户端已经申请的分布式锁。

2 锁资源

锁资源,就是锁保护的对象。除了文件,还可以对象id等等。一个锁资源对应于一个实际的实体,比如一个文件、一段数据、一个数据库等等,锁资源的对象也决定锁粒度,比如你可以对整个inode加锁,也可以对inode中一个属性加锁,前者的粒度显然比后者粒度粗。

一个锁资源可以拥有多个锁持有它,但是一个锁只能被一个锁资源持有。因此在DLM中,锁资源和锁是1:M关系。

2.1 资源所属命名空间

2.2 锁状态

每个锁资源有三个潜在的锁状态:

  • 已批准:锁请求成功获得其所要求的模式
  • 转换中:client尝试改变的锁模式和新请求的模式与已存在的锁不兼容
  • 阻塞的ÿ
posted @ 2021-12-22 00:12  龙虾天天  阅读(20)  评论(0)    收藏  举报  来源