Allow an attached volume to be extended¶
https://blueprints.launchpad.net/nova/+spec/nova-support-attached-volume-extend
Problem description¶
Currently a volume size extension requires that a volume be in the available state. This requires an attached volume to be detached from a server before the volume can be extended in size. This requires that a volume be brought offline from the standpoint of the application using the volume.
Use Cases¶
A end user wants to increase the size of a volume that is currently attached to a server.
Proposed change¶
Nova will be listening for attached volume extend notification from Cinder using the existing external-events API endpoint.
When the notification is received, Nova will trigger a rescanning of device on the host using os-brick to discover the change in volume size. The os-brick library already supports volume size extension through the Connector API method called “extend_volume” since 0.8.0.
The initial implementation aims to support virt drivers using os-brick such as libvirt and hyper-v.
The end user will have to perform a partition and/or filesystem resize in the guest to fully benefit from the new volume size.
Capabilities discovery and error handling if the compute host does not support the extend volume operation are being discussed on the openstack-dev mailinglist. [1]
Alternatives¶
None
Data model impact¶
None
REST API impact¶
A new microversion is required because a new external-event type will be added: volume-extended.
Proposed JSON request body for the new “volume-extended” event:
{
"events": [
{
"name": "volume-extended",
"server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",
"tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
}
]
}
Definition of fields:
- name
Name of the event. (“volume-extended” for this feature).
- tag
Volume UUID being extended.
- server_uuid
Server UUID to which the extended volume is attached.
Proposed JSON response body for the new “volume-extended” event:
{
"events": [
{
"name": "volume-extended",
"status": "completed",
"code": 200,
"server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",
"tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
}
]
}
Definition of fields:
- name
Name of the event. (“volume-extended” for this feature).
- status
- Event status. Possible values:
“completed” if accepted by Nova
“failed” if a failure is encountered
- code
- Event result code. Possible values:
200 means accepted
404 means the server could not be found
422 means the event cannot be processed because the instance was found to not be associated to a host.
- server_uuid
Same value as provided in original request.
- tag
Same value as provided in original request.
Possible HTTP response codes:
The HTTP response code 200 is returned on success.
The HTTP response code 207 is returned if any event fails with 422 code.
The HTTP response code 400 is returned on a bad request.
The HTTP response code 401 is returned if request is unauthorized. (keystone)
The HTTP response code 403 is returned if request is forbidden. (policy)
The HTTP response code 404 is returned if no server could be found.
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
The end user will be able to extend their volumes without having to detach them.
The end user will have to perform a partition and/or filesystem resize to fully benefit from the new volume size.
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
Driver owners may want to enable this feature in their driver.
Implementation¶
Assignee(s)¶
- Primary assignee:
mgagne
- Other contributors:
manas-mandlekar shyvenug@in.ibm.com
Work Items¶
Add new external-event type and new microversion
Call virt driver so guest detects the new volume size
Call the os-brick extend_volume API to trigger the host kernel size information to be updated on the attached host
Dependencies¶
The Cinder API changes to allow extend of an attached volume
Testing¶
Add Tempest test where the size of a volume attached to a server is extended and the new size can be discovered on the host.
Documentation Impact¶
Update the compute API reference documentation with new volume-extended event.
References¶
This blueprint is in conjunction with the work being done on the Cinder extend attached volume. [2]
History¶
Release Name |
Description |
---|---|
Pike |
Introduced |