← Back to team overview

yahoo-eng-team team mailing list archive

[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