Dell PowerMax Live Migration Fails Without a Pool Name
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Cinder |
Fix Released
|
Undecided
|
dell openstack engineering |
Bug Description
Observed on 2023.1
In cinder, we have a volume type that only specifies the volume_
Because we don't use a pool_name in the extra specs, we need to configure the service level and workload in the cinder.conf. In our config we use the following variables:
powermax_array
powermax_srp
powermax_
vmax_workload
We understand that Dell recommends using the pool_name, but we need to be able to validate the workflow on creating an instance that creates a volume, as you do not have the option of specifying volume type and Nova will use the default volume type.
We also have cross az attach set to false.
In this configuration, we are able to create instances that create volumes, and create volumes by themselves without issue.
When we try to live migrate, within the AZ, we experience failures. The traceback is below.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.964 33 ERROR cinder.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
2023-09-07 23:27:09.965 33 ERROR oslo_messaging.
It appears that the line of code that is causing this problem is here:
https:/
In order to correct this on our environment, I made an adhoc change that probably is not ideal, but restores the functionality:
if 'pool_name' in extra_specs:
else:
]
Using this causes the driver to look at the configuration from the cinder.conf if pool_name is not present in the volume type. It also maintains the pool_name functionality.
We would like to get this updated ASAP as it impacts live migration ability in environments using PowerMax, and it is not documented that this function would fail without pool_name specified. Live migration is a core function that is required for our environment.
Changed in cinder: | |
assignee: | nobody → dell openstack engineering (dell-openstack) |
Changed in cinder: | |
status: | Confirmed → In Progress |
I found another area where this is broken:
2023-09-08 21:37:55.164 33 ERROR cinder. volume. manager [None req-5bd7be95- 6eed-4828- ab16-be3d99de3c 54 bf5e54827fb63a5 f1517efaaf4d9ed 3729b7db2cac96a b84f20b01b8e37e 37c6 486de587f28541b 0be62a90ac6abb3 57 - - - -] Volume b77e3484- 5acb-4151- bc6f-6200c28bdd 97: driver error when trying to retype, falling back to generic mechanism.: AttributeError: 'NoneType' object has no attribute 'split' volume. manager Traceback (most recent call last): volume. manager File "/var/lib/ kolla/venv/ lib64/python3. 9/site- packages/ cinder/ volume/ manager. py", line 3095, in retype volume. manager ret = self.driver. retype( context, volume. manager File "/var/lib/ kolla/venv/ lib64/python3. 9/site- packages/ cinder/ volume/ drivers/ dell_emc/ powermax/ fc.py", line 652, in retype volume. manager return self.common. retype( volume, new_type, host) volume. manager File "/var/lib/ kolla/venv/ lib64/python3. 9/site- packages/ cinder/ volume/ drivers/ dell_emc/ powermax/ common. py", line 3984, in retype volume. manager return self._slo_ workload_ migration( device_ id, volume, host, volume. manager File "/var/lib/ kolla/venv/ lib64/python3. 9/site- packages/ cinder/ volume/ drivers/ dell_emc/ powermax/ common. py", line 4007, in _slo_workload_ migration volume. manager do_change_ compression = (self.utils. change_ compression_ type( volume. manager File "/var/lib/ kolla/venv/ lib64/python3. 9/site- packages/ cinder/ volume/ drivers/ dell_emc/ powermax/ utils.py" , line 561, in change_ compression_ type volume. manager is_target_ compr_disabled = self.is_ compression_ disabled( extra_specs) volume. manager File "/var/lib/ kolla/venv/ lib64/python3. 9/site- packages/ cinder/ volume/ drivers/ dell_emc/ powermax/ utils.py" , line 545, in is_compression_ disabled volume. manager __, __, service_level, __ = self.parse_ specs_from_ pool_name( volume. manager File "/var/lib/ kolla/venv/ lib64/python3. 9/site- packages/ cinder/ volume/ drivers/ dell_emc/ powermax/ utils.py" , line 2095, in parse_specs_ from_pool_ name volume. manager pool_details = pool_name. split(' +') volume. manager AttributeError: 'NoneType' object has no attribute 'split' volume. manager
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
2023-09-08 21:37:55.164 33 ERROR cinder.
This was during a volume re-type action, where we were changing the type to one without a pool_name. It would appear we are not looking at the conf values during these actions, yet the re-type continued and was successful.