在服务列表中报告后端状态

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”中提到的代码更改。

文档影响

  1. Cinder API 文档需要更新以反映 REST API 的更改。

参考资料

[1]https://docs.openstack.org/cinder/latest/contributor/drivers.html