在服务列表中报告后端状态¶
https://blueprints.launchpad.net/cinder/+spec/report-backend-state-in-service-list
存储驱动程序报告后端存储设备的状态,并让管理员操作员通过服务列表了解其状态,以便进行维护。
问题描述¶
目前,Cinder 无法将后端状态报告给服务,操作员只能知道 cinder-volume 进程已启动,但不知道后端存储设备是否正常。用户仍然可以创建卷并反复发生故障转移。为了使维护更容易,操作员可以通过服务列表查询存储设备状态,并更快地解决问题。如果设备状态为down,则表示卷创建将失败。
用例¶
在大型云系统中,系统中可能存在许多后端。如果卷、快照或其他资源的创建失败,操作员或云管理系统可以首先查询服务,并获取每个服务中的后端设备状态。如果设备状态为down,则指定该存储设备存在一些问题。为操作员/管理系统提供更多信息,以便更快地定位错误。
提议的变更¶
每个驱动程序通过在“get_volume_stats”中添加键/值对:“backend_state: up/down”[1] 来报告后端状态。
调用‘service list’时,从调度器获取每个后端的此信息。
如果上下文是管理员,则在服务列表 API 的响应体中添加‘backend_state: up/down’。
在所有驱动程序都支持此功能之前,如果 get_volume_stats 的结果不包含后端状态,Cinder 将默认将 backend_state 设置为‘up’。
备选方案¶
添加 cinder manage 命令以直接从驱动程序查询后端设备状态。
数据模型影响¶
无
REST API 影响¶
将 backend_state: up/down 添加到服务列表的响应体中,还需要为该功能添加微版本。
GET /v3/{project_id}/os-services
RESP BODY
{"services": [{"host": "host@backend1",
...,
"backend_status": "up",
},
{"host": "host@backend2",
...,
"backend_status": "down",
}]
}
安全影响¶
无
通知影响¶
无。
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
驱动程序维护者需要在报告卷统计信息时添加后端状态。
实现¶
负责人¶
- 主要负责人
wanghao<wanghao749@huawei.com>
工作项¶
在 Cinder API 和调度器中实现代码。
更新 cinderclient 以支持此功能。
更新 API 文档。
依赖项¶
无
测试¶
需要创建单元和 Tempest 测试来覆盖“Proposed change”中提到的代码更改。
文档影响¶
Cinder API 文档需要更新以反映 REST API 的更改。
参考资料¶
[1]https://docs.openstack.org/cinder/latest/contributor/drivers.html