注意
本文档适用于 Ceph 开发版本。
RBD持久写日志缓存
持久写入日志缓存
持久写日志缓存(PWL)为基于librbd的RBD客户端提供持久、容错的写回缓存。
此缓存使用日志顺序写回设计,内部维护检查点,以便写回集群的写入始终是一致性崩溃的。即使客户端缓存完全丢失,磁盘镜像仍然是一致的,但数据将显示为过时的。
此缓存可与PMEM或SSD作为缓存设备一起使用。对于PMEM,缓存模式称为replica write log (rwl)
。目前仅支持本地缓存,副本功能正在开发中。对于SSD,缓存模式称为ssd
.
查看当前由 cephadm 使用的文件模板。
PWL缓存管理持久设备中的缓存数据。它在配置的目录中查找并创建缓存文件,然后在文件中缓存数据。
PWL缓存依赖于独占锁功能。只有在获取独占锁后才能加载缓存。
缓存提供两种不同的持久模式。在写时持久模式下,写入只有在持久化到缓存设备后才完成,并且在崩溃后可以读取。在刷新时持久模式下,写入在不再需要调用者的数据缓冲区来完成写入时即完成,但不保证写入在崩溃后可以读取。当收到刷新请求时,数据会持久化到缓存设备。
初始默认为写时持久模式,在收到第一个刷新请求后切换到刷新时持久模式。
启用缓存
要启用PWL缓存,请设置以下配置设置:
rbd_persistent_cache_mode = {cache-mode}
rbd_plugins = pwl_cache
{cache-mode}的值可以是rwl
, ssd
或disabled
。默认情况下,缓存是禁用的。
The rwl
缓存模式依赖于libpmem库(PMDK的一部分)。它在x86_64架构上普遍可用,在某些发行版上也可能在ppc64le和aarch64架构上可用。它在s390x架构上不可用。
以下是一些缓存配置设置:
rbd_persistent_cache_path
用于缓存数据的文件文件夹。此文件夹在使用DAX)时必须启用DAX(参见rwl
模式以避免性能下降。rbd_persistent_cache_size
每个镜像的缓存大小。最小缓存大小为1 GB。
上述配置可以按主机、按池、按镜像等设置。例如,要按主机设置,请将覆盖添加到主机文件中的相应section。要按池、按镜像等设置,请参阅ceph.conf
file. To set per-pool, per-image, etc, please refer to the
rbd config
命令.
缓存状态
当获取独占锁时,PWL缓存被启用,当释放独占锁时关闭。要检查缓存状态,用户可以使用命令rbd status
.
rbd status {pool-name}/{image-name}
显示缓存状态,包括当前状态、干净状态、缓存大小和位置以及一些基本指标。
例如:
$ rbd status rbd/foo
Watchers:
watcher=10.10.0.102:0/1061883624 client.25496 cookie=140338056493088
Persistent cache state:
host: sceph9
path: /mnt/nvme0/rbd-pwl.rbd.101e5824ad9a.pool
size: 1 GiB
mode: ssd
stats_timestamp: Sun Apr 10 13:26:32 2022
present: true empty: false clean: false
allocated: 509 MiB
cached: 501 MiB
dirty: 338 MiB
free: 515 MiB
hits_full: 1450 / 61%
hits_partial: 0 / 0%
misses: 924
hit_bytes: 192 MiB / 66%
miss_bytes: 97 MiB
刷新缓存
要使用rbd
使缓存文件失效(丢弃),请指定persistent-cache flush
命令、池名和镜像名。
rbd persistent-cache flush {pool-name}/{image-name}
如果应用程序意外死亡,也可以使用此命令将缓存刷新回OSDs。
例如:
$ rbd persistent-cache flush rbd/foo
使缓存失效
要使用rbd
使缓存文件失效(丢弃),请指定persistent-cache invalidate
命令、池名和镜像名。
rbd persistent-cache invalidate {pool-name}/{image-name}
该命令删除相应镜像的缓存元数据,禁用缓存功能,如果存在,则删除本地缓存文件。
例如:
$ rbd persistent-cache invalidate rbd/foo
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.