OpenStack Compute (Nova)
Go to file
Lee Yarwood 2d50f6e785 libvirt: Report the allocated size of preallocated file based disks
At present the Libvirt driver can preallocate file based disks using the
fallocate command and importantly the `-n` option. This option allocates
blocks on the filesystem past the initial EOF of a given file:

```
$ touch test.img ; fallocate -n -l $(( 1024 * 1024 )) test.img
$ ll -lah test.img
-rw-rw-r--. 1 stack stack 0 Apr 16 13:28 test.img
$ du -h test.img
1.0M	test.img
```

This results in a miscalculation of the total disk overcommit for file
based (excluding ploop) disks as os.path.getsize is currently used to
determine the allocated size of these disks:

```
>>> import os
>>> os.path.getsize('test.img')
0
```

Using the above example the disk overcommit would be reported as 1.0M as
the disk appears empty yet will report a potential (virtual) size of 1.0M.

However as the required blocks have already been allocated on the
filesystem the host will report disk_available_least as missing an
additional 1.0M, essentially doubling the allocation for each disk.

To correct this the allocated size of file based (excluding ploop) disks
is reported using `disk_size` from the `qemu-img info` command. This
should ensure blocks allocated past the EOF of the file are taken into
account and correctly reported as allocated.

A future change should ultimately remove the use of the `-n` option with
fallocate, however as this would not help disks that have already been
allocated this has not been included in this change to simplify backports.

Change-Id: If642e51a4e186833349a8e30b04224a3687f5594
Closes-bug: #1764489
(cherry picked from commit 23bd8f6263)
2018-04-17 23:45:49 +01:00
api-guide/source Merge "Update links in documents" 2018-02-08 01:29:29 +00:00
api-ref/source Merge "Add server filters whitelist in server api-ref" 2018-02-02 02:02:52 +00:00
contrib trivial: Remove "vif" script 2017-08-07 16:00:10 +01:00
devstack Blacklist test_extend_attached_volume from cells v1 job 2017-10-05 17:31:05 -04:00
doc Merge "docs: Disable smartquotes" into stable/queens 2018-03-29 03:31:30 +00:00
etc/nova Move remaining uses of parted to privsep. 2018-01-24 22:26:36 +00:00
gate move gate hooks to gate/ 2017-01-04 11:05:16 +00:00
nova libvirt: Report the allocated size of preallocated file based disks 2018-04-17 23:45:49 +01:00
placement-api-ref/source Merge "placement doc: Conflict caveat for DELETE APIs" 2018-02-07 13:33:29 +00:00
playbooks/legacy Migrate tempest-dsvm-cells job to an in-tree job definition 2018-03-26 17:43:30 -04:00
releasenotes libvirt: Allow to specify granular CPU feature flags 2018-04-10 14:07:10 +00:00
tools Finish stestr migration 2017-11-24 16:51:12 -05:00
.coveragerc Remove nova/openstack/* from .coveragerc 2016-10-12 16:20:49 -04:00
.gitignore Fix test runner config issues with os-testr 1.0.0 2017-09-13 17:11:57 -04:00
.gitreview Update .gitreview for stable/queens 2018-02-09 07:15:06 +00:00
.mailmap Add mailmap entry 2014-05-07 12:14:26 -07:00
.stestr.conf Finish stestr migration 2017-11-24 16:51:12 -05:00
.zuul.yaml Remove the branch specifier from the nova-multiattach job 2018-04-12 11:00:18 -04:00
babel.cfg Get rid of distutils.extra. 2012-02-08 19:30:39 -08:00
bindep.txt Bindep does not catch missing libpcre3-dev on Ubuntu 2018-02-13 16:53:16 -05:00
CONTRIBUTING.rst Update links in documents 2018-01-12 17:05:11 +08:00
HACKING.rst doc: fix link to creating unit tests in contributor guide 2017-11-14 11:22:43 -05:00
LICENSE initial commit 2010-05-27 23:05:26 -07:00
MAINTAINERS Fix broken URLs 2017-09-07 15:42:31 +02:00
README.rst doc: Rework README to reflect new doc URLs 2017-08-03 16:06:08 -04:00
requirements.txt Updated from global requirements 2018-02-01 07:20:35 +00:00
setup.cfg Deprecate the IronicHostManager 2017-11-28 15:23:48 -05:00
setup.py Updated from global requirements 2017-03-02 11:50:48 +00:00
test-requirements.txt Implement get_traits() for the ironic virt driver 2018-01-30 20:45:27 -05:00
tests-py3.txt Skip unit tests for SSL + py3 2017-03-02 14:30:16 +08:00
tox.ini Update UPPER_CONSTRAINTS_FILE for stable/queens 2018-02-09 07:15:13 +00:00

Team and repository tags

image

OpenStack Nova

OpenStack Nova provides a cloud computing fabric controller, supporting a wide variety of compute technologies, including: libvirt (KVM, Xen, LXC and more), Hyper-V, VMware, XenServer, OpenStack Ironic and PowerVM.

Use the following resources to learn more.

API

To learn how to use Nova's API, consult the documentation available online at:

For more information on OpenStack APIs, SDKs and CLIs in general, refer to:

Operators

To learn how to deploy and configure OpenStack Nova, consult the documentation available online at:

In the unfortunate event that bugs are discovered, they should be reported to the appropriate bug tracker. If you obtained the software from a 3rd party operating system vendor, it is often wise to use their own bug tracker for reporting problems. In all other cases use the master OpenStack bug tracker, available at:

Developers

For information on how to contribute to Nova, please see the contents of the CONTRIBUTING.rst.

Any new code must follow the development guidelines detailed in the HACKING.rst file, and pass all unit tests.

Further developer focused documentation is available at:

Other Information

During each Summit and Project Team Gathering, we agree on what the whole community wants to focus on for the upcoming release. The plans for nova can be found at: