glance-scrubber

Glance 清理服务

作者:

OpenStack Glance 项目团队

联系方式:

glance@lists.launchpad.net

日期:

2025-04-02

版权:

OpenStack 基金会

版本:

30.0.0

手册章节:

1

手册组:

云计算

概要

glance-scrubber [options]

描述

glance-scrubber 是一个实用工具,允许操作员配置 Glance 以异步删除镜像,或将镜像的状态从 pending_delete 恢复为 active。 这是否适合您的部署取决于您使用的存储后端以及 Glance 安装处理的典型镜像大小。

Glance 中的镜像实际上是镜像记录(存储在数据库中)和镜像数据文件(存储在存储后端中)的组合。 在正常操作下,image-delete 调用是同步的,也就是说,Glance 接收到 DELETE 请求,从存储后端删除镜像数据,然后从数据库中删除镜像记录,最后返回 204 作为调用的结果。 如果后端速度快且删除时间与数据大小无关,这些操作会很快发生。 但是,对于删除时间与数据大小相关的后端,image-delete 操作可能需要大量时间才能完成,以至于客户端可能会超时等待响应。 这反过来导致用户不满。

为了避免这个问题,Glance 有一个 delayed_delete 配置选项(默认值为 False),可以在 glance-api.conf 文件中设置。 启用此选项后,当 Glance 接收到 DELETE 请求时,它只会执行请求的数据库部分,将镜像的状态标记为 pending_delete,并立即返回。(pending_delete 状态对用户不可见;对该镜像的 image-show 请求将返回 404。) 但是,重要的是要注意,当 delayed_delete 启用时,Glance 不会从存储后端删除镜像数据。 这就是 glance-scrubber 发挥作用的地方。

glance-scrubber 清理已删除的镜像。 如果您使用 delayed_delete 启用 Glance,您必须偶尔运行 glance-scrubber,否则您的存储后端最终将充满“已删除”的镜像数据。

glance-scrubber 还可以将镜像恢复为 active,如果操作员错误地删除了镜像并且 Glance 中启用了 pending-delete。 请确保在恢复镜像之前 glance-scrubber 未运行,以避免镜像数据不一致。

glance-scrubber 的配置在 glance-scrubber.conf 文件中完成。 选项在示例配置文件中的注释中详细说明,因此我们仅在此处指出其中的几个选项。

scrub_time

镜像保持在 pending_delete 状态的最小时间(秒),默认为 0

scrub_pool_size

配置线程池,以便并行执行清理(默认值为 1,即串行清理)

daemon

一个布尔值,指示清理程序是否应作为守护进程运行(默认值为 False)

wakeup_time

当清理程序以守护进程模式运行时,运行之间的秒数(如果清理程序未以守护进程模式运行,则忽略)

metadata_encryption_key

如果您的 glance-api.conf 为此选项设置了值(默认情况下保持未设置),则必须在您的 glance-scrubber.conf 中包含相同的设置,否则清理程序将无法确定您的镜像数据的位置。

restore

当镜像被错误删除时,将指定镜像的状态从“pending_delete”恢复为“active”。

[database]

从 Glance 的 Queens 版本(16.0.0)开始,glance-scrubber 不使用已弃用的 Glance 注册表,而是直接联系 Glance 数据库。 因此,您的 glance-scrubber.conf 文件必须包含一个 [database] 部分,指定相关信息。

[glance_store]

此文件部分包含 Glance 安装使用的存储后端的配置信息。

通常情况下,您的 glance-api.conf[database][glance_store] 配置组中的内容也应进入您的 glance-scrubber.conf。 当然,如果您已经高度定制了您的设置,您比我们更清楚您在做什么。 关键是清理程序需要能够访问 Glance 数据库以确定需要清理哪些镜像(并在从存储后端删除关联数据后将它们标记为已删除),并且它需要 glance_store 信息才能删除镜像数据。

选项

常规选项

-h, --help

显示帮助信息并退出

--version

打印版本号并退出

-v, --verbose

打印更详细的输出

--noverbose

禁用详细输出

-d, --debug

打印调试输出(将日志级别设置为 DEBUG,而不是默认的 WARNING 级别)

--nodebug

禁用调试输出

--use-syslog

使用 syslog 进行日志记录

--nouse-syslog

禁用使用 syslog 进行日志记录

--syslog-log-facility SYSLOG_LOG_FACILITY

接收日志行的 syslog facility

--config-dir DIR

从中提取 *.conf 文件的配置目录路径。此文件集按排序方式排列,以便在单个选项被覆盖时提供可预测的解析顺序。该集在通过之前的 –config-file 参数指定的文件之后进行解析,因此目录中的覆盖选项优先。这意味着指定 config-dir 中的配置始终优先于通过 –config-file 指定的文件中的配置,无论参数顺序如何。

--config-file PATH

要使用的配置文件路径。可以通过多次使用此标志来指定多个配置文件,例如,–config-file <file1> –config-file <file2>。后面的文件中的值优先。

--log-config-append PATH --log-config PATH

日志配置文件的名称。它不会禁用现有的记录器,只是将指定的日志配置附加到任何其他现有的日志选项。有关日志配置文件的详细信息,请参阅 Python logging 模块文档。此选项的 log-config 名称已被弃用。

--log-format FORMAT

一个 logging.Formatter 日志消息格式字符串,可以使用任何可用的 logging.LogRecord 属性。默认值:None

--log-date-format DATE_FORMAT

日志记录中 %(asctime)s 的格式字符串。默认值:None

--log-file PATH, --logfile PATH

(可选) 输出到的日志文件名。如果未设置,日志将输出到 stdout。

--log-dir LOG_DIR, --logdir LOG_DIR

(可选) 存储日志文件的目录(将附加到 –log-file 前面)

-D, –daemon

作为长期运行的进程运行。 如果未指定(默认值),则运行一次清理操作然后退出。 如果指定,则不要退出并在 config 中指定的 wakeup_time 间隔运行清理。

–nodaemon

–daemon 的反向操作。 运行一次清理操作然后退出。 默认情况下是这样。

–restore <IMAGE_ID>

将指定的镜像状态从“pending_delete”恢复为“active”。

文件

/etc/glance/glance-scrubber.conf

Glance 清理程序的默认配置文件

请参阅

错误

  • Glance 错误在 Launchpad 中跟踪,因此您可以在 OpenStack Glance 上查看当前错误