On 4/13/2017 6:53 PM, Andrew Laski wrote:


On Thu, Apr 13, 2017, at 12:45 PM, Matt Riedemann wrote:
This came up in the nova/cinder meeting today, but I can't for the life
of me think of why we don't unbind ports or terminate the connection
volumes when we shelve offload an instance from a compute host.

When you unshelve, if the instance was shelved offloaded, the conductor
asks the scheduler for a new set of hosts to build the instance on
(unshelve it). That could be a totally different host.

So am I just missing something super obvious? Or is this the most latent
bug ever?

It's at the very least a hack, and may be a bug depending on what
behaviour is being seen while the instance is offloaded or unshelved.

The reason that networks and volumes are left in place is because it
is/was the only way to prevent them from being used by another instance
and causing a subsequent unshelve to fail. During the unshelve operation
it is expected that they will then be shifted over to the new host the
instance lands on if it switches hosts.

This is similar to how resize is handled.  From an implementation point
of view you can think of shelve as being a really really long
resize/migration operation.

There very well may be issues with this approach.


--

Thanks,

Matt

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe:
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


I'm not advocating that we detach the volumes or ports - we can totally leave those coupled with the instance in the database (the port.device_id still points at the instance even though the port's binding details don't have a host set). The thing with the volume though is we need to terminate the connection to the backend for that host before we offload, because when we unshelve and initialize a new volume connection, there will now be two connections.

As noted elsewhere in the thread, there is a reported bug for this and some history around it. Calling terminate_connection will fix the issue for some backends in Cinder but not all (like it won't fix LVM). There is some other internal 'remove_export' call in Cinder that fixes it for LVM, but that is not exposed out of the API *except* through the os-detach API, which is precisely the thing we can't call for shelve offload for the reason you described.

--

Thanks,

Matt

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to