注意
本文档适用于 Ceph 的开发版本。
RBD持久性只读缓存
不可变对象缓存守护程序
介绍和通用设置
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守护程序之间通信的域套接字路径。
- 类型:
String
- 必需:
否
- 默认值:
/var/run/ceph/immutable_object_cache_sock
immutable_object_cache_path
- 描述:
不可变对象缓存数据目录。
- 类型:
String
- 必需:
否
- 默认值:
/tmp/ceph_immutable_object_cache
immutable_object_cache_max_size
- 描述:
不可变缓存的最大大小。
- 类型:
大小
- 必需:
否
- 默认值:
1G
immutable_object_cache_watermark
- 描述:
缓存的高水位线。值在 (0, 1) 之间。如果缓存大小达到此阈值,守护程序将开始根据LRU统计信息删除冷缓存。
- 类型:
浮点数
- 必需:
否
- 默认值:
0.9
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命令、用户名、monitor caps和OSD caps
ceph auth get-or-create client.ceph-immutable-object-cache.{unique id} mon 'allow r' osd 'profile rbd-read-only'
ceph-immutable-object-cache守护程序可以通过systemd管理,将用户ID指定为守护程序实例
systemctl enable ceph-immutable-object-cache@ceph-immutable-object-cache.{unique id}
ceph-immutable-object-cache也可以通过ceph-immutable-object-cache命令在前台运行
ceph-immutable-object-cache -f --log-file={log_path}
QOS 设置
不可变对象缓存支持限制,由以下设置控制
immutable_object_cache_qos_schedule_tick_min
- 描述:
不可变对象缓存的最小调度周期。
- 类型:
毫秒
- 必需:
否
- 默认值:
50
immutable_object_cache_qos_iops_limit
- 描述:
不可变对象缓存每秒期望的IO操作限制。
- 类型:
无符号整数
- 必需:
否
- 默认值:
0
immutable_object_cache_qos_iops_burst
- 描述:
不可变对象缓存IO操作的期望突发限制。
- 类型:
无符号整数
- 必需:
否
- 默认值:
0
immutable_object_cache_qos_iops_burst_seconds
- 描述:
不可变对象缓存IO操作的期望突发持续时间(以秒为单位)。
- 类型:
秒
- 必需:
否
- 默认值:
1
immutable_object_cache_qos_bps_limit
- 描述:
不可变对象缓存每秒期望的IO字节限制。
- 类型:
无符号整数
- 必需:
否
- 默认值:
0
immutable_object_cache_qos_bps_burst
- 描述:
不可变对象缓存IO字节的期望突发限制。
- 类型:
无符号整数
- 必需:
否
- 默认值:
0
immutable_object_cache_qos_bps_burst_seconds
- 描述:
不可变对象缓存IO字节的期望突发持续时间(以秒为单位)。
- 类型:
秒
- 必需:
否
- 默认值:
1