On Thu, Nov 14, 2024 at 01:02:02AM +0800, d tbsky wrote:
Hi:
few years ago virtio-blk device was showing as hard-disk under
windows. recent years the driver change the device to show as
thin-provisioned disk. the change is good for ssd, but not so good
for raw hard-disk.
under windows server 2022 the default virtio-blk situation is quite
bad, ssd trim is very slow. and defrag a bigger volume like 1TB
harddisk will always show "memory not enough", even when the volume is
empty.
I found discussions to change the "discard_granularity" to make trim
happy again. and libvirt support the syntax like below:
<blockio discard_granularity='2097152'/>
I also found if I can set "discard_granularity" to zero, then
windows will recognize the device as "traditional hard drive" again
and won't do unnecessary trim to it. I want to do this for years, but
couldn't find a way to set it up like vitio-scsi's rotational
parameter.
the sad part is if I setup it under RHEL 9.4 with librirt 10.0 like below:
<blockio discard_granularity='0'/>
the line will just disappear when I close "virsh edit"
That is because we treat '0' as the default. Unfortunately that value
in QEMU does not mean the same as for us as QEMU defaults to logical
block size and discard_granularity=0 actually changes the behaviour.
so I can only use complex format with
"<qemu:override>" to set
"discard_granularity='0'"
I wonder if libvirt would be changed to accept
"discard_granularity='0'" so the traditional hard-disk can be
recognized under windows again.
That should be possible, yes. Given the behaviour described above it
should be done (although it feels like there is something else that's
worth fixing, but I don't know what and where).
Could you file an upstream (or downstream) issue so that we do not lose
track of this?
Upstream:
https://gitlab.com/libvirt/libvirt/-/issues/new
Downstream:
https://issues.redhat.com/secure/CreateIssue!default.jspa
or is there better ways to distinguish hard-disk/ssd/thin-disk
for virtio-blk now?
Based on whether it is taking time in the guest or in the host you could
theoretically try setting <driver name='qemu' discard='ignore'/> but
I
guess that would not help.
Other than that I don't know about any other option.
Regards,
tbskyd