[openstack-dev] [nova][cinder] volumes stuck detaching attaching and force detach
Walter A. Boring IV
walter.boring at hpe.com
Mon Feb 22 22:08:02 UTC 2016
On 02/22/2016 11:24 AM, John Garbutt wrote:
> Hi,
>
> Just came up on IRC, when nova-compute gets killed half way through a
> volume attach (i.e. no graceful shutdown), things get stuck in a bad
> state, like volumes stuck in the attaching state.
>
> This looks like a new addition to this conversation:
> http://lists.openstack.org/pipermail/openstack-dev/2015-December/082683.html
> And brings us back to this discussion:
> https://blueprints.launchpad.net/nova/+spec/add-force-detach-to-nova
>
> What if we move our attention towards automatically recovering from
> the above issue? I am wondering if we can look at making our usually
> recovery code deal with the above situation:
> https://github.com/openstack/nova/blob/834b5a9e3a4f8c6ee2e3387845fc24c79f4bf615/nova/compute/manager.py#L934
>
> Did we get the Cinder APIs in place that enable the force-detach? I
> think we did and it was this one?
> https://blueprints.launchpad.net/python-cinderclient/+spec/nova-force-detach-needs-cinderclient-api
>
> I think diablo_rojo might be able to help dig for any bugs we have
> related to this. I just wanted to get this idea out there before I
> head out.
>
> Thanks,
> John
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> .
>
The problem is a little more complicated.
In order for cinder backends to be able to do a force detach correctly,
the Cinder driver needs to have the correct 'connector' dictionary
passed in to terminate_connection. That connector dictionary is the
collection of initiator side information which is gleaned here:
https://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L99-L144
The plan was to save that connector information in the Cinder
volume_attachment table. When a force detach is called, Cinder has the
existing connector saved if Nova doesn't have it. The problem was live
migration. When you migrate to the destination n-cpu host, the
connector that Cinder had is now out of date. There is no API in Cinder
today to allow updating an existing attachment.
So, the plan at the Mitaka summit was to add this new API, but it
required microversions to land, which we still don't have in Cinder's
API today.
Walt
More information about the OpenStack-dev
mailing list