[openstack-dev] Launch of an instance from a bootable volume fails on Xen env

Eugen Block eblock at nde.ag
Thu Mar 24 11:03:38 UTC 2016


Hi,

> Has this been resolved?  Is anyone working on this issue?

I had traced down the effect and found a possible solution, see  
https://bugs.launchpad.net/nova/+bug/1560965

If you're just trying to start via Horizon, changing  
/srv/www/openstack-dashboard/openstack_dashboard/dashboards/project/instances/workflows/create_instance.py ought to fix this for  
you:

---cut here---
control1:/srv/www/openstack-dashboard/openstack_dashboard/dashboards/project/instances/workflows # diff -u5 create_instance.py.dist  
create_instance.py
--- create_instance.py.dist     2016-03-18 10:40:51.123942306 +0100
+++ create_instance.py  2016-03-24 11:49:00.404537704 +0100
@@ -119,11 +119,11 @@
                                       help_text=_("Volume size in gigabytes "
                                                   "(integer value)."))

      device_name = forms.CharField(label=_("Device Name"),
                                    required=False,
-                                  initial="vda",
+                                  initial="",
                                    help_text=_("Volume mount point  
(e.g. 'vda' "
                                                "mounts at '/dev/vda'). Leave "
                                                "this field blank to let the "
                                                "system choose a device name "
                                                "for you."))
@@ -878,20 +878,23 @@
                      dev_source_type_mapping = {
                          'volume_id': 'volume',
                          'volume_snapshot_id': 'snapshot'
                      }
                      dev_mapping_2 = [
-                        {'device_name': device_name,
+                        {
                           'source_type': dev_source_type_mapping[source_type],
                           'destination_type': 'volume',
                           'delete_on_termination':
                               bool(context['delete_on_terminate']),
                           'uuid': volume_source_id,
                           'boot_index': '0',
                           'volume_size': context['volume_size']
                           }
                      ]
+                    if device_name:
+                        dev_mapping_2.append({"device_name": device_name})
+
                  else:
                      dev_mapping_1 = {context['device_name']: '%s::%s' %
                                       (context['source_id'],
                                       bool(context['delete_on_terminate']))
                                       }
@@ -900,20 +903,22 @@
                  exceptions.handle(request, msg)

          elif source_type == 'volume_image_id':
              device_name = context.get('device_name', '').strip() or None
              dev_mapping_2 = [
-                {'device_name': device_name,  # None auto-selects device
+                {
                   'source_type': 'image',
                   'destination_type': 'volume',
                   'delete_on_termination':
                       bool(context['delete_on_terminate']),
                   'uuid': context['source_id'],
                   'boot_index': '0',
                   'volume_size': context['volume_size']
                   }
              ]
+            if device_name:
+                dev_mapping_2.append({"device_name": device_name})

          netids = context.get('network_id', None)
          if netids:
              nics = [{"net-id": netid, "v4-fixed-ip": ""}
                      for netid in netids]

---cut here---

I'm not aware which side effects this change can have. I started a  
similar thread in the mailing list this week  
http://lists.openstack.org/pipermail/openstack-dev/2016-March/090009.html

Regards,
Eugen


Zitat von "Benjamin, Arputham" <arputham.benjamin at bluecoat.com>:

> Launch of an instance from a bootable volume fails on Xen env.
> The root cause of this issue is that Nova is mapping the disk_dev  
> /disk_bus to vda/virtio
> instead of xvda/xen. (Below is the session output showing the launch error)
>
> Has this been resolved?  Is anyone working on this issue?
>
> Thanks,
> Benjamin
>
> 016-03-08 15:07:51.430 3070 INFO nova.virt.block_device  
> [req-b5033c12-196f-411e-8b19-6d15b1e7a5b8  
> 976963ca04df48c79f0c87ff7a330d47 310cb58241964e0a92bc939ec1c6a0ff -  
> - -] [instance: d45a5b7b-314f-4bfa-893d-3498e04f04fa] Booting with  
> volume 1d33ba84-9ce2-467d-97c5-973a7ed48456 at /dev/vda
> 2016-03-08 15:07:55.863 3070 INFO nova.virt.libvirt.driver  
> [req-b5033c12-196f-411e-8b19-6d15b1e7a5b8  
> 976963ca04df48c79f0c87ff7a330d47 310cb58241964e0a92bc939ec1c6a0ff -  
> - -] [instance: d45a5b7b-314f-4bfa-893d-3498e04f04fa] Creating image
> 2016-03-08 15:07:55.864 3070 WARNING nova.virt.libvirt.driver  
> [req-b5033c12-196f-411e-8b19-6d15b1e7a5b8  
> 976963ca04df48c79f0c87ff7a330d47 310cb58241964e0a92bc939ec1c6a0ff -  
> - -] [instance: d45a5b7b-314f-4bfa-893d-3498e04f04fa] File injection  
> into a boot from volume instance is not supported
> 2016-03-08 15:08:01.430 3070 INFO nova.compute.resource_tracker  
> [req-4ac03ab4-f8f6-4141-b96d-2968e9664c35 - - - - -] Auditing  
> locally available compute resources for node compute.openstack.com
> 2016-03-08 15:08:02.164 3070 ERROR nova.virt.libvirt.driver  
> [req-b5033c12-196f-411e-8b19-6d15b1e7a5b8  
> 976963ca04df48c79f0c87ff7a330d47 310cb58241964e0a92bc939ec1c6a0ff -  
> - -] Error launching a defined domain with XML: <domain type='xen'>
>   <name>instance-0000006c</name>
>   <uuid>d45a5b7b-314f-4bfa-893d-3498e04f04fa</uuid>
>   <metadata>
>     <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
>       <nova:package version="2015.1.1-1.el7"/>
>       <nova:name>bv-vivid-server</nova:name>
>       <nova:creationTime>2016-03-08 23:07:55</nova:creationTime>
>       <nova:flavor name="m1.small">
>         <nova:memory>2048</nova:memory>
>         <nova:disk>20</nova:disk>
>         <nova:swap>0</nova:swap>
>         <nova:ephemeral>0</nova:ephemeral>
>         <nova:vcpus>1</nova:vcpus>
>       </nova:flavor>
>       <nova:owner>
>         <nova:user uuid="976963ca04df48c79f0c87ff7a330d47">admin</nova:user>
>         <nova:project  
> uuid="310cb58241964e0a92bc939ec1c6a0ff">admin</nova:project>
>       </nova:owner>
>     </nova:instance>
>   </metadata>
>   <memory unit='KiB'>2097152</memory>
>   <currentMemory unit='KiB'>2097152</currentMemory>
>   <vcpu placement='static'>1</vcpu>
>   <os>
>     <type arch='x86_64' machine='xenfv'>hvm</type>
>     <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
>     <boot dev='hd'/>
>   </os>
>   <features>
>     <acpi/>
>     <apic/>
>     <pae/>
>   </features>
>   <clock offset='utc'/>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>destroy</on_crash>
>   <devices>
>     <disk type='block' device='disk'>
>       <driver name='phy' type='raw' cache='none'/>
>       <source  
> dev='/dev/disk/by-path/ip-10.9.85.121:3260-iscsi-iqn.2010-10.org.openstack:volume-1d33ba84-9ce2-467d-97c5-973a7ed48456-lun-0'/>
>       <target dev='vda' bus='virtio'/>
>       <serial>1d33ba84-9ce2-467d-97c5-973a7ed48456</serial>
>     </disk>
>     <interface type='bridge'>
>       <mac address='fa:16:3e:e1:96:b8'/>
>       <source bridge='qbr9fa07fc0-ba'/>
>       <target dev='tap9fa07fc0-ba'/>
>     </interface>
>     <serial type='pty'>
>       <target port='0'/>
>     </serial>
>     <console type='pty'>
>       <target type='serial' port='0'/>
>     </console>
>     <input type='tablet' bus='usb'/>
>     <input type='mouse' bus='ps2'/>
>     <input type='keyboard' bus='ps2'/>
>     <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'  
> keymap='en-us'>
>       <listen type='address' address='0.0.0.0'/>
>     </graphics>
>     <video>
>       <model type='cirrus' vram='8192' heads='1'/>
>     </video>
>     <memballoon model='xen'>
>       <stats period='10'/>
>     </memballoon>
>   </devices>
> </domain>
>
> 2016-03-08 15:08:02.167 3070 ERROR nova.compute.manager  
> [req-b5033c12-196f-411e-8b19-6d15b1e7a5b8  
> 976963ca04df48c79f0c87ff7a330d47 310cb58241964e0a92bc939ec1c6a0ff -  
> - -] [instance: d45a5b7b-314f-4bfa-893d-3498e04f04fa] Instance  
> failed to spawn
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa] Traceback (most recent call  
> last):
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line  
> 2461, in _build_resources
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     yield resources
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line  
> 2333, in _build_and_run_instance
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]      
> block_device_info=block_device_info)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line  
> 2385, in spawn
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]      
> block_device_info=block_device_info)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line  
> 4403, in _create_domain_and_network
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     power_on=power_on)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line  
> 4334, in _create_domain
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     LOG.error(err)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 85,  
> in __exit__
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     six.reraise(self.type_,  
> self.value, self.tb)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line  
> 4324, in _create_domain
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]      
> domain.createWithFlags(launch_flags)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 183, in  
> doit
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     result =  
> proxy_call(self._autowrap, f, *args, **kwargs)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 141, in  
> proxy_call
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     rv = execute(f, *args,  
> **kwargs)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 122, in  
> execute
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     six.reraise(c, e, tb)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 80, in  
> tworker
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     rv = meth(*args, **kwargs)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]   File  
> "/usr/lib64/python2.7/site-packages/libvirt.py", line 1059, in  
> createWithFlags
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]     if ret == -1: raise  
> libvirtError ('virDomainCreateWithFlags() failed', dom=self)
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa] libvirtError: internal error:  
> libxenlight failed to create new domain 'instance-0000006c'
> 2016-03-08 15:08:02.167 3070 TRACE nova.compute.manager [instance:  
> d45a5b7b-314f-4bfa-893d-3498e04f04fa]
> 2016-03-08 15:08:02.170 3070 INFO nova.compute.manager  
> [req-b5033c12-196f-411e-8b19-6d15b1e7a5b8  
> 976963ca04df48c79f0c87ff7a330d47 310cb58241964e0a92bc939ec1c6a0ff -  
> - -] [instance: d45a5b7b-314f-4bfa-893d-3498e04f04fa] Terminating  
> instance
> 2016-03-08 15:08:02.184 3070 INFO nova.virt.libvirt.driver [-]  
> [instance: d45a5b7b-314f-4bfa-893d-3498e04f04fa] Instance destroyed  
> successfully.



-- 
Eugen Block                             voice   : +49-40-559 51 75
NDE Netzdesign und -entwicklung AG      fax     : +49-40-559 51 77
Postfach 61 03 15
D-22423 Hamburg                         e-mail  : eblock at nde.ag

         Vorsitzende des Aufsichtsrates: Angelika Mozdzen
           Sitz und Registergericht: Hamburg, HRB 90934
                   Vorstand: Jens-U. Mozdzen
                    USt-IdNr. DE 814 013 983




More information about the OpenStack-dev mailing list