Manila share 和 share snapshot 延迟删除¶
蓝图: https://blueprints.launchpad.net/manila/+spec/deferred-deletion
Manila 目前不支持 share 和 share snapshot 的延迟删除。此蓝图旨在添加对 share 和 share snapshot 延迟删除的支持。最终用户将使用 API 删除 share 和 share snapshot,然后 Manila 将分别执行 share 和 share snapshot 的延迟删除,从而立即释放配额。
问题描述¶
如果用户想要从 Manila 中删除 share 或 share snapshot,可以使用 API 删除它们。删除过程的 manila-API 部分完成得很快,而后端驱动程序需要时间。分配给 share 或 share snapshot 的配额在 share 或 share snapshot 完全删除之前不会被释放。这增加了创建新的 share 或 share snapshot 的等待时间。提供一种立即释放配额并执行延迟删除的方法将解决此问题。 自动化工作流程在创建新的 share 和/或 share snapshot 时也会遇到问题,因为它们必须等到后端驱动程序删除 share 或 share snapshot 后配额可用。
用例¶
在删除 share/share-snapshot 是中间步骤的自动化工作流程中,必须等待 share/share-snapshot 删除完毕。延迟删除允许自动化在无需等待驱动程序的情况下继续进行。
用户希望删除 share/share-snapshot 并检查可用的 share/share-snapshot 及其对应的千兆字节配额。
提议的变更¶
以下是需要进行的更改
将引入新的状态值 ‘DELETING_IN_DRIVER’ 和 ‘DELETING_IN_DRIVER_ERROR’,以标识将在延迟删除中处理的 share 实例。
添加新的配置选项 ‘deferred_deletion’,如果为 TRUE,则以延迟删除方式删除 share,如果为 FALSE,则 share 将以当前的方式删除。
一旦通过 API 请求删除 share 或 share-snapshot,配额将被回收,share/share-snapshot 实例将被移动到 ‘DELETING_IN_DRIVER’ 状态。在 share/share-snapshot 处于 ‘DELETING_IN_DRIVER’ 状态时,任何删除请求都将返回错误。将在 share manager 中添加一个每 300 秒运行一次的周期性任务,该任务获取所有处于 ‘DELETING_IN_DRIVER’ 状态的 share 实例。然后,share manager 将调用后端驱动程序来删除 share/share-snapshot 实例,并在成功删除后将其移动到 ‘DELETED’ 状态。删除过程中出现任何故障,将使 share/share-snapshot 实例进入 ‘DELETING_IN_DRIVER_ERROR’ 状态。只有管理员才能列出这些 share/share-snapshot,然后在存储上删除/清理它们,这些 share/share-snapshot 将被标记为 ‘DELETED’。周期性任务还会检查 ‘DELETING_IN_DRIVER_ERROR’ 状态下的 share/share-snapshot,并在之前的尝试 30 分钟后再次尝试删除它们。
后端驱动程序无需更改。
备选方案¶
与其添加新的状态值,我们可以立即将 share/share-snapshot 标记为 ‘DELETED’,并将这些 share/share-snapshot 移动到另一个项目。该项目将仅包含由 manila API 服务删除的 share/share-snapshot。share manager 将运行一个周期性任务来删除该项目中的 share 和 share-snapshot。在这种情况下,由于配额更早地被回收,share manager 将确保后端驱动程序必须删除 share 实例。
此方法的一个问题是,我们将在删除期间更改原始 share 的项目 ID,这可能是不希望发生的数据修改。
数据模型影响¶
share 实例表除了引入 ‘status’ 字段的两个新值外,没有其他更改。
CLI API 影响¶
无
REST API 影响¶
处于 ‘deleting_in_driver_error’ 状态的 share 和 share snapshot 对普通用户不可见。只有管理员才能列出/显示这些 share 和 share snapshot,因为他们可以对这种错误做出反应,例如清理它们。
驱动程序影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
如果配置了,最终用户现在将看到 ‘deleting_in_driver’ 和 ‘deleting_in_driver_error’ 状态,而不是 ‘deleting’ 和 ‘deleting_error’ 状态。此外,最终用户会观察到处于 ‘deleting_in_driver’ 状态的 share 已经立即释放了其配额。
云管理员可以通过 API 列出处于新状态的 share。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
kpdev(kinpaa@gmail.com)
工作项¶
实现周期性 share manager 函数来处理延迟删除。
实现tempest支持。
未来工作项目¶
无
依赖项¶
无
测试¶
单元测试
Tempest 测试
文档影响¶
文档字符串
Devref
用户指南
管理员指南
发布说明
参考资料¶
无