[nova][resize/migrate][performance] the whole virtual size of vm's disk is being copied instead of the actual size.

Bug #1025259 reported by David Naori
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Fix Released
Undecided
Pádraig Brady

Bug Description

Description of problem:

When resizing/migrating an instance with qcow2 image:

1) nova is converting the image to raw (in order to unite it with the backing file )

2012-07-16 14:06:41 DEBUG nova.utils [req-58761caf-98ab-4bea-9719-8f9472d86205 29af43364ced4611bf6e093a04d4c144 3f1e394b238d4f26b742e9685a9a1a57] Running cmd (subprocess): qemu-
img convert -f qcow2 -O raw /var/lib/nova/instances/instance-00000154_resize/disk /var/lib/nova/instances/instance-00000154_resize/disk_rbase from (pid=26760) execute /usr/lib/p
ython2.6/site-packages/nova/utils.py:220
2012-07-16 14:07:00 DEBUG nova.utils [req-58761caf-98ab-4bea-9719-8f9472d86205 29af43364ced4611bf6e093a04d4c144 3f1e394b238d4f26b742e9685a9a1a57] Running cmd (subprocess): scp /
var/lib/nova/instances/instance-00000154_resize/disk_rbase 10.35.77.4:/var/lib/nova/instances/instance-00000154/disk from (pid=26760) execute /usr/lib/python2.6/site-packages/no
va/utils.py:220

~20 seconds

2) scp copies the converted image to destination host

qemu-img info:
# qemu-img info david.disk
image: david.disk
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 947M

result: 10G of data is being copied instead of 947M.

# scp david.disk root@camel-vdsb:/tmp/david.disk.copy
                                                                                                                                   100% 10GB 41.1MB/s 04:09

04:09 minutes

3) afterwards in order to be able to create snapshots on this image its being converted again to qcow2 on destenation host

2012-07-16 14:10:39 DEBUG nova.utils [req-58761caf-98ab-4bea-9719-8f9472d86205 29af43364ced4611bf6e093a04d4c144 3f1e394b238d4f26b742e9685a9a1a57] Running cmd (subprocess): qemu-img convert -f raw -O qcow2 /var/lib/nova/instances/instance-00000154/disk /var/lib/nova/instances/instance-00000154/disk_qcow from (pid=17788) execute /usr/lib/python2.6/site-packages/nova/utils.py:220

2012-07-16 14:13:12 DEBUG nova.utils [req-58761caf-98ab-4bea-9719-8f9472d86205 29af43364ced4611bf6e093a04d4c144 3f1e394b238d4f26b742e9685a9a1a57] Running cmd (subprocess): mv /var/lib/nova/instances/instance-00000154/disk_qcow /var/lib/nova/instances/instance-00000154/disk from (pid=17788) execute /usr/lib/python2.6/site-packages/nova/utils.py:220

~02:33 minutes

Tested alternative:
1) convert the image from qcow2 to qcow2 (in order to unite it with the backing file )

2) rsync --sparce the file to the destination

# qemu-img info david.qcow.disk
image: david.qcow.disk
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 953M
cluster_size: 65536

# time rsync -S -v david.qcow.disk root@camel-vdsb:/tmp/david.disk.rsync-copy
david.qcow.disk

sent 999218356 bytes received 31 bytes 39185034.78 bytes/sec
total size is 999096320 speedup is 1.00

real 0m24.797s
user 0m20.237s
sys 0m4.998s

Expected results:
in this case 24 seconds instead of 4:09 minutes.
conversion avoided after copy. (less 02:33 minutes)

description: updated
description: updated
summary: - [nova][resize/migrate][performance] the hole virtual size of vm's disk
+ [nova][resize/migrate][performance] the whole virtual size of vm's disk
is being copied instead of the actual size.
Changed in nova:
assignee: nobody → Pádraig Brady (p-draigbrady)
milestone: none → folsom-3
status: New → In Progress
Thierry Carrez (ttx)
Changed in nova:
milestone: folsom-3 → folsom-rc1
Revision history for this message
Pádraig Brady (p-draigbrady) wrote :

Oops this bug was logged after the code was added
https://github.com/openstack/nova/commit/3a3ad54

Changed in nova:
milestone: folsom-rc1 → none
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.