为 Ceph RGW 启用 D3N 缓存
D3N(Data Delivery Network)缓存通过使用 RGW 节点上的本地 NVMe/SSD 磁盘作为缓存层,加速对热点对象的访问。
它减少了对后端 OSD 的频繁读取操作,显著提升了热点数据的读取性能。
背景
D3N 的核心思想简单而有效:
RGW 不再反复从 Ceph 后端存储获取对象数据,而是直接从位于 RGW 节点上快速磁盘(NVMe/SSD)上的 本地持久缓存 提供热点数据。
该设计特别适用于:
- 大对象下载
- 热点对象的重复读取
- 对带宽敏感的工作负载
前提条件
- 已安装 Ceph 集群
- 已部署 Rook-Ceph
- 已创建对象存储(RGW / CephObjectStore)
- RGW 节点上有高性能本地磁盘(NVMe / SSD)
操作概览
- 部署 Ceph 并创建对象存储
- 在 RGW 节点上准备高速本地磁盘并挂载到目录
- 配置
CephObjectStore:- 通过
hostPath挂载该目录 - 启用与 D3N 相关的 RGW 参数
- 通过
准备本地文件系统作为缓存
在每个运行 RGW 服务的节点上挂载一个目录。建议使用高性能的专用磁盘(而非分区),格式化为 XFS 文件系统,并配置 /etc/fstab 以确保重启后挂载持续生效。后续文档中出现的 </path/to/cache/dir> 请替换为你实际配置的目录路径。
在 CephObjectStore 中启用 D3N 缓存
编辑 CephObjectStore 资源:
在 gateway 下添加如下配置:
参数说明
验证 D3N 配置
通过 Ceph 工具检查 RGW 配置
在 rook-ceph-tools pod 中运行:
示例输出:
验证 RGW 日志
RGW pod 重启后,应出现 D3N 初始化日志:
示例输出:
验证缓存行为
通过 RGW 下载对象时,缓存文件会出现在宿主机的缓存目录中:
示例输出:
这些文件的存在证明 RGW 正在从本地 D3N 缓存提供数据。