yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #83215
[Bug 1872082] Re: available disk on compute may be lightly overestimated in some cases
Reviewed: https://review.opendev.org/719008
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=61084702f447d8d48f0aef161a9517d9504cd578
Submitter: Zuul
Branch: master
commit 61084702f447d8d48f0aef161a9517d9504cd578
Author: Alexandre Arents <alexandre.arents@xxxxxxxxxxxx>
Date: Fri Apr 10 12:51:01 2020 +0000
libvirt: ensure disk_over_commit is not negative
During update_available_resource periodic task, nova-compute reports
total amount of disk_over_committed in order to determine current hypervisor's
available_disk_least.
In case instance disk file have allocated size greater than virtual
disk size, resulting disk_over_committed is negative.
Because a negative value will inaccurately increase available_disk_least,
the change proposes to set it to 0 instead.
Closes-Bug: #1872082
Change-Id: I34b783542504524d2e4d98d3037c9086766e04b0
** 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/1872082
Title:
available disk on compute may be lightly overestimated in some cases
Status in OpenStack Compute (nova):
Fix Released
Bug description:
Description
===========
Calculation of available disk space on compute host can be a bit inaccurate from few KB to few GB,
involving possible bad scheduler decision.
availability disk for new instance on a specific host is calculated this way:
available_disk_least = disk_free_fs - over_committed_disk_size (aka: sum of instances disk reservation not yet used)
But because over_committed_disk_size can be negative (see below)
available_least space can be mistakenly increased.
Steps to reproduce
==================
on master devstack
raw instances
-----
if you spawn instances with raw preallocated disk
1) set in nova-cpu.conf:
[default]/preallocate_images=space
[libvirt]/images_type=raw
2) restart nova compute
sudo service devstack@n-cpu restart
3) spawn 3 instances : openstack server create --flavor m1.large --image cirros-0.4.0-x86_64-disk --nic net-id=private alex
devstack$ ls -lhs /opt/stack/data/nova/instances/*/disk
81G -rw-r--r-- 1 libvirt-qemu kvm 80G Apr 10 00:49 /opt/stack/data/nova/instances/6ce8d602-e3b4-433b-92dc-57508dd86163/disk
81G -rw-r--r-- 1 libvirt-qemu kvm 80G Apr 10 06:54 /opt/stack/data/nova/instances/71c4867d-6e13-4f16-a9f7-f5da28388346/disk
81G -rw-r--r-- 1 libvirt-qemu kvm 80G Apr 9 15:28 /opt/stack/data/nova/instances/aaad32cb-a437-46c1-9122-2d0197acf54a/disk
devstack$ ls -ls /opt/stack/data/nova/instances/*/disk | awk '{sum_alloc_size+=$1 ; sum_virtual_size+=$6}END{print sum_virtual_size-sum_alloc_size*1024" bytes"}'
-2330624 bytes
qcow2 instances
-----
if you do the same with qcow2 with (in nova-cpu.conf: [default]/preallocate_images=space [libvirt]/images_type=qcow2):
qemu-img info /opt/stack/data/nova/instances/d99ea46d-95f6-4078-8d42-984506aa9d10/disk --output=json --force-share | grep -e actual-size -e virtual-size
"virtual-size": 85899345920,
"actual-size": 85899362304,
-16384 bytes
But main issue is because actual size can be greater than virtual size of few percents due to qcow2 metadata overhead.
real case:
qemu-img info /instances/29e86867-ec72-41fb-8dde-0df663c13ff8/disk
image: /instances/29e86867-ec72-41fb-8dde-0df663c13ff8/disk
file format: qcow2
virtual size: 80G (85899345920 bytes)
disk size: 85G
cluster_size: 65536
backing file: /instances/_base/68429e45667b8f2b91a94a76170cdb94f4adc9f2
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
-> -5 GB for only one instance
Expected result
===============
over_committed_disk_size calculation should retain 0 in case of negative value
Actual result
===============
negative over_committed_disk_size artificially increase available_disk_least
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1872082/+subscriptions
References