因此Ceph在librbd中有一个用户空间页面缓存实现。它是否允许用户提及要分配给每个pod的页面缓存量?如果是,我们可以动态更改分配吗?
weizhaoxia96 回答:Ceph libRBD缓存控制
根据文档和项目github中的问题,没有引用POD级别的页面缓存分配。
Ceph支持RBD的写回缓存。要启用它,请将rbd cache = true添加到
ceph.conf
文件的[client]部分。默认情况下,librbd
不执行任何缓存。写入和读取直接进入存储集群,而写入仅在数据位于所有副本上的磁盘上时返回。启用缓存后,写入将立即返回,除非有超过rbd cache max dirty
个未刷新的字节。在这种情况下,写操作会触发写回并阻塞,直到刷新了足够的字节为止。
这是当前受支持的RDB缓存参数,必须将其插入ceph.conf
文件的客户端部分:
rbd cache
= RBD缓存大小(以字节为单位)。 | 类型:布尔值,必填:否,默认值:false
rbd cache size
=为RADOS块设备(RBD)启用缓存。 | 类型:64位整数,必填:否,默认值:32 MiB
rbd cache max dirty
=缓存触发回写的dirty
限制(以字节为单位)。 |如果为0
,则使用直写式缓存。
类型:64位整数,必填:否,约束条件:必须小于rbd cache size
,默认值:24 MiB
rbd cache target dirty
=缓存开始将数据写入数据存储之前的dirty target
。不阻止写入缓存。 | 类型:64位整数,必填:否,约束:必须小于rbd cache max dirty
,默认值:16 MiB
rbd cache max dirty age
=开始写回之前,脏数据在高速缓存中的秒数。 | 类型:浮动,必填:否,默认值:1.0
rbd缓存的最大脏年龄
rbd cache writethrough until flush
=以直写模式开始,并在收到第一个刷新请求后切换回写。如果在rbd上运行的VM太旧而无法发送刷新,例如2.6.32之前的Linux中的virtio驱动程序,则启用此设置是一种保守但安全的设置。 | 类型:布尔值,必填:否,默认值:false