Activity log for bug #1675276

Date Who What changed Old value New value Message
2017-03-23 06:28:16 Zhenyu Zheng bug added bug
2017-03-23 06:47:08 Zhenyu Zheng description TBA Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information.
2017-03-23 06:53:35 Zhenyu Zheng description Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. How to re-produce: #1 shelve an instance stack@SZX1000280461:/opt/devstack$ nova list ---+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ stack@SZX1000280461:/opt/devstack$ nova shelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | SHELVED_OFFLOADED | - | Shutdown | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ # 2 attach a cinder volume to the shelved insntace: stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | available | test1 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ stack@SZX1000280461:/opt/devstack$ nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | in-use | test1 | 1 | lvmdriver-1 | false | bd09421c-90b2-411c-99d0-fcf07338c542 | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ nova show test2 +--------------------------------------+----------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------------------------+ | Kevin network | 10.0.0.76, 172.24.4.10 | | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hostname | test2 | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000004 | | OS-EXT-SRV-ATTR:kernel_id | | | OS-EXT-SRV-ATTR:launch_index | 0 | | OS-EXT-SRV-ATTR:ramdisk_id | | | OS-EXT-SRV-ATTR:reservation_id | r-z869pf5v | | OS-EXT-SRV-ATTR:root_device_name | /dev/vda | | OS-EXT-SRV-ATTR:user_data | - | | OS-EXT-STS:power_state | 4 | | OS-EXT-STS:task_state | - | | OS-EXT-STS:vm_state | shelved_offloaded | | OS-SRV-USG:launched_at | 2017-03-23T02:34:04.000000 | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2017-03-23T02:33:19Z | | description | - | | flavor | ds1G (d2) | | hostId | | | host_status | | | id | bd09421c-90b2-411c-99d0-fcf07338c542 | | image | CentOS (d826a98b-4ab5-4ce1-93f4-394193abaa51) | | key_name | kevin_322 | | locked | False | | metadata | {} | | name | test2 | | os-extended-volumes:volumes_attached | [{"id": "a72f9642-ca8f-4c2e-bfe0-362c6220d498", "delete_on_termination": false}] | | security_groups | default | | status | SHELVED_OFFLOADED | | tags | [] | | tenant_id | 4f705543436648abbacf5719d3397c0f | | updated | 2017-03-23T02:57:54Z | | user_id | 46a372c04e38463b898dc71626d8846a | +--------------------------------------+----------------------------------------------------------------------------------+ #3 Unshelve the instance: stack@SZX1000280461:/opt/devstack$ nova unshelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ #4 Check details in cinder: root@SZX1000280461:~# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '16e65459-23e9-4af9-8481-c75366d4f51b', 'attached_at': '2017-03-23T06:11:26.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': None, 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T06:11:58.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-03-23 08:16:23 Zhenyu Zheng description Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. How to re-produce: #1 shelve an instance stack@SZX1000280461:/opt/devstack$ nova list ---+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ stack@SZX1000280461:/opt/devstack$ nova shelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | SHELVED_OFFLOADED | - | Shutdown | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ # 2 attach a cinder volume to the shelved insntace: stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | available | test1 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ stack@SZX1000280461:/opt/devstack$ nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | in-use | test1 | 1 | lvmdriver-1 | false | bd09421c-90b2-411c-99d0-fcf07338c542 | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ nova show test2 +--------------------------------------+----------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------------------------+ | Kevin network | 10.0.0.76, 172.24.4.10 | | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hostname | test2 | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000004 | | OS-EXT-SRV-ATTR:kernel_id | | | OS-EXT-SRV-ATTR:launch_index | 0 | | OS-EXT-SRV-ATTR:ramdisk_id | | | OS-EXT-SRV-ATTR:reservation_id | r-z869pf5v | | OS-EXT-SRV-ATTR:root_device_name | /dev/vda | | OS-EXT-SRV-ATTR:user_data | - | | OS-EXT-STS:power_state | 4 | | OS-EXT-STS:task_state | - | | OS-EXT-STS:vm_state | shelved_offloaded | | OS-SRV-USG:launched_at | 2017-03-23T02:34:04.000000 | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2017-03-23T02:33:19Z | | description | - | | flavor | ds1G (d2) | | hostId | | | host_status | | | id | bd09421c-90b2-411c-99d0-fcf07338c542 | | image | CentOS (d826a98b-4ab5-4ce1-93f4-394193abaa51) | | key_name | kevin_322 | | locked | False | | metadata | {} | | name | test2 | | os-extended-volumes:volumes_attached | [{"id": "a72f9642-ca8f-4c2e-bfe0-362c6220d498", "delete_on_termination": false}] | | security_groups | default | | status | SHELVED_OFFLOADED | | tags | [] | | tenant_id | 4f705543436648abbacf5719d3397c0f | | updated | 2017-03-23T02:57:54Z | | user_id | 46a372c04e38463b898dc71626d8846a | +--------------------------------------+----------------------------------------------------------------------------------+ #3 Unshelve the instance: stack@SZX1000280461:/opt/devstack$ nova unshelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ #4 Check details in cinder: root@SZX1000280461:~# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '16e65459-23e9-4af9-8481-c75366d4f51b', 'attached_at': '2017-03-23T06:11:26.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': None, 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T06:11:58.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. How to re-produce: #1 shelve an instance stack@SZX1000280461:/opt/devstack$ nova list ---+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ stack@SZX1000280461:/opt/devstack$ nova shelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | SHELVED_OFFLOADED | - | Shutdown | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ # 2 attach a cinder volume to the shelved insntace: stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | available | test1 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ stack@SZX1000280461:/opt/devstack$ nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | in-use | test1 | 1 | lvmdriver-1 | false | bd09421c-90b2-411c-99d0-fcf07338c542 | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ nova show test2 +--------------------------------------+----------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------------------------+ | Kevin network | 10.0.0.76, 172.24.4.10 | | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hostname | test2 | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000004 | | OS-EXT-SRV-ATTR:kernel_id | | | OS-EXT-SRV-ATTR:launch_index | 0 | | OS-EXT-SRV-ATTR:ramdisk_id | | | OS-EXT-SRV-ATTR:reservation_id | r-z869pf5v | | OS-EXT-SRV-ATTR:root_device_name | /dev/vda | | OS-EXT-SRV-ATTR:user_data | - | | OS-EXT-STS:power_state | 4 | | OS-EXT-STS:task_state | - | | OS-EXT-STS:vm_state | shelved_offloaded | | OS-SRV-USG:launched_at | 2017-03-23T02:34:04.000000 | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2017-03-23T02:33:19Z | | description | - | | flavor | ds1G (d2) | | hostId | | | host_status | | | id | bd09421c-90b2-411c-99d0-fcf07338c542 | | image | CentOS (d826a98b-4ab5-4ce1-93f4-394193abaa51) | | key_name | kevin_322 | | locked | False | | metadata | {} | | name | test2 | | os-extended-volumes:volumes_attached | [{"id": "a72f9642-ca8f-4c2e-bfe0-362c6220d498", "delete_on_termination": false}] | | security_groups | default | | status | SHELVED_OFFLOADED | | tags | [] | | tenant_id | 4f705543436648abbacf5719d3397c0f | | updated | 2017-03-23T02:57:54Z | | user_id | 46a372c04e38463b898dc71626d8846a | +--------------------------------------+----------------------------------------------------------------------------------+ #3 Unshelve the instance: stack@SZX1000280461:/opt/devstack$ nova unshelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ #4 Check details in cinder: root@SZX1000280461:~# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '16e65459-23e9-4af9-8481-c75366d4f51b', 'attached_at': '2017-03-23T06:11:26.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': None, 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T06:11:58.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ After studied more, I discovered that this is because _attach_volume_shelved_offloaded uses _create_volume_bdm with param: _is_local_createion=True and it just create an bdm in DB and then call cinder to modify its DB. When the instance is unshelved, the actual attach operation will take place and there will be no updates in cinder DB. This causes TWO problems, 1. nova volume-attach can be used with user provided device_name, in general case this name will be checked or ignored. In the shelved case, it will pass directly to Cinder thus Cinder will have wrong device_name, for example, I provide /dev/vda, when I do cinder show, it will show /dev/vda: 2. if user don't provide device_name, the Cinder side device_name will always be None.
2017-03-23 08:19:12 Zhenyu Zheng description Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. How to re-produce: #1 shelve an instance stack@SZX1000280461:/opt/devstack$ nova list ---+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ stack@SZX1000280461:/opt/devstack$ nova shelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | SHELVED_OFFLOADED | - | Shutdown | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ # 2 attach a cinder volume to the shelved insntace: stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | available | test1 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ stack@SZX1000280461:/opt/devstack$ nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | in-use | test1 | 1 | lvmdriver-1 | false | bd09421c-90b2-411c-99d0-fcf07338c542 | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ nova show test2 +--------------------------------------+----------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------------------------+ | Kevin network | 10.0.0.76, 172.24.4.10 | | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hostname | test2 | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000004 | | OS-EXT-SRV-ATTR:kernel_id | | | OS-EXT-SRV-ATTR:launch_index | 0 | | OS-EXT-SRV-ATTR:ramdisk_id | | | OS-EXT-SRV-ATTR:reservation_id | r-z869pf5v | | OS-EXT-SRV-ATTR:root_device_name | /dev/vda | | OS-EXT-SRV-ATTR:user_data | - | | OS-EXT-STS:power_state | 4 | | OS-EXT-STS:task_state | - | | OS-EXT-STS:vm_state | shelved_offloaded | | OS-SRV-USG:launched_at | 2017-03-23T02:34:04.000000 | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2017-03-23T02:33:19Z | | description | - | | flavor | ds1G (d2) | | hostId | | | host_status | | | id | bd09421c-90b2-411c-99d0-fcf07338c542 | | image | CentOS (d826a98b-4ab5-4ce1-93f4-394193abaa51) | | key_name | kevin_322 | | locked | False | | metadata | {} | | name | test2 | | os-extended-volumes:volumes_attached | [{"id": "a72f9642-ca8f-4c2e-bfe0-362c6220d498", "delete_on_termination": false}] | | security_groups | default | | status | SHELVED_OFFLOADED | | tags | [] | | tenant_id | 4f705543436648abbacf5719d3397c0f | | updated | 2017-03-23T02:57:54Z | | user_id | 46a372c04e38463b898dc71626d8846a | +--------------------------------------+----------------------------------------------------------------------------------+ #3 Unshelve the instance: stack@SZX1000280461:/opt/devstack$ nova unshelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ #4 Check details in cinder: root@SZX1000280461:~# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '16e65459-23e9-4af9-8481-c75366d4f51b', 'attached_at': '2017-03-23T06:11:26.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': None, 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T06:11:58.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ After studied more, I discovered that this is because _attach_volume_shelved_offloaded uses _create_volume_bdm with param: _is_local_createion=True and it just create an bdm in DB and then call cinder to modify its DB. When the instance is unshelved, the actual attach operation will take place and there will be no updates in cinder DB. This causes TWO problems, 1. nova volume-attach can be used with user provided device_name, in general case this name will be checked or ignored. In the shelved case, it will pass directly to Cinder thus Cinder will have wrong device_name, for example, I provide /dev/vda, when I do cinder show, it will show /dev/vda: 2. if user don't provide device_name, the Cinder side device_name will always be None. Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. How to re-produce: #1 shelve an instance stack@SZX1000280461:/opt/devstack$ nova list ---+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ stack@SZX1000280461:/opt/devstack$ nova shelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | SHELVED_OFFLOADED | - | Shutdown | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ # 2 attach a cinder volume to the shelved insntace: stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | available | test1 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ stack@SZX1000280461:/opt/devstack$ nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | in-use | test1 | 1 | lvmdriver-1 | false | bd09421c-90b2-411c-99d0-fcf07338c542 | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ nova show test2 +--------------------------------------+----------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------------------------+ | Kevin network | 10.0.0.76, 172.24.4.10 | | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hostname | test2 | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000004 | | OS-EXT-SRV-ATTR:kernel_id | | | OS-EXT-SRV-ATTR:launch_index | 0 | | OS-EXT-SRV-ATTR:ramdisk_id | | | OS-EXT-SRV-ATTR:reservation_id | r-z869pf5v | | OS-EXT-SRV-ATTR:root_device_name | /dev/vda | | OS-EXT-SRV-ATTR:user_data | - | | OS-EXT-STS:power_state | 4 | | OS-EXT-STS:task_state | - | | OS-EXT-STS:vm_state | shelved_offloaded | | OS-SRV-USG:launched_at | 2017-03-23T02:34:04.000000 | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2017-03-23T02:33:19Z | | description | - | | flavor | ds1G (d2) | | hostId | | | host_status | | | id | bd09421c-90b2-411c-99d0-fcf07338c542 | | image | CentOS (d826a98b-4ab5-4ce1-93f4-394193abaa51) | | key_name | kevin_322 | | locked | False | | metadata | {} | | name | test2 | | os-extended-volumes:volumes_attached | [{"id": "a72f9642-ca8f-4c2e-bfe0-362c6220d498", "delete_on_termination": false}] | | security_groups | default | | status | SHELVED_OFFLOADED | | tags | [] | | tenant_id | 4f705543436648abbacf5719d3397c0f | | updated | 2017-03-23T02:57:54Z | | user_id | 46a372c04e38463b898dc71626d8846a | +--------------------------------------+----------------------------------------------------------------------------------+ #3 Unshelve the instance: stack@SZX1000280461:/opt/devstack$ nova unshelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ #4 Check details in cinder: root@SZX1000280461:~# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '16e65459-23e9-4af9-8481-c75366d4f51b', 'attached_at': '2017-03-23T06:11:26.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': None, 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T06:11:58.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ After studied more, I discovered that this is because _attach_volume_shelved_offloaded uses _create_volume_bdm with param: _is_local_createion=True and it just create an bdm in DB and then call cinder to modify its DB. When the instance is unshelved, the actual attach operation will take place and there will be no updates in cinder DB. This causes TWO problems, 1. nova volume-attach can be used with user provided device_name, in general case this name will be checked or ignored. In the shelved case, it will pass directly to Cinder thus Cinder will have wrong device_name, for example, I provide /dev/vda, when I do cinder show, it will show /dev/vda: root@SZX1000280461:/var/log/nova# nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 /dev/vda +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ root@SZX1000280461:/var/log/nova# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '46dc8d6a-9148-4e91-bc28-c1947c618ebb', 'attached_at': '2017-03-23T08:00:37.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': '/dev/vda', 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T08:00:37.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ root@SZX1000280461:/var/log/nova# nova volume-attachments bd09421c-90b2-411c-99d0-fcf07338c542 +--------------------------------------+----------+--------------------------------------+--------------------------------------+ | ID | DEVICE | SERVER ID | VOLUME ID | +--------------------------------------+----------+--------------------------------------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | /dev/vdc | bd09421c-90b2-411c-99d0-fcf07338c542 | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +--------------------------------------+----------+--------------------------------------+--------------------------------------+ 2. if user don't provide device_name, the Cinder side device_name will always be None.
2017-03-23 08:22:06 Zhenyu Zheng description Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. How to re-produce: #1 shelve an instance stack@SZX1000280461:/opt/devstack$ nova list ---+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ stack@SZX1000280461:/opt/devstack$ nova shelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | SHELVED_OFFLOADED | - | Shutdown | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ # 2 attach a cinder volume to the shelved insntace: stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | available | test1 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ stack@SZX1000280461:/opt/devstack$ nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | in-use | test1 | 1 | lvmdriver-1 | false | bd09421c-90b2-411c-99d0-fcf07338c542 | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ nova show test2 +--------------------------------------+----------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------------------------+ | Kevin network | 10.0.0.76, 172.24.4.10 | | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hostname | test2 | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000004 | | OS-EXT-SRV-ATTR:kernel_id | | | OS-EXT-SRV-ATTR:launch_index | 0 | | OS-EXT-SRV-ATTR:ramdisk_id | | | OS-EXT-SRV-ATTR:reservation_id | r-z869pf5v | | OS-EXT-SRV-ATTR:root_device_name | /dev/vda | | OS-EXT-SRV-ATTR:user_data | - | | OS-EXT-STS:power_state | 4 | | OS-EXT-STS:task_state | - | | OS-EXT-STS:vm_state | shelved_offloaded | | OS-SRV-USG:launched_at | 2017-03-23T02:34:04.000000 | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2017-03-23T02:33:19Z | | description | - | | flavor | ds1G (d2) | | hostId | | | host_status | | | id | bd09421c-90b2-411c-99d0-fcf07338c542 | | image | CentOS (d826a98b-4ab5-4ce1-93f4-394193abaa51) | | key_name | kevin_322 | | locked | False | | metadata | {} | | name | test2 | | os-extended-volumes:volumes_attached | [{"id": "a72f9642-ca8f-4c2e-bfe0-362c6220d498", "delete_on_termination": false}] | | security_groups | default | | status | SHELVED_OFFLOADED | | tags | [] | | tenant_id | 4f705543436648abbacf5719d3397c0f | | updated | 2017-03-23T02:57:54Z | | user_id | 46a372c04e38463b898dc71626d8846a | +--------------------------------------+----------------------------------------------------------------------------------+ #3 Unshelve the instance: stack@SZX1000280461:/opt/devstack$ nova unshelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ #4 Check details in cinder: root@SZX1000280461:~# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '16e65459-23e9-4af9-8481-c75366d4f51b', 'attached_at': '2017-03-23T06:11:26.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': None, 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T06:11:58.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ After studied more, I discovered that this is because _attach_volume_shelved_offloaded uses _create_volume_bdm with param: _is_local_createion=True and it just create an bdm in DB and then call cinder to modify its DB. When the instance is unshelved, the actual attach operation will take place and there will be no updates in cinder DB. This causes TWO problems, 1. nova volume-attach can be used with user provided device_name, in general case this name will be checked or ignored. In the shelved case, it will pass directly to Cinder thus Cinder will have wrong device_name, for example, I provide /dev/vda, when I do cinder show, it will show /dev/vda: root@SZX1000280461:/var/log/nova# nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 /dev/vda +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ root@SZX1000280461:/var/log/nova# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '46dc8d6a-9148-4e91-bc28-c1947c618ebb', 'attached_at': '2017-03-23T08:00:37.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': '/dev/vda', 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T08:00:37.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ root@SZX1000280461:/var/log/nova# nova volume-attachments bd09421c-90b2-411c-99d0-fcf07338c542 +--------------------------------------+----------+--------------------------------------+--------------------------------------+ | ID | DEVICE | SERVER ID | VOLUME ID | +--------------------------------------+----------+--------------------------------------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | /dev/vdc | bd09421c-90b2-411c-99d0-fcf07338c542 | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +--------------------------------------+----------+--------------------------------------+--------------------------------------+ 2. if user don't provide device_name, the Cinder side device_name will always be None. Nova supported to attach and detach volumes to/from shelved instances since microversion 2.20. When we attach a volume to an instance and then unshelve the instance the cinder side doesn't include the device_name information. How to re-produce: #1 shelve an instance stack@SZX1000280461:/opt/devstack$ nova list ---+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ stack@SZX1000280461:/opt/devstack$ nova shelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | SHELVED_OFFLOADED | - | Shutdown | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+-------------------+------------+-------------+------------------------------+ # 2 attach a cinder volume to the shelved insntace: stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | available | test1 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+-------+------+-------------+----------+-------------+ stack@SZX1000280461:/opt/devstack$ nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ cinder list +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | in-use | test1 | 1 | lvmdriver-1 | false | bd09421c-90b2-411c-99d0-fcf07338c542 | +--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+ stack@SZX1000280461:/opt/devstack$ nova show test2 +--------------------------------------+----------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------------------------+ | Kevin network | 10.0.0.76, 172.24.4.10 | | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hostname | test2 | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000004 | | OS-EXT-SRV-ATTR:kernel_id | | | OS-EXT-SRV-ATTR:launch_index | 0 | | OS-EXT-SRV-ATTR:ramdisk_id | | | OS-EXT-SRV-ATTR:reservation_id | r-z869pf5v | | OS-EXT-SRV-ATTR:root_device_name | /dev/vda | | OS-EXT-SRV-ATTR:user_data | - | | OS-EXT-STS:power_state | 4 | | OS-EXT-STS:task_state | - | | OS-EXT-STS:vm_state | shelved_offloaded | | OS-SRV-USG:launched_at | 2017-03-23T02:34:04.000000 | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2017-03-23T02:33:19Z | | description | - | | flavor | ds1G (d2) | | hostId | | | host_status | | | id | bd09421c-90b2-411c-99d0-fcf07338c542 | | image | CentOS (d826a98b-4ab5-4ce1-93f4-394193abaa51) | | key_name | kevin_322 | | locked | False | | metadata | {} | | name | test2 | | os-extended-volumes:volumes_attached | [{"id": "a72f9642-ca8f-4c2e-bfe0-362c6220d498", "delete_on_termination": false}] | | security_groups | default | | status | SHELVED_OFFLOADED | | tags | [] | | tenant_id | 4f705543436648abbacf5719d3397c0f | | updated | 2017-03-23T02:57:54Z | | user_id | 46a372c04e38463b898dc71626d8846a | +--------------------------------------+----------------------------------------------------------------------------------+ #3 Unshelve the instance: stack@SZX1000280461:/opt/devstack$ nova unshelve bd09421c-90b2-411c-99d0-fcf07338c542 stack@SZX1000280461:/opt/devstack$ nova list +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ | bd09421c-90b2-411c-99d0-fcf07338c542 | test2 | ACTIVE | - | Running | Kevin=10.0.0.76, 172.24.4.10 | +--------------------------------------+-------+--------+------------+-------------+------------------------------+ #4 Check details in cinder: root@SZX1000280461:~# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '16e65459-23e9-4af9-8481-c75366d4f51b', 'attached_at': '2017-03-23T06:11:26.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': None, 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T06:11:58.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ After studied more, I discovered that this is because _attach_volume_shelved_offloaded uses _create_volume_bdm with param: _is_local_createion=True and it just create an bdm in DB and then call cinder to modify its DB. When the instance is unshelved, the actual attach operation will take place and there will be no updates in cinder DB. This causes TWO problems, 1. nova volume-attach can be used with user provided device_name, in general case this name will be checked or ignored. In the shelved case, it will pass directly to Cinder thus Cinder will have wrong device_name [1], for example, I provide /dev/vda, when I do cinder show, it will show /dev/vda: [1] http://git.openstack.org/cgit/openstack/nova/tree/nova/compute/api.py#n3719 root@SZX1000280461:/var/log/nova# nova volume-attach bd09421c-90b2-411c-99d0-fcf07338c542 a72f9642-ca8f-4c2e-bfe0-362c6220d498 /dev/vda +----------+--------------------------------------+ | Property | Value | +----------+--------------------------------------+ | device | - | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | serverId | bd09421c-90b2-411c-99d0-fcf07338c542 | | volumeId | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +----------+--------------------------------------+ root@SZX1000280461:/var/log/nova# cinder show a72f9642-ca8f-4c2e-bfe0-362c6220d498 +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachments | [{'server_id': 'bd09421c-90b2-411c-99d0-fcf07338c542', 'attachment_id': '46dc8d6a-9148-4e91-bc28-c1947c618ebb', 'attached_at': '2017-03-23T08:00:37.000000', 'host_name': None, 'volume_id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498', 'device': '/dev/vda', 'id': 'a72f9642-ca8f-4c2e-bfe0-362c6220d498'}] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2017-03-23T02:49:07.000000 | | description | | | encrypted | False | | id | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | | metadata | {'attached_mode': 'rw'} | | migration_status | None | | multiattach | False | | name | test1 | | os-vol-host-attr:host | SZX1000280461@lvmdriver-1#lvmdriver-1 | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | 4f705543436648abbacf5719d3397c0f | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | in-use | | updated_at | 2017-03-23T08:00:37.000000 | | user_id | 46a372c04e38463b898dc71626d8846a | | volume_type | lvmdriver-1 | +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ root@SZX1000280461:/var/log/nova# nova volume-attachments bd09421c-90b2-411c-99d0-fcf07338c542 +--------------------------------------+----------+--------------------------------------+--------------------------------------+ | ID | DEVICE | SERVER ID | VOLUME ID | +--------------------------------------+----------+--------------------------------------+--------------------------------------+ | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | /dev/vdc | bd09421c-90b2-411c-99d0-fcf07338c542 | a72f9642-ca8f-4c2e-bfe0-362c6220d498 | +--------------------------------------+----------+--------------------------------------+--------------------------------------+ 2. if user don't provide device_name, the Cinder side device_name will always be None.
2017-03-23 08:23:04 Zhenyu Zheng nova: assignee Zhenyu Zheng (zhengzhenyu)
2017-03-23 08:24:18 Zhenyu Zheng summary Volumes attached to shelved instance doesn't contain device_name Volumes attached to shelved instance may contain incorrect device_name
2017-03-23 13:58:09 Maciej Szankin nova: status New In Progress
2017-04-20 09:17:14 Zhenyu Zheng nova: importance Undecided High
2017-06-23 12:54:27 Sean Dague nova: status In Progress New
2017-06-23 12:54:32 Sean Dague nova: assignee Zhenyu Zheng (zhengzhenyu)
2017-07-28 12:23:34 Sean Dague tags shelve
2017-07-28 12:24:04 Sean Dague nova: status New Won't Fix