支持恢复待删除镜像¶
https://blueprints.launchpad.net/glance/+spec/pending-delete-rollback
Glance 支持软删除镜像。如果启用此功能,当用户删除镜像时,镜像及其位置将首先进入一个特殊的 pending_delete 状态,该状态不会在 API 响应中显示。然后镜像将在一段时间内由 glance-scrubber 进程删除。但现在,没有办法将 pending_delete 状态的镜像恢复/回滚到 active 状态。
问题描述¶
延迟删除功能通常用于镜像过大,无法一次性删除的情况。使用此功能后,镜像数据将不会一次性删除,而是由 glance-scrubber 进程清理。问题在于,如果误删了镜像,则无法恢复删除操作。管理员唯一能做的是等待镜像数据被删除,然后重新上传镜像数据。
提议的变更¶
本提案旨在恢复处于 pending_delete 状态的镜像,以便为允许紧急操作恢复意外删除提供恢复能力。但是,请务必记住,是否可以恢复特定镜像取决于 Glance 配置选项设置和操作员的快速响应。
由于 pending_delete 镜像只能由 glance-scrubber 删除,并且这是一个管理员操作,因此无需公开新的 API。更好的方法是增强 glance-scrubber 以支持将镜像从 pending_delete 状态恢复到 active 状态。
将向 glance-scrubber 命令添加一个名为 –restore 的新参数。用法如下:glance-scrubber –restore <image_id>。glance-scrubber 首先会检查 scrubber 进程是否正在运行,如果是,则会引发错误消息,提示当前正在运行 scrubber,必须先将其终止 & scrubber 终止。如果不是,scrubber 将切换镜像状态从 pending_delete 到 active。
请确保在恢复 pending_delete 镜像之前先终止 glance-scrubber 守护进程,以避免镜像数据不一致。恢复镜像后,可以重新启动 glance-scrubber 守护进程。
限制¶
这旨在作为紧急操作,用于操作员无意中删除了重要的镜像,并立即意识到错误并采取行动在 glance-api.conf 文件中设置的 scrub_time 秒内。 pending-delete 状态是 Glance 的纯内部状态,镜像在 API 响应中仍然显示为处于 deleted 状态。因此,无法通过 API 确定镜像是否可以恢复。
此外,当镜像恢复时,其部分元数据将无法恢复。任何附加属性、标签或成员都不会被恢复。换句话说,这纯粹是一种可能的数据恢复操作,而不是完全的镜像恢复。
备选方案¶
不推荐的替代方法是创建一个新的 API 来恢复 pending_delete 镜像:
POST /v2/images/{images_id}/actions/revert
响应体可以如下所示:
Response: 200 OK
{
"status":"active",
"name":"cirros-0.3.1-x86_64-uec",
"tags":[
],
"kernel_id":"be50418b-a03c-4947-9122-b80a57f47ac4",
"container_format":"ami",
"created_at":"2017-09-11T08:42:14Z",
"ramdisk_id":"e1256074-9f7b-4067-8356-4a5759c1db11",
"disk_format":"ami",
"updated_at":"2017-09-11T08:42:16Z",
"visibility":"public",
"self":"/v2/images/26c16e07-24ca-4abc-a523-bec068012363",
"protected":false,
"id":"26c16e07-24ca-4abc-a523-bec068012363",
"file":"/v2/images/26c16e07-24ca-4abc-a523-bec068012363/file",
"checksum":"f8a2eeee2dc65b3d9b6e63678955bd83",
"min_disk":0,
"size":25165824,
"min_ram":0,
"schema":"/v2/schemas/image"
}
数据模型影响¶
允许镜像状态从 pending_delete 更改为 active。
REST API 影响¶
无。
安全影响¶
这是一个管理员操作。完全没有安全影响。
通知影响¶
无。
其他最终用户影响¶
对非管理员用户没有影响。对于管理员,他们可以通过 glance-scrubber 工具将镜像的状态从 pending_delete 回滚到 active。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
wangxiyuan(wangxiyuan@huawei.com)
工作项¶
修改
glance-scrubber以包含 –restore <image_id> 选项。修改镜像状态转换以允许:pending_delete -> active
更新相关文档和测试。
应添加发布说明。
依赖项¶
无
测试¶
应添加相关的单元测试。
文档影响¶
应更新相关的文档。
参考资料¶
无。