Support LVM on a shared storage volume

Registered by Mitsuhiro Tanino on 2014-01-31

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

Status:
Complete
Approver:
John Griffith
Priority:
Low
Drafter:
Mitsuhiro Tanino
Direction:
Needs approval
Assignee:
Mitsuhiro Tanino
Definition:
Obsolete
Series goal:
None
Implementation:
Needs Code Review
Milestone target:
None
Started by
Mitsuhiro Tanino on 2014-06-05
Completed by
Sean McGinnis on 2015-10-08

Related branches

Sprints

Whiteboard

==========================
#openstack-meeting: Cinder
==========================
Meeting started by DuncanT- at 16:02:28 UTC.

* New LVM (DuncanT-, 16:21:46)
  * LINK:
    https://blueprints.launchpad.net/cinder/+spec/lvm-driver-for-shared-storage
    (mtanino, 16:21:49)
  * ACTION: mtanino To tell us more at the design summit (DuncanT-,
    16:36:52)

Gerrit topic: https://review.openstack.org/#q,topic:bp/s,n,z

Addressed by: https://review.openstack.org/92479
    LVM: Support a volume-gorup on shared storage

<jdg>

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.

Gerrit topic: https://review.openstack.org/#q,topic:bp/lvm-driver-for-shared-storage,n,z

Addressed by: https://review.openstack.org/129352
    LVM: Support a volume-group on shared storage

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.