Spec Lite:重新思考我们的文件系统访问

项目:

glance

问题:

Glance 在许多地方使用文件系统,并采用各种机制。作为镜像导入工作流的一部分,任务和暂存操作通过覆盖配置并使用内部函数来初始化存储,从而消耗 glance_store。

解决方案:

在 Rocky 中,添加了多后端支持作为实验性功能。我们应该利用这一点为这些操作保留某些存储。作为其中的一部分,我们将弃用 work_dir 和 node_staging_uri 配置选项,并保留两个文件系统存储‘os_glance_tasks_store’和‘os_glance_staging_store’,这些存储可用于消除通过内部函数初始化存储的需求。这些存储在一段时间内将在 glance 中硬编码,并注入到 enabled_backends 配置选项中,以便在 glance-api 服务启动时初始化 glance_store 时加载。操作员需要确保这些存储不包含在 glance-api.conf 中的 enabled_backends 配置选项中。

只有在启用多后端的情况下,才会注入这些保留的存储,即 glance-api.conf 中定义了 enabled_backends 配置选项。如果未启用多后端,则 node_staging_uri 和 work_dir 配置选项将按原样工作。

示例代码展示了这些配置选项将如何注入和使用

reserved_stores = {
    'os_glance_staging_store': 'file',
    'os_glance_tasks_store': 'file'
}

enabled_backends = CONF.enabled_backends
if enabled_backends:
    enabled_backends.update(reserved_stores)

然后,操作员需要确保在 glance-api.conf 中定义以下部分

[os_glance_tasks_store]
filesystem_store_datadir = /var/lib/glance/tasks_work_dir

[os_glance_staging_store]
filesystem_store_datadir = /var/lib/glance/staging

注意:如果使用文件后端,则‘os_glance_tasks_store’和‘os_glance_staging_store’的 filesystem_store_datadir 路径应与实际路径不同。os_glance_* 前缀是 glance 保留的,操作员不能将其用于命名他们的存储。

‘os_glance_tasks_store’和‘os_glance_staging_store’将从‘stores-info’调用中排除,并且不会在创建镜像调用中作为‘backend’选项接受。

替代方案:

无,继续使用当前机制。

影响: DocImpact

时间线:

包含在 Train 版本中。

链接:

负责人:

abhishekk