[openstack-dev] [nova] Moving storage placement out of the driver

Jay Pipes jaypipes at gmail.com
Tue Nov 1 15:37:45 UTC 2016

On 11/01/2016 10:41 AM, Matthew Booth wrote:
> For context, this is a speculative: should we, shouldn't we?
> The VMware driver currently allows the user to specify what storage
> their instance will use, I believe using a flavor extra-spec. We've also
> got significant interest in adding the same to the libvirt driver, but
> we've got some additional plumbing work to do first to allow us to
> persist this metadata per-instance, independent of the host
> configuration. It was my intention to add this logic to the libvirt
> driver along similar lines.
> At the same time, we're adding resource providers. It's my layman's
> understanding that a storage pool (in the abstract, not referring to a
> particular implementation) will be modelled as a resource provider. A
> host can, theoretically at least, have arbitrarily many of these, and
> one may be attached to multiple hosts.

Yup, exactly correct.

> As it stands today, ComputeManager specifies what disks an instance
> should have, and how large they should be. Where to put them is down to
> the driver.

Yes, mostly. I don't think it's really the compute *manager* object that 
specifies what disks an instance should have (it's this [1] code in the 
Nova compute RPC server api layer that does this actually), but 
regardless, yes, which target block device should be used for which 
instance disk is up to the virt driver.

[1] https://github.com/openstack/nova/blob/master/nova/compute/api.py#L713

 > If we're modelling this outside the driver and at least 2
> drivers are implementing it, I wonder if we shouldn't be implementing
> storage policy at a higher level than the driver.

Hmm, yes and no. I think it should be a higher-than-virt-driver layer 
that determines what *amount* of total disk storage be used for an 
instance and which resource provider(s) should provide this disk 
storage, but I think it's up to the virt driver to determine which of 
the instance's disks get created on which block device.

That make sense? It's more about keeping separate the process of 
accounting for disk resource usage and the process of determining 
instance disk to block device mapping.


> Thoughts?
> Matt
> --
> Matthew Booth
> Red Hat Engineering, Virtualisation Team
> Phone: +442070094448 (UK)

More information about the OpenStack-dev mailing list