[openstack-dev] [nova][cinder] Austin summit nova/cinder cross-project session recap
mriedem at linux.vnet.ibm.com
Thu May 5 00:54:52 UTC 2016
On Thursday morning the Nova and Cinder teams got together for a
cross-project design summit session. The full etherpad is here .
This was all about volume multi-attach.
A subset of people from both teams were actually meeting weekly for four
weeks leading up to the summit to hash out some details which we hoped
to resolve at the summit. Unfortunately that didn't happen.
The first thing we wanted to settle was why do we actually want/need to
support volume multi-attach? Because "Cinder added it to their API in
Juno so Nova needs to support it" isn't a good reason. There are a few
drivers for this feature:
* The need for active/active and active/hot standby scenarios which
can't accept downtime due to attaching a new volume.
* Some database clusters, like Oracle RAC, require shared volumes. So
Trove is a stakeholder for this feature also.
* Other legacy application use cases were brought up that essentially
mean this is something they need to bridge a gap to adopting OpenStack.
So we agreed that while this is not really something we necessarily like
(because of the non-cloud legacy application nature of it), it is
necessary so we're going to continue trying to make it happen.
We then quickly went over what was completed in Mitaka and explained the
detach issue we ran into. The problem is when you have more than one
volume attached to the same instance on the same host, when you detach
one of them, both of the volume connections actually get terminated on
This problem is also complicated by the fact that some Cinder backends
will create one attachment per export/volume, whereas others will
multiplex all volumes onto one attachment.
Coming into the session we really had two competing solutions from the
Cinder team, one from Walter Boring and one from John Griffith. However,
during the session another idea was brought up from Dan Smith. The full
details are in the etherpad, but it's really an idea to abstract the
multiple volume attachments on the Cinder side that Nova only sees a
single volume, so Nova wouldn't have to change any of it's API handling
for Cinder volumes to be checking if they support multiattach or not,
and thus have to have conditional logic spread all over Nova (API,
compute, and virt drivers).
With Dan's idea we'd still have the disconnect/detach problem where Nova
would need to check if it can disconnect from the host if there is only
a single attachment left, but Nova has to do that regardless for all of
the proposed solutions.
It sounded like John Griffith had a similar idea before when looking at
this problem, and we spent a fair amount of time discussing it on both
sides during the session.
At the end of the session, we (Nova) came away with the following next
1. John Griffith (Cinder team) would work on a proof of concept for the
abstracted volume idea.
2. Cinder would work on adding a volume migration test to Tempest to be
run in the multi-node gate job (this needs to happen regardless). Scott
D'Angelo is going to work on this.
3. Ildikó Váncsa was going to work on the Nova volume disconnect ref
4. We'd meet on Friday during the Nova meetup session to discuss more
So what happened then was we met on Friday and found out that we were
all speaking different languages on Thursday, because the Cinder team
didn't think that they were going to be going with this new abstracted
volume idea. After much wailing and gnashing of teeth we agreed to do a
hangout shortly after the summit to try and get back on the same page.
So we're doing that tomorrow (5/5) at 1600 UTC. This is going to be at
least myself, Ildikó, Scott and Walter on the call. Walter has been
creating diagrams of the flows through Nova and Cinder for various
interactions like attach/detach of volumes and volume-backed live
migration so that we can try to step back and see where the proposed
changes fit in.
It's sounding like regardless of solution there will be changes to the
Cinder API (at least for os-initialize_connection). There might be some
new APIs too, for example, an API to get connection_info during live
migration without Nova having to call os-initialize_connection to get it.
So we'll see what happens. We'll eventually figure out. After all, it's
only code, right? :)
More information about the OpenStack-dev