diff options
Diffstat (limited to '3 Resources/Openstack/Nova live migration volume.md')
-rw-r--r-- | 3 Resources/Openstack/Nova live migration volume.md | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/3 Resources/Openstack/Nova live migration volume.md b/3 Resources/Openstack/Nova live migration volume.md new file mode 100644 index 0000000..8b37f67 --- /dev/null +++ b/3 Resources/Openstack/Nova live migration volume.md @@ -0,0 +1,18 @@ +#openstack #nova #live-migration #volume + + +--- +Table cinder.volume_attachment, contains which volume_driver. target_lun `(<n>)` here maps to `dm-<n>`. +Luns are not unique across pod, each node has a target_lun 2 and thus dm-2 connected. + +os-brick is responsible for connecting volumes; +if connection_info it receives contains target_iqns, target_luns etc it will not do a scan and just returns those. +`@see os_brick/initiator/connectors/iscsi.py` + +`nova/virt/libvirt/driver.py -> def _connect_volume` does attaching of volumes using os-brick. Driver exposes some methods that do this and are called elsewhere: `swap_volume`, `attach_volume`, `pre_live_migration`. + +`pre_live_migration` is called by `nova/compute/manager.py` + +So in `nova/compute/manager.py` there is a function that does the rollback, and it rollbacks bdm's and deletes volume attachments before it calls `rollback_live_migration_at_destination` which in turn makes an attempt at deleting the actual volume attachment to the node. But at that point all objects have been rollbacked already so it has invalid information. + +If the code in new versions of openstack isn't any different i'll just make a bug report and see what they come up with. |