The qcow2 disk format has some decent features like encryption, compression and -- as its abbreviation indicates -- copy to write support. Yet, its growing size is difficult to predict. In addition, the compression and the copy processes make it quite a bit slower than raw disk images. A simple and non-representative benchmark (bonnie++ -b -u root -d /mnt
) shows it:
qcow2:
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
<host> 2G 856 94 33126 7 30392 7 4727 92 739753 70 300.4 20
Latency 51096us 2473ms 972ms 5240us 1516us 382ms
Version 1.96 ------Sequential Create------ --------Random Create--------
<host> -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 35 0 +++++ +++ 46 0 34 0 +++++ +++ 44 0
Latency 338ms 808us 2136ms 341ms 155us 2016ms
Raw:
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
<host> 2G 885 97 18719 15 75344 70 3993 88 1663036 81 351.6 138
Latency 12763us 34358ms 273ms 4526us 520us 310ms
Version 1.96 ------Sequential Create------ --------Random Create--------
<host> -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 35 0 +++++ +++ 49 0 35 0 +++++ +++ 47 0
Latency 1324ms 797us 915ms 452ms 156us 823ms
So if you're like me and still refrain from using LVM as underlying disk layout but prefer images which can be copied and moved in a quick'n dirty way, you might want to migrate your qcow2 images to raw ones. This article describes the necessary steps.
Shutdown of the VM
First, shutdown the vm which disks you wish to convert:
virsh shutdown {vm_name}
Conversion of the image files
Each of the image files of the virtual machine have to be converted by running the following for the respective files:
qemu-img convert {image_name}.qcow2 {image_name}.raw
Adapt the virtual machine's xml config
Now, two lines of the vm's xml configuration have to be adjusted. Do this by running:
virsh edit {vm_name}
The lines are:
Change them to match:
Have you try with device block? I’m testing in these days a very little system with kvm and block device …
No, in my tests I didn’t compare block devices. I’d be interested in your findings though. Please let me know after you got some numbers!