[openstack-dev] [nova][cinder][neutron] Cross-cell cold migration

Matt Riedemann mriedemos at gmail.com
Fri Aug 24 21:08:34 UTC 2018


On 8/23/2018 10:22 AM, Sean McGinnis wrote:
> I haven't gone through the workflow, but I thought shelve/unshelve could detach
> the volume on shelving and reattach it on unshelve. In that workflow, assuming
> the networking is in place to provide the connectivity, the nova compute host
> would be connecting to the volume just like any other attach and should work
> fine. The unknown or tricky part is making sure that there is the network
> connectivity or routing in place for the compute host to be able to log in to
> the storage target.

Yeah that's also why I like shelve/unshelve as a start since it's doing 
volume detach from the source host in the source cell and volume attach 
to the target host in the target cell.

Host aggregates in Nova, as a grouping concept, are not restricted to 
cells at all, so you could have hosts in the same aggregate which span 
cells, so I'd think that's what operators would be doing if they have 
network/storage spanning multiple cells. Having said that, host 
aggregates are not exposed to non-admin end users, so again, if we rely 
on a normal user to do this move operation via resize, the only way we 
can restrict the instance to another host in the same aggregate is via 
availability zones, which is the user-facing aggregate construct in 
nova. I know Sam would care about this because NeCTAR sets 
[cinder]/cross_az_attach=False in nova.conf so servers/volumes are 
restricted to the same AZ, but that's not the default, and specifying an 
AZ when you create a server is not required (although there is a config 
option in nova which allows operators to define a default AZ for the 
instance if the user didn't specify one).

Anyway, my point is, there are a lot of "ifs" if it's not an 
operator/admin explicitly telling nova where to send the server if it's 
moving across cells.

> 
> If it's the other scenario mentioned where the volume needs to be migrated from
> one storage backend to another storage backend, then that may require a little
> more work. The volume would need to be retype'd or migrated (storage migration)
> from the original backend to the new backend.

Yeah, the thing with retype/volume migration that isn't great is it 
triggers the swap_volume callback to the source host in nova, so if nova 
was orchestrating the volume retype/move, we'd need to wait for the swap 
volume to be done (not impossible) before proceeding, and only the 
libvirt driver implements the swap volume API. I've always wondered, 
what the hell do non-libvirt deployments do with respect to the volume 
retype/migration APIs in Cinder? Just disable them via policy?

-- 

Thanks,

Matt



More information about the OpenStack-dev mailing list