允许扩展已挂载的卷

https://blueprints.launchpad.net/nova/+spec/nova-support-attached-volume-extend

问题描述

目前,卷大小扩展要求卷处于可用状态。 这要求已挂载的卷在扩展大小之前从服务器上卸载。 这要求从使用该卷的应用程序的角度来看,该卷被离线。

用例

最终用户希望增加当前已挂载到服务器上的卷的大小。

提议的变更

Nova 将监听 Cinder 通过现有的 external-events API 端点发送的已挂载卷扩展通知。

收到通知后,Nova 将使用 os-brick 触发主机上设备的重新扫描,以发现卷大小的变化。 os-brick 库自 0.8.0 版本以来,已经通过 Connector API 方法“extend_volume”支持卷大小扩展。

初始实现旨在支持使用 os-brick 的 virt 驱动程序,例如 libvirt 和 hyper-v。

最终用户需要在客户机中执行分区和/或文件系统调整大小,才能充分利用新的卷大小。

关于计算主机是否支持扩展卷操作的功能发现和错误处理,正在 openstack-dev 邮件列表中讨论。 [1]

备选方案

数据模型影响

REST API 影响

需要一个新的微版本,因为将添加一个新的外部事件类型:volume-extended。

新“volume-extended”事件的建议 JSON 请求体

{
    "events": [
        {
            "name": "volume-extended",
            "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",
            "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
        }
    ]
}

字段定义

name

事件名称。(对于此功能为“volume-extended”)。

tag

正在扩展的卷 UUID。

server_uuid

已扩展卷所附加的服务器 UUID。

新“volume-extended”事件的建议 JSON 响应体

{
    "events": [
        {
            "name": "volume-extended",
            "status": "completed",
            "code": 200,
            "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",
            "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
        }
    ]
}

字段定义

name

事件名称。(对于此功能为“volume-extended”)。

status
事件状态。 可能的值
  • “completed” 如果被 Nova 接受

  • “failed” 如果遇到故障

代码
事件结果代码。 可能的值
  • 200 表示已接受

  • 404 表示找不到服务器

  • 422 表示由于实例未与主机关联,因此无法处理该事件。

server_uuid

与原始请求中提供的值相同。

tag

与原始请求中提供的值相同。

可能的 HTTP 响应代码

  • 成功时返回 HTTP 响应代码 200。

  • 如果任何事件以 422 代码失败,则返回 HTTP 响应代码 207。

  • 如果请求无效,则返回 HTTP 响应代码 400。

  • 如果请求未经授权,则返回 HTTP 响应代码 401。(keystone)

  • 如果请求被禁止,则返回 HTTP 响应代码 403。(policy)

  • 如果找不到服务器,则返回 HTTP 响应代码 404。

安全影响

通知影响

其他最终用户影响

最终用户将能够在不卸载卷的情况下扩展卷。

最终用户需要在客户机中执行分区和/或文件系统调整大小,才能充分利用新的卷大小。

性能影响

其他部署者影响

开发人员影响

驱动程序所有者可能希望在其驱动程序中启用此功能。

实现

负责人

主要负责人

mgagne

其他贡献者

manas-mandlekar shyvenug@in.ibm.com

工作项

  • 添加新的外部事件类型和新的微版本

  • 调用 virt 驱动程序,以便客户机检测到新的卷大小

  • 调用 os-brick extend_volume API,以触发主机内核大小信息在附加主机上更新。

依赖项

  • Cinder API 更改以允许扩展已挂载的卷

测试

添加 Tempest 测试,其中扩展了附加到服务器上的卷的大小,并且可以在主机上发现新的大小。

文档影响

使用新的 volume-extended 事件更新计算 API 参考文档。

参考资料

此蓝图与 Cinder 扩展已挂载卷所做的工作相关联。 [2]

历史

修订版

发布名称

描述

Pike

引入