From: RAFAEL SILVA <rafael.prazeres@ufrn.br>
To: pve-devel@lists.proxmox.com
Subject: qemu-server: Severe I/O stalls moving VM disks from NFS to LVM-thin, resolved with -t none
Date: Wed, 28 Oct 2026 04:41:26 -0300 [thread overview]
Message-ID: <CA+kT=Ev7=7mBBK4ST_gJtVRXL-JF7bUQ7G4Pqv_E0NjsXdgRDA@mail.gmail.com> (raw)
Hello Proxmox VE developers,
I would like to report an issue with VM disk moves from NFS storage to
LVM-thin using the Proxmox VE web interface.
I investigated the issue, identified a difference in the target cache mode
used by qemu-img, and successfully tested a local workaround.
*Environment*
-
Proxmox VE: 9.2.0
-
pve-manager: 9.2.21
-
qemu-server: 9.2.10
-
pve-qemu-kvm: 11.0.3-4
-
Kernel: 7.0.14-22-pve
-
libpve-storage-perl: 9.1.12
-
Source: TrueNAS NFS storage containing RAW VM images
-
Destination: local LVM-thin storage (local-lvm)
-
Hardware: Dell PowerEdge R710, PERC 6/i, four HDDs in RAID 5
-
RAID cache policy: WriteThrough (degraded BBU)
*Observed behavior*
Moving a powered-off VM disk from NFS to LVM-thin through the web interface
caused severe I/O congestion and host responsiveness issues.
During the operation, I observed approximately:
-
Write latency (w_await): 1,699 ms
-
Average queue size (aqu-sz): 104
-
Disk utilization: 94.5%
-
Write throughput: 10 MB/s
The problem persisted even with a 5 MiB/s conversion bandwidth limit.
It was reproducible with NFS datasets using both 64K and 128K ZFS record
sizes.
Disk moves in the opposite direction (LVM-thin to NFS) worked normally.
VMware ESXi imports into the same LVM-thin storage also worked normally.
*Command generated by Proxmox*
/usr/bin/qemu-img convert -p -n -r 5120K \
-f raw -O raw -- \
/mnt/pve/nas-nfs-vms/images/113/vm-113-disk-0.raw \
zeroinit:/dev/pve/vm-113-disk-0
*Successful manual conversion*
qemu-img convert -p -n -f raw -O raw -t none -- \
/mnt/pve/nas-nfs-vms/images/113/vm-113-disk-0.raw \
zeroinit:/dev/pve/vm-113-disk-0
This completed successfully without the previously observed severe I/O
stalls.
I also verified that an ESXi import using -t none opened its destination
block device with O_DIRECT.
*Relevant implementation*
In PVE/QemuServer/QemuImage.pm, the convert() function contains:
push @$cmd, '-t', 'none' if $dst_scfg->{type} eq 'zfspool';
Therefore, the target cache mode is explicitly set to none for ZFS pool
destinations, but not for LVM-thin.
*Locally tested workaround*
I changed the condition to:
push @$cmd, '-t', 'none'
if $dst_scfg->{type} eq 'zfspool'
|| ($dst_storeid eq 'local-lvm' && $dst_scfg->{type} eq 'lvmthin');
After applying this modification, VM disk moves from NFS to local-lvm
through the Proxmox web interface completed successfully without the
previous severe I/O stalls.
This workaround is intentionally limited to my local storage ID. I am not
proposing the storage-name-specific condition as an upstream solution.
*Additional testing observations*
The original disk move experienced severe I/O stalls even when the
conversion bandwidth was limited to 5 MiB/s.
Both the successful manual conversion and the subsequent successful
web-interface disk move were performed without a bandwidth limit, using -t
none.
Despite the absence of rate limiting, neither operation reproduced the
previously observed I/O congestion.
This suggests that the target cache mode may be a more significant factor
than the transfer rate itself.
However, since the bandwidth limit and target cache mode were changed
together, I cannot conclusively isolate their individual effects.
I have not repeated the failing conversion solely to test this distinction,
as the original behavior caused severe host responsiveness issues.
*Questions*
Would enabling -t none for LVM-thin destinations be appropriate?
Alternatively, would it be preferable to make the target cache mode
configurable for disk conversion operations?
I understand that the degraded RAID BBU and WriteThrough policy may
contribute to the observed behavior, and I cannot yet determine whether the
issue affects other hardware configurations.
I would appreciate feedback on the preferred approach. This would be my
first contribution to Proxmox VE. I would be happy to perform additional
tests, prepare a patch, or follow any guidance on the preferred approach.
Thank you for your time and for maintaining Proxmox VE.
Rafael Prazeres
reply other threads:[~2026-10-28 7:41 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CA+kT=Ev7=7mBBK4ST_gJtVRXL-JF7bUQ7G4Pqv_E0NjsXdgRDA@mail.gmail.com' \
--to=rafael.prazeres@ufrn.br \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox