备份驱动初始化

https://blueprints.launchpad.net/cinder/+spec/backup-init

我们不在服务启动时初始化 Cinder 备份驱动。这意味着即使无法连接到备份存储,cinder-backup 服务也可以启动并运行。

问题描述

Cinder 备份管理器不会验证备份驱动是否成功初始化。如果 cinder-backup 成功启动,我们可以创建卷备份。这些备份始终处于“错误”状态,租户用户无法删除它们。

用例

如果无法连接到备份存储,Cinder 备份服务应标记为“down”。

提议的变更

我们应该为 Cinder 备份引入与卷管理器和驱动程序相同机制

  • 在备份管理器中引入 ‘init_host’ 方法,该方法将在服务启动时调用,并验证备份驱动是否已初始化:验证驱动程序的配置是否正确,具体取决于驱动程序,我们可以检查与存储的连接、可用备份列表等。

  • 如果备份驱动初始化失败,管理器会将备份服务标记为“down”。

如果初始化失败,Cinder 将根据 ‘periodic_interval’ 配置选项的值定期重试。

备份服务应在 ‘service_down_time’ 时间间隔内初始化,否则将被标记为“down”。

备选方案

在备份创建调用时检查备份存储是否可用。如果存储不可用,请从备份对象中删除“host”字段。我们可以尝试在其他主机上重新安排备份创建。

数据模型影响

REST API 影响

安全影响

通知影响

将添加新的备份初始化失败和成功的通知。

其他最终用户影响

如果备份未在后端创建,用户可以删除错误状态的备份。

性能影响

其他部署者影响

将添加新的 ‘backup_periodic_initialization’ 和 ‘backup_initialization_timeout’ 配置选项。部署者如果需要,必须启用 ‘backup_periodic_initialization’。

开发人员影响

备份驱动程序开发者应实现新的 API。

实现

负责人

主要负责人

Ivan Kolodyazhny <e0ne@e0ne.info>

其他贡献者

备份驱动程序维护者。

工作项

  • 在基本备份驱动程序中实现 ‘do_setup’ 方法,该方法不执行任何操作

  • 在每个备份驱动程序中实现 ‘do_setup’。

  • 在备份管理器 ‘init_host’ 调用期间调用驱动程序的 ‘do_setup’。

依赖项

测试

应实现单元和 Tempest 测试以覆盖新功能。

文档影响

参考资料