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