Image-Volume 缓存

OpenStack 块存储具有可选的镜像缓存,可以显著提高从镜像创建卷的性能。性能提升取决于许多因素,主要取决于配置的后端克隆卷的速度。

当首次从镜像创建卷时,将创建一个由块存储内部租户拥有的新的缓存镜像-卷。后续从该镜像创建卷的请求将克隆缓存版本,而不是下载镜像内容并将其复制到卷中。

缓存本身可以针对每个后端进行配置,并将包含最近使用的镜像。

配置内部租户

Image-Volume 缓存需要为块存储服务配置内部租户。该项目将拥有缓存的镜像-卷,因此可以像管理普通用户一样管理它们,包括使用卷配额等工具。这可以保护普通用户免于看到缓存的镜像-卷,但不会使它们全局隐藏。

要使块存储服务能够访问内部租户,请在 cinder.conf 文件中设置以下选项

cinder_internal_tenant_project_id = PROJECT_ID
cinder_internal_tenant_user_id = USER_ID

一个示例 cinder.conf 配置文件

cinder_internal_tenant_project_id = b7455b8974bb4064ad247c8f375eae6c
cinder_internal_tenant_user_id = f46924c112a14c80ab0a24a613d95eef

注意

配置为内部租户的实际用户和项目不需要任何特殊权限。它们可以是块存储服务项目,也可以是任何普通项目和用户。

配置 Image-Volume 缓存

要启用 Image-Volume 缓存,请在 cinder.conf 文件中设置以下配置选项

image_volume_cache_enabled = True

注意

如果将 Ceph 作为后端使用,请在 cinder.conf 文件中设置以下配置选项

[ceph]
image_volume_cache_enabled = True

这可以针对每个后端定义或在默认选项中进行设置。

有一些可选的配置设置可以限制缓存的大小。这些也可以针对每个后端或在 cinder.conf 文件中的默认选项中进行设置

image_volume_cache_max_size_gb = SIZE_GB
image_volume_cache_max_count = MAX_COUNT

默认情况下,它们将被设置为 0,这意味着无限制。

例如,将最大大小限制为 200 GB 且缓存条目为 50 的配置将配置为

image_volume_cache_max_size_gb = 200
image_volume_cache_max_count = 50

注意

如上所述,配置为缓存所有者的 内部租户 不需要任何特殊权限,并且受配额的约束,就像任何其他用户一样。因此,内部租户的配额可能需要进行调整,以允许内部租户持有至少 image_volume_cache_max_count 个卷,总大小不超过 image_volume_cache_max_size_gb。因此,虽然这些镜像卷缓存设置的默认值为 0(无限制),但在实践中,它们将受到适用于内部租户的配额的限制。

有关更多信息,请参阅 管理块存储服务配额

通知

缓存操作将触发遥测消息。将发送几个消息。

  • image_volume_cache.miss - 正在从缓存中未找到的镜像创建卷。通常这意味着将为其创建一个新的缓存条目。

  • image_volume_cache.hit - 正在从缓存中找到的镜像创建卷,并且可以采用快速路径。

  • image_volume_cache.evict - 已从缓存中删除了缓存的镜像-卷。

管理缓存的镜像-卷

在正常使用情况下,无需手动干预缓存。条目及其底层的镜像-卷会自动管理。

如果需要,您可以手动删除这些卷以清除缓存。通过使用标准卷删除 API,块存储服务将正确清理。