3.4. Ceph 客户端 Mandatory Exclusive Locks
Mandatory Exclusive Locks 是一种将 RBD 锁定到单个客户端的功能(如果有多个挂载)。当多个挂载的客户端试图写入同一对象时,这有助于解决写入冲突的情况。此功能基于 object-watch-notify
(在上一节中进行了介绍)。因此,在编写时,如果一个客户端首先在对象上建立一个专用锁定,则另一个挂载的客户端首先会检查一下对等点是否已锁定到对象后再写入。
启用此功能后,只有一个客户端一次可以修改 RBD 设备,特别是在操作过程中更改内部 RBD 结构(如 快照创建/删除
)。它还为失败的客户端提供一些保护。例如,如果虚拟机似乎没有响应,并且您在其他位置启动同一磁盘的副本,则第一个虚拟机将被放入 Ceph 中,且无法破坏新的磁盘。
默认情况下不启用强制锁定。在创建镜像时,您必须使用 --image-feature
参数显式启用它。
示例
[root@mon ~]# rbd create --size 102400 mypool/myimage --image-feature 5
此处,数字 5
是 1
和 4
的总和,1
个启用分层支持,4
个启用了 exclusive locking 支持。因此,上述命令将创建一个 100 GB rbd 镜像,启用分层和专用锁定。
Mandatory Exclusive Locks 也是对象映射
的先决条件。如果没有启用专用锁定支持,无法启用对象映射支持。
Mandatory Exclusive Locks 也会为镜像进行一些操作。