yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #56755
[Bug 1599787] Re: The documentation of disk=0 in flavor is misleading
Reviewed: https://review.openstack.org/339034
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=9d08e805a8889d84ff1076da2373c37057670f23
Submitter: Jenkins
Branch: master
commit 9d08e805a8889d84ff1076da2373c37057670f23
Author: Balazs Gibizer <balazs.gibizer@xxxxxxxxxxxx>
Date: Thu Jul 7 16:28:10 2016 +0200
doc: fix disk=0 use case in flavor doc
The 0 value of the disk parameter of the flavor is only meaningfull
if the instance is booted from volume as in any other case the
instance will use local disk and the scheduler will not be
able to select the hosts based on the real image size as that
information is not available for the scheduler.
Change-Id: I6b3ba2fb323341071eae6b9e9f54ef833fdbaff7
Closes-Bug: #1599787
DocImpact: admin guide
** Changed in: nova
Status: In Progress => Fix Released
--
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/1599787
Title:
The documentation of disk=0 in flavor is misleading
Status in OpenStack Compute (nova):
Fix Released
Bug description:
Description
===========
Current nova api documentation states the following about disk=0 in
flavor:
The size of the root disk that will be created in GiB. If 0 the
root disk will be set to exactly the size of the image used to
deploy the instance. [1]
However scheduler does not check the actual image size during select
destintation and also resource tracker does not calculate the used
space properly.
[1] https://github.com/openstack/nova/blob/master/api-ref/source/parameters.yaml#L1548-L1555
Steps to reproduce
==================
1. Create a sizeable image. e.g. 8GB
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | bde0b00c072a8b5ab28ac58a3b8ea6ed |
| container_format | bare |
| created_at | 2016-07-07T09:25:33Z |
| disk_format | qcow2 |
| id | ea14a784-252a-4193-9129-a311f64c01f4 |
| min_disk | 0 |
| min_ram | 0 |
| name | my_image |
| owner | 0878b2a9a9fa4c538931df5d67708b51 |
| protected | False |
| size | 8591507456 |
| status | active |
| tags | [] |
| updated_at | 2016-07-07T09:29:35Z |
| virtual_size | None |
| visibility | private |
+------------------+--------------------------------------+
2. Check the current host-describe output to see the available and used space
vagrant@controller:~$ nova host-describe controller
+------------+----------------------------------+-----+-----------+---------+
| HOST | PROJECT | cpu | memory_mb | disk_gb |
+------------+----------------------------------+-----+-----------+---------+
| controller | (total) | 8 | 7794 | 39 |
| controller | (used_now) | 0 | 512 | 0 |
| controller | (used_max) | 0 | 64 | 0 |
+------------+----------------------------------+-----+-----------+---------+
3. boot a vm with a flavor disk=0
vagrant@controller:/opt/stack/nova/nova/scheduler/filters$ nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 42 | m1.nano | 64 | 0 | 0 | | 1 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
| 84 | m1.micro | 128 | 0 | 0 | | 1 | 1.0 | True |
| c1 | cirros256 | 256 | 0 | 0 | | 1 | 1.0 | True |
| d1 | ds512M | 512 | 5 | 0 | | 1 | 1.0 | True |
| d2 | ds1G | 1024 | 10 | 0 | | 1 | 1.0 | True |
| d3 | ds2G | 2048 | 10 | 0 | | 2 | 1.0 | True |
| d4 | ds4G | 4096 | 20 | 0 | | 4 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
vagrant@controller:~$ nova boot --image ea14a784-252a-4193-9129-a311f64c01f4 --flavor 42 vm2 --poll
+--------------------------------------+-------------------------------------------------+
| Property | Value |
+--------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hostname | vm2 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance-00000002 |
| 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-5c032r0o |
| OS-EXT-SRV-ATTR:root_device_name | - |
| OS-EXT-SRV-ATTR:user_data | - |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | MmVFaJr7B5Rp |
| config_drive | |
| created | 2016-07-07T09:32:14Z |
| description | - |
| flavor | m1.nano (42) |
| hostId | |
| host_status | |
| id | 16c2e302-62f9-4ce3-b603-e8c98115fd13 |
| image | my_image (ea14a784-252a-4193-9129-a311f64c01f4) |
| key_name | - |
| locked | False |
| metadata | {} |
| name | vm2 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tags | [] |
| tenant_id | 0878b2a9a9fa4c538931df5d67708b51 |
| updated | 2016-07-07T09:32:14Z |
| user_id | d2046b30b0e6459ebe02b67aba2b11d4 |
+--------------------------------------+-------------------------------------------------+
Server building... 0% complete
Server building... 0% complete
Server building... 100% complete
Finished
vagrant@controller:~$
4. Check the host-describe output again.
vagrant@controller:~$ nova host-describe controller
+------------+----------------------------------+-----+-----------+---------+
| HOST | PROJECT | cpu | memory_mb | disk_gb |
+------------+----------------------------------+-----+-----------+---------+
| controller | (total) | 8 | 7794 | 39 |
| controller | (used_now) | 1 | 576 | 0 |
| controller | (used_max) | 1 | 64 | 0 |
| controller | 0878b2a9a9fa4c538931df5d67708b51 | 1 | 64 | 0 |
+------------+----------------------------------+-----+-----------+---------+
To see the data used by the scheduler decision you shall add an extra
log line to the disk_filter.py
vagrant@controller:/opt/stack/nova$ git diff
diff --git a/nova/scheduler/filters/disk_filter.py b/nova/scheduler/filters/disk_filter.py
index 3476ace..d16dcbf 100644
--- a/nova/scheduler/filters/disk_filter.py
+++ b/nova/scheduler/filters/disk_filter.py
@@ -37,6 +37,8 @@ class DiskFilter(filters.BaseHostFilter):
spec_obj.ephemeral_gb) +
spec_obj.swap)
+ LOG.error('requested_disk' + str(requested_disk))
+
free_disk_mb = host_state.free_disk_mb
total_usable_disk_mb = host_state.total_usable_disk_gb * 1024
Then in the scheduler log you will see that during the boot the
requested_disk is 0 and not 8G as expected based on the documentation.
2016-07-07 09:19:18.480 ERROR nova.scheduler.filters.disk_filter
[req-c7410319-c65f-4274-88b8-a0c68e0bc7ff admin admin] requested_disk0
Expected result
===============
The documentation correctly states that disk=0 means that the scheduler will not select the host based on image size.
Environment
===========
Devstack on master.
vagrant@controller:/opt/stack/nova$ git log -1
commit 2d551ce83d186ad70ca69b1a6f9454906b4b3448
Merge: 94c96f2 7451862
Author: Jenkins <jenkins@xxxxxxxxxxxxxxxxxxxx>
Date: Mon Jul 4 15:40:25 2016 +0000
Merge "Improve the help text for configdrive options"
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1599787/+subscriptions
References