Support LVM on a shared storage volume

Registered by Mitsuhiro Tanino

This proposal enables direct I/O path from VMs to storage using LVM driver
with LVM on shared storage volume. By enabling direct I/O path provides
stable I/O path for VMs and improve throughput to VMs.

Current LVM driver only supports I/O path from VMs to storage through
SCSI target such as tgtd or LIO. Using SCSI target has many benefits,
whereas there are some concerns as follows.

1. VMs can't issue I/O to the storage directly.
    If the target stops accidentally, all I/O from VMs stops and VMs
    might be crashed.

2. Total I/O bandwidth is limited to bandwidth of a node which has
    Cinder volume service because of SCSI target.
    ex. Total I/O bandwidth is, control node(10Ggps)

This proposal adds support for a LVM(Volume Group) on a shared storage
volume to LVM driver.
Using shared LVM, VMs which have Cinder volume can issue I/O directly to
backend storage via FC/iSCSI.

These are benefits of shared LVM driver.
1. Stability of I/O path will be improved, because this driver does
    not require SCSI target.

2. Total I/O bandwidth will be improved, because each control and
    compute nodes can use own I/O path directly.
    ex. Total I/O bandwidth is, control node(10Ggps) + compute(10Gbps)xN.

3. Reduce workloads of control node because tgtd or LIO Target are
    not necessary.

Blueprint information

Not started
Mitsuhiro Tanino
Needs approval
Mitsuhiro Tanino
Series goal:
Milestone target:

Related branches



Removed from next, as next is now reserved for near misses from the last milestone --johnthetubaguyRemoved from next, as next is now reserved for near misses from the last milestone --johnthetubaguy

If you are still working on this, please re-submit via nova-specs. If not, please mark as obsolete, and add a quick comment to describe why. --johnthetubaguy (20th April 2014)
Gerrit topic:,topic:bp/for,n,z

Addressed by:
    LVM: Support a volume-gorup on shared storage

Gerrit topic:,topic:bp/s,n,z

Addressed by:
    LVM: Support a volume-gorup on shared storage

Gerrit topic:,topic:bp/lvm-driver-for-shared-storage,n,z

Addressed by:
    Create module containing helper API for LVM

You should not set a milestone target unless the blueprint has been properly prioritized by the project drivers.
(This is an automated message)


After quite a bit of walking through this and discussion via IRC I think some of the motivation and intent here isn't really clear up front. The actual performance gain is fairly limited, and to fix that up I'd much rather see us add an FC connector to be used with the existing LVM driver.

That being said there are a couple of intents here that aren't very clear. Basically the intent as I understand it is to be able to attach and FC SAN storage device to the compute nodes in OpenStack and share a VG across all of them. Further the idea would be to use that shared VG as ephemeral storage across the instances, and be able to do things like create an LVM snapshot to boot a new instance etc.

This in principle def has some advantages and makes sense for Nova. It doesn't however fit with Cinder at all. The proposal is to have the compute node (Nova) perform all of these operations and manage the volume which adds no real benefit in my opinion especially if you use it for persistent/attached storage.

There seem to be a lot of motivations for this that aren't called out, most of which are related to moving control of the volumes to Nova and doing things like using snapshots to attach as volumes etc. It doesn't fit with Cinder at all currently, as for the Nova side I think there are better alternatives for this like using Cinder to share ephemeral storage to compute nodes.

Addressed by:
    LVM: Support a volume-group on shared storage


Work Items

This blueprint contains Public information 
Everyone can see this information.