允许扩展已挂载的卷¶
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 |
引入 |