vsphere driver hardcoded to only use first datastore in cluster
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Opinion
|
Wishlist
|
Kiran Kumar Vaddi |
Bug Description
this applies to havana master
One of the biggest stumbling blocks for people using the vSphere driver is that is has very poor flexibility in terms of choosing which datastore a VM will be placed on. It simply picks the first datastore the API returns.
I see people asking for two improvements:
- being able to choose the datastore(s) used.
- being able to "spread" disk images across datastore.
One simple mechanism that seems like it could help a lot would be if the user could specify a "datastore_regex", and the behavior of the vSphere driver would be to "round-robin" disk images across any datastore in the cluster that matched this regex. Note, if true round-robin is hard, random + a check for capacity would probably be a good approximation.
Changed in nova: | |
assignee: | nobody → Shawn Hartsock (hartsock) |
summary: |
- vsphere driver hardcoded to only use first datastore in cluster + vsphere driver hardcoded to only use first datastore in vCenter |
summary: |
- vsphere driver hardcoded to only use first datastore in vCenter + vsphere driver hardcoded to only use first datastore in cluster |
Changed in nova: | |
status: | New → Confirmed |
importance: | Undecided → Wishlist |
Changed in nova: | |
milestone: | none → havana-2 |
Changed in nova: | |
milestone: | havana-2 → none |
milestone: | none → havana-3 |
Changed in nova: | |
milestone: | havana-3 → havana-rc1 |
Changed in nova: | |
milestone: | havana-rc1 → none |
Changed in nova: | |
importance: | Wishlist → High |
importance: | High → Wishlist |
importance: | Wishlist → High |
description: | updated |
Changed in nova: | |
importance: | High → Wishlist |
As per discussion on 5/15/13 on IRC, HP is looking into this issue and will be addressing soon.
Below is the approach:
Currently the first datastore of the cluster is selected for provisioning. This results in the following.
1. If the first datastore is not accessible, provisioning fails.
2. If the first datastore is full, provisioning fails.
3. If the first datastore happens to be a the local volume of the ESX host, cluster capabilities such as DRS cannot be exploited.
The proposed change is to ensure the method get_datastore_ ref_and_ name handles:
1. Select a datastore if it is accessible and meets the memory requirement criteria, depending on the flavor of the VM / image size used for provisioning.
2. Select a datastore which is sharable between hosts of a cluster instead of selecting a datastore local to a host.