【ceph】cephfs caps简介

Ceph CephFS Caps是一种元数据操作许可,允许客户端在变更文件元数据前获取相应权限。Caps分为多个类别,如PIN、AUTH、LINK、XATTR等,每个类别有特定的权限类型。Caps管理涉及锁机制,确保数据一致性,而权限变更由MDS根据客户端行为执行。当Caps被移除时,客户端必须停止使用并确认,否则可能导致其他客户端阻塞。
摘要由CSDN通过智能技术生成

目录

CAPS基础

基本概念

CAPS种类

CAPS PERMISSION种类

CAPS COMBINATION

PIN

AUTH、LINK、XATTR

FILE

CAPS管理

LOCK

CAPS如何变更

CAPS相关告警

总结

CAPS代码相关

CAPS数据表示和规则

FUSE WRITE实例

参考链接


CAPS基础

基本概念

caps是mds授予client对文件进行操作的许可证,当一个client想要对文件元数据进行变更时,比如读、写、修改权限等等操作,它都必须先获取到相应的caps才可以进行这些操作。
ceph对caps的划分粒度很细,且允许多个client在同一个inode上持有不同的caps。

CAPS种类

根据元数据内容的不同,ceph将caps也分为了多个类别,每种类别只负责作用于某些特定的元数据:

类别 功能
PIN mds是否将inode pin在cache中
AUTH 鉴权相关的元数据,主要是owner、group、mode;但是如果是完整的鉴权是需要查看ACL的,acl信息保存在xattr中,这就需要XATTR相关的cap
XATTR xattr
FILE 最重要也是最复杂的一个,用于文件数据,以及和文件数据相关的ize、atime、ctime、mtime等

CAPS PERMISSION种类

#define CEPH_CAP_GSHARED     1  /* client can reads (s) */
#define CEPH_CAP_GEXCL       2  /* client can read and update (x) */
#define CEPH_CAP_GCACHE      4  /* (file) client can cache reads (c) */
#define CEPH_CAP_GRD         8  /* (file) client can read (r) */
#define CEPH_CAP_GWR        16  /* (file) client can write (w) */
#define CEPH_CAP_GBUFFER    32  /* (file) client can buffer writes (b) */
#define CEPH_CAP_GWREXTEND  64  /* (file) client can extend EOF (a) */
#define CEPH_CAP_GLAZYIO   128  /* (file) client can perform lazy io (l) */

CAPS COMBINATION

一个完整cap通过【类别+permission种类】组成,client可以同时申请多个类别的caps。但是并不是每种caps都可以使用每种permission,有些caps只能搭配部分permission。有关caps种类和permission的结合使用,有以下几个规则:

PIN

二值型,有pin就代表client知道这个inode存在,这样mds就一定会在其cache中保存这个inode

AUTH、LINK、XATTR

只能为shared或者exclusive

  • shared:client可以将对应元数据保存在本地并缓存和使用
  • exclusive:client不仅可以在本地缓存使用,还可以修改

下面是两个例子:

  • [A]s:某client对inode 0x11有As的cap,此时收到一个查看0x11状态的系统调用,那么client不需要再向mds请求,直接通过查询自身缓存并进行处理和回复
  • [A]x:某client对inode 0x11有Ax的cap,此时收到一个修改mode的系统调用,client可以直接在本地进行修改并回复,并且在之后才将修改变更通知mds

FILE

如前所述,file是最复杂的一种,下面是File cap的各个类别:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值