[libvirt PATCH 1/2] storage: add support for QCOW2 cluster_size option
Peter Krempa
pkrempa at redhat.com
Wed May 19 12:49:14 UTC 2021
On Thu, May 13, 2021 at 13:23:04 +0200, Pavel Hrdina wrote:
> The default value hard-coded in QEMU (64KiB) is not always the ideal.
> Having a possibility to set the cluster_size by user may in specific
> use-cases improve performance for QCOW2 images.
>
> QEMU internally has some limits, the value has to be between 512B and
> 2048KiB and must by power of two, except when the image has Extended L2
> Entries the minimal value has to be 16KiB.
>
> Since qemu-img ensures the value is correct and the limit is not always
> the same libvirt will not duplicate any of these checks as the error
> message from qemu-img is good enough:
>
> Cluster size must be a power of two between 512 and 2048k
>
> Resolves: https://gitlab.com/libvirt/libvirt/-/issues/154
>
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
[...]
> @@ -867,6 +868,11 @@
> the file image is used in VM. To create non-raw file images, it
> requires QEMU version since 2.1. <span class="since">Since 1.2.7</span>
> </dd>
> + <dt><code>clusterSize</code></dt>
> + <dd> Changes the qcow2 cluster size where smaller size can improve image
> + file size whereas larger size can improve performance.
> + <span class="since">Since 7.4.0</span>
I think we should refrain from advice on how the cluster size can be
configured because it has way more nuance than this short sentence.
> + </dd>
> <dt><code>features</code></dt>
> <dd>Format-specific features. Only used for <code>qcow2</code> now.
> Valid sub-elements are:
> diff --git a/tests/storagevolxml2xmlin/vol-qcow2-clusterSize.xml b/tests/storagevolxml2xmlin/vol-qcow2-clusterSize.xml
> new file mode 100644
> index 0000000000..22534982a1
> --- /dev/null
> +++ b/tests/storagevolxml2xmlin/vol-qcow2-clusterSize.xml
> @@ -0,0 +1,17 @@
> +<volume>
> + <name>OtherDemo.img</name>
> + <key>/var/lib/libvirt/images/OtherDemo.img</key>
> + <capacity unit="G">5</capacity>
> + <allocation>294912</allocation>
> + <target>
> + <path>/var/lib/libvirt/images/OtherDemo.img</path>
> + <format type='qcow2'/>
I wonder whether it wouldn't make more sense to stash cluster size under
the 'format' tag.
Does the LVM volume XML have <format> ?
> + <permissions>
> + <mode>0644</mode>
> + <owner>0</owner>
> + <group>0</group>
> + <label>unconfined_u:object_r:virt_image_t:s0</label>
> + </permissions>
> + <clusterSize unit='KiB'>128</clusterSize>
> + </target>
> +</volume>
More information about the libvir-list
mailing list