Bug 1041029

Summary: [RFE][nova]: Add Support for Volume migration during Live (block) migration
Product: Red Hat OpenStack Reporter: RHOS Integration <rhos-integ>
Component: RFEsAssignee: RHOS Maint <rhos-maint>
Status: CLOSED UPSTREAM QA Contact:
Severity: low Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: markmc, yeylon
Target Milestone: ---Keywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
URL: https://blueprints.launchpad.net/nova/+spec/migrate-volume-block-migration
Whiteboard: upstream_milestone_none upstream_status_needs-code-review upstream_definition_obsolete
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-19 17:33:15 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description RHOS Integration 2013-12-12 13:27:08 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/nova/+spec/migrate-volume-block-migration.

Description:

Problem: 
In a production environment where multiple Cinder volume nodes are present,
some instances may have volumes attached to a Volume node that requires maintenance and/or
extended downtimes.

Solution:
To achieve proper volume migration, this support could be added in Nova's Live (block) migration
feature.
Proposal is to add support for volume migration during Instance Live (Block) migration.

 High level outline of steps:
    * On Source compute node, symlinks to the currently attached cinder volumes (/dev/disks/by-path/<iqn>) are created in the instance-xxx directory before starting block migration.
    * During pre live migration on destination compute node, symlinks are created to the new cinder volumes /dev/disks/by-path/<iqn> in the instance-xxx directory on destination compute node. And the new volumes are connected to the destination compute node's Hypervisor.
    * Data is copied from source volumes to corresponding destination volumes by nova/libvirt's migrateToUri since it considers them  ephemeral disks or disk images..
    * During post live migration:
        - On source compute node, we disconnect/detach and/or delete the attached volumes.
        - On destination compute node, we attach the destination volumes to the migrated instance.
    
Note: The data is copied by the migrateToURI method which treats the symlinks in instance-xxx directory as ephemeral disks or disk images and copies it block by block, hence this has to be done in block migration and cannot be done separately unless we want to handle the block copying of volumes oursevles instead of libvirt doing it.

Specification URL (additional information):

http://wiki.openstack.org/migrate-volume-block-migration