注意
本文档适用于 Ceph 开发版本。
RBD 持久化只读缓存
不可变对象缓存守护进程
简介和通用设置
The ceph-immutable-object-cache
守护进程负责在其本地缓存目录中缓存父镜像内容。建议使用 SSD 作为底层存储,因为这样可以提供更好的性能。
守护进程的关键组件是:
基于域套接字的 IPC:守护进程在启动时监听本地域套接字,并等待来自 librbd 客户端的连接。
基于 LRU 的提升/降级策略:守护进程为每个缓存文件维护内存中的缓存命中统计。如果容量达到配置的阈值,它会降级冷缓存。
基于文件的缓存存储:守护进程维护一个简单的基于文件的缓存存储。在提升时,RADOS 对象从 RADOS 集群中获取并存储在本地缓存目录中。
当每个克隆的 RBD 镜像打开时,librbd
尝试通过其 Unix 域套接字连接到缓存守护进程。在librbd
成功连接后,它在每次后续读取时与守护进程进行协调。在未缓存读取的情况下,守护进程将 RADOS 对象提升到本地缓存目录,并且对象的下一个读取是从缓存中服务的。守护进程维护简单的 LRU 统计信息,这些统计信息用于在需要时(例如,当缓存已满且压力下)清除冷缓存文件。
以下是一些重要的缓存配置设置:
immutable_object_cache_sock
- 描述:
用于 librbd 客户端和 ceph-immutable-object-cache 守护进程之间通信的域套接字的路径。
- 类型:
字符串
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
/var/run/ceph/immutable_object_cache_sock
immutable_object_cache_path
- 描述:
不可变对象缓存数据目录。
- 类型:
字符串
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
/tmp/ceph_immutable_object_cache
immutable_object_cache_max_size
- 描述:
不可变缓存的最大大小。
- 类型:
容量
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
1G
immutable_object_cache_watermark
- 描述:
缓存的高水位标记。值在 (0, 1) 之间。如果缓存大小达到此阈值,守护进程将开始根据 LRU 统计信息删除冷缓存。
- 类型:
浮点数
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
0.9
The ceph-immutable-object-cache
守护进程可在可选的ceph-immutable-object-cache
发行包中提供。
重要
ceph-immutable-object-cache
守护进程需要能够连接 RADOS 集群。
运行不可变对象缓存守护进程
ceph-immutable-object-cache
守护进程应该使用唯一的 Ceph 用户 ID。创建 Ceph 用户,其中包含ceph
在使用部署工具(如auth get-or-create
命令,用户名、监控器权限和 OSD 权限:
ceph auth get-or-create client.ceph-immutable-object-cache.{unique id} mon 'allow r' osd 'profile rbd-read-only'
The ceph-immutable-object-cache
守护进程可以通过systemd
管理,通过指定用户 ID 作为守护进程实例:
systemctl enable ceph-immutable-object-cache@ceph-immutable-object-cache.{unique id}
The ceph-immutable-object-cache
也可以在前景中运行ceph-immutable-object-cache
command:
ceph-immutable-object-cache -f --log-file={log_path}
QOS 设置
不可变对象缓存支持限流,由以下设置控制:
immutable_object_cache_qos_schedule_tick_min
- 描述:
不可变对象缓存的最低计划间隔。
- 类型:
毫秒
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
50
immutable_object_cache_qos_iops_limit
- 描述:
每秒期望的不可变对象缓存 IO 操作限制。
- 类型:
无符号整数
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
0
immutable_object_cache_qos_iops_burst
- 描述:
期望的不可变对象缓存 IO 操作突发限制。
- 类型:
无符号整数
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
0
immutable_object_cache_qos_iops_burst_seconds
- 描述:
期望的不可变对象缓存 IO 操作突发持续时间(秒)。
- 类型:
秒
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
1
immutable_object_cache_qos_bps_limit
- 描述:
每秒期望的不可变对象缓存 IO 字节限制。
- 类型:
无符号整数
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
0
immutable_object_cache_qos_bps_burst
- 描述:
期望的不可变对象缓存 IO 字节突发限制。
- 类型:
无符号整数
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
0
immutable_object_cache_qos_bps_burst_seconds
- 描述:
期望的不可变对象缓存 IO 字节突发持续时间(秒)。
- 类型:
秒
- 必需:
否
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
1
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.