A.3. 块设备缓存选项


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

Ceph 块设备支持回写缓存。若要启用回写缓存,可将 rbd_cache = true 设置为 Ceph 配置文件的 [client] 部分。默认情况下,librbd 不执行任何缓存。写入和读取直接进入存储集群,只有数据处于所有副本的磁盘中时写入才会返回。启用缓存时,写入会立即返回,除非存在超过 rbd_cache_max_dirty 未清空字节。在这种情况下,写入会触发 write-back 并拦截,直到清空了充足的字节为止。

Ceph 块设备支持直写缓存。您可以设置缓存的大小,您可以设置从回写缓存切换到直写缓存的目标和限制。若要启用 write-through 模式,可将 rbd_cache_max_dirty 设置为 0。这意味着,只有在数据处于所有副本的磁盘上时写入才会返回,但读取可能来自缓存。缓存位于客户端上的内存中,每个 Ceph 块设备镜像都有自己的内存。由于缓存对客户端而言是本地的,如果其他人访问该镜像,则没有一致性。在 Ceph 块设备上运行其他文件系统(如 GFS 或 OCFS)将无法用于启用缓存。

默认情况下,Ceph 块设备的 Ceph 配置设置必须在 Ceph 配置文件的 [client] 部分中设置,默认为 /etc/ceph/ceph.conf

设置包括:

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.