配置不可变对象缓存

如果计算节点具有快速本地磁盘(例如 NVMe 或 PMEM),使用 RBD 接口进行卷的 Ceph 客户端,例如 Nova,可以将这些磁盘用作从快照创建的卷的本地只读缓存,例如,当在 Ceph 集群中创建 Glance 镜像的快照以创建可引导的 Cinder 卷时。

写时复制机制意味着在同一计算主机上从同一快照克隆的所有卷可以共享此缓存,并且可能避免重复从 OSD 读取相同的底层块(即来自原始 Glance 镜像的那些)。写入卷的新数据将不会使用不可变对象缓存进行缓存。

不可变对象缓存会在客户端节点上运行一个守护进程,并且必须是 Ceph 集群的授权用户。要在 Nova 计算节点上启用不可变对象缓存,请在 /etc/openstack_deploy/group_vars/nova_compute.yml 中创建以下配置,并注意考虑部署中 ceph_client_ceph_conf_overrides 的任何其他用途,因为定义应仅出现一次。

ceph_immutable_object_cache_enabled: true

ceph_client_ceph_conf_overrides:
  global:
    rbd_plugins: parent_cache
    rbd_parent_cache_enabled: true
    immutable_object_cache_path: /ceph-immutable-object-cache
    immutable_object_cache_max_size: 1500G    # set max size appropriate to the cache disk capacity

作为预部署配置的一部分,操作员必须准备一个合适的磁盘和挂载点,默认值为 /ceph-immutable-object-cache,可以通过覆盖 ceph_immutable_object_cache_dir 变量来更改此设置。

对于未使用 OpenStack-Ansible 部署的 Ceph 集群,必须为不可变对象缓存客户端创建一个密钥环

ceph auth get-or-create client.immutable-object-cache mon 'allow r' osd 'profile rbd-read-only'

当服务部署并正确配置后,在启动使用从 Glance 镜像或 Cinder 快照克隆的磁盘的新 VM 之后,将在缓存目录中创建一个缓存目录结构。现有的 VM 将不会被缓存。