7.3. 缓存设置


Ceph 块设备的用户空间实施(即 librbd)无法利用 Linux 页面缓存,因此它包含自己的内存缓存,称为 RBD 缓存。RBD 缓存的行为与行为良好的硬盘缓存一样。当操作系统发送障碍或清空请求时,所有脏数据都会写入 OSD。这意味着,使用回写缓存的安全性与使用带有正确发送清除的虚拟机(即 Linux 内核 >= 2.6.32)的良好物理硬盘一样安全。缓存使用最早使用 (LRU) 算法,在回写模式中,它可以联合相邻的请求来获得更好的吞吐量。

Ceph 支持 RBD 的回写缓存。若要启用它,请将 rbd cache = true 添加到 ceph.conf 文件的 [client] 部分。默认情况下,librbd 不执行任何缓存。写入和读取直接进入存储集群,只有数据处于所有副本的磁盘中时写入才会返回。启用缓存后,写入会立即返回,除非存在超过 rbd cache max dirty unflushed 字节。在这种情况下,写入会触发回写和块,直到清空了足够字节。

Ceph 支持 RBD 的直写缓存。您可以设置缓存的大小,您可以设置从回写缓存切换到通过缓存进行写入的目标和限制。要启用直写模式,请将 rbd cache max dirty 设置为 0。这意味着,只有在数据处于所有副本的磁盘上时写入才会返回,但读取可能来自缓存。缓存位于客户端上的内存中,每个 RBD 镜像都有自己的内存中。由于缓存对客户端而言是本地的,如果其他人访问该镜像,则没有一致性。在 RBD 上运行 GFS 或 OCFS 不适用于启用缓存。

RBD 的 ceph.conf 文件设置应在配置文件的 [client] 部分中设置。设置包括:

RBD 缓存
描述
为 RADOS 块设备 (RBD) 启用缓存。
类型
布尔值
必需
默认
true
RBD 缓存大小
描述
以字节为单位的 RBD 缓存大小。
类型
64 位整数
必填
默认
32 MiB
RBD 缓存最大脏
描述
以字节为单位的 限制,达到时缓存将触发回写。如果为 0,则使用直写缓存。
类型
64 位整数
必填
约束
必须小于 rbd 缓存大小
默认
24 MiB
RBD 缓存目标脏
描述
缓存开始将数据写入数据存储前的 脏目标。不要阻止写入到缓存。
类型
64 位整数
必填
约束
必须小于 rbd cache max dirty
默认
16 MiB
RBD 缓存最大脏年龄
描述
在开始回写前,脏数据在缓存中的秒数。
类型
浮点值
必填
默认
1.0
rbd_cache_max_dirty_object
描述
对象的脏限制 - 设为 0,用于从 rbd_cache_size 自动计算。
类型
整数
默认
0
rbd_cache_block_writes_upfront
描述
如果为 true,它将在 aio_write 调用完成前阻止写入缓存。如果为 false,它将在调用 aio_completion 之前阻止。
类型
布尔值
默认
false
RBD 缓存写入,直到清除
描述
以直写模式开始,并在收到第一个 flush 请求后切换到回写模式。如果 rbd 上运行的虚拟机太旧而无法发送清空,如 Linux 中的 virtio 驱动程序 2.6.32 之前,启用此设置比较保守,但安全设置。
类型
布尔值
必需
默认
true
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.