Thanks for the information 'Zhengyue'. I think you are missing the
comment on the expected behavior. Basically i have specified only 1 boot
index, in my alternate tests i explicitly set the boot index of the
other volumes to (-1) to ensure they are not booted from according to
the block device mapping documentation :
http://docs.openstack.org/developer/nova/block_device_mapping.html
"Some hypervisors may not support booting from multiple devices, so will only
consider the device with boot index of 0. Some hypervisors will support booting
from multiple devices, but only if they are of different types - eg a disk and
CD-ROM. Setting a negative value or None indicates that the device should not
be used for booting. The simplest usage is to set it to 0 for the boot device
and leave it as None for any other devices."
Given the above excerpt, the wrong instance shouldnt be booted at all.
** Changed in: nova
Status: Invalid => New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1570107
Title:
block device mapping : booting up attached volumes with no boot index
when multiple bootable volumes are used
Status in OpenStack Compute (nova):
New
Bug description:
Description
===========
provide 2 block device mappings, both bootable volumes with only 1 of
them having a boot_index (i.e. only 1 specified as boot device) and
both have different bus types. Observe booted instance is actually an
instance of the image with no boot_index!
Steps to reproduce
==================
Created volume from cirros image
Created volume from ubuntu image
Attempted to create instance sourced from ubuntu volume and also have the
cirros volume attached
- set boot index to 0 for ubuntu volume
- set no boot index for cirros (in trial 2, i set it to -1 explicitly so it
would only be an attached volume)
- bus type provided for ubuntu volume was 'ide'
- bus type provided for cirros volume was 'virtio'
- send server payload
- observed the instance is booted from the cirros volume despite having no
boot index!
sample payload :
{"server":{"flavorRef":"8e41c8ce-8bca-4012-92f0-6d83dc4e7dfe","name
":"vol-test_cirros-bootable_0_cb3378f2-01d1-4662-8c9e-
df6cff05c056","networks":[{"port":"1c11a3f9-47e6-4374-9890-54b5dd91f7c2"}],"block_device_mapping_v2":[{"uuid":"03b3c938-ed05-41a3-af92-5344431892ae","source_type":"volume","destination_type":"volume","delete_on_termination":"false","disk_bus":
"virtio" },{"uuid":"7cebbbc0-113e-
452b-b577-9043140656bf","boot_index":"0","source_type":"volume","destination_type":"volume","delete_on_termination":"false","disk_bus":
"ide" },{"uuid":"5870a3d6-f475-4312-b26f-
5162d76b9074","source_type":"volume","destination_type":"volume","delete_on_termination":"false","disk_bus":
"virtio" }]}
NOTE : when the ubuntu volume is the only volume and the bus type is IDE, the
created instance is an ubuntu instance
Also, if both volumes have the bus types set to virtio, the ubuntu instance
is correctly booted.
Appears to be some bus type related issue, but it wasn't documented anywhere
and there's no error.
Expected result
===============
Boot from the volume with boot index provided or fail with error
Actual result
=============
Boots from the other volume, even though it has no boot index.
Environment
===========
Openstack Kilo
hypervisor : libvirt + KVM
storage : LVM
networking : neutron with openvswitch
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1570107/+subscriptions
--
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help : https://help.launchpad.net/ListHelp