For every detached volume the nova-compute instance deletes all multipath devices from the host while detaching. This is working fine if the volumes are detached each by each, but not for multiple detachment.
Nova-compute always rescans the iscsi devices before it detaches them. The rescan reconnects all missing devices if the Volume is still available on the VNX. In the time between the iscsi devices are deleted and cinder-volume is actually detaching the volume on the vnx site, the iscsi connections will be always reconnected by any rescan. All detachments run into one thread on the host, so the detachment is done one by one. However the detachment on the cinder-volume site is done through multithreading and the nova-compute is not waiting between the detachments for cinder-volume to detach. So it can happen that the device is deleted and the next detachment of the next volume brings back the devices.
The next time a volume is attached to this VM on this host an error will occur. Or if this is working the the volume will stay in use until the VM is terminated. It is not possible to detach the volume again.
Also the information of the volume is not updated for the second detachment. The size stays the same also the new attachment is totally different.
3600601604781340063b2b4293601e411 dm-2 DGC ,VRAID
size=4.0G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=2 status=enabled
| |- 7:0:0:3 sdr 65:16 failed ready running
| `- 6:0:0:3 sdq 65:0 failed ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 9:0:0:3 sds 65:32 failed ready running
Influenced functions: volume( self, context, instance, bdm): in nova/compute/ manager. py t/volume. py
def _detach_
def _delete_mpath(self, iscsi_properties, multipath_device, ips_iqns): in nova/virtlibvir
Used backend: EMC VNX 5400
OS: Windriver/Ubuntu