备份驱动初始化¶
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 测试以覆盖新功能。
文档影响¶
无