[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug 1759522] Re: windows qemu-img create vpc/vhdx error
From: |
maro |
Subject: |
[Bug 1759522] Re: windows qemu-img create vpc/vhdx error |
Date: |
Sat, 29 Feb 2020 00:14:40 -0000 |
I also discovered just a few days ago the problem that sparse VHD/VHDX
image files are not being accepted by Windows.
It appears that qemu-img on Windows always tries to create images as
sparse files. Only in some cases (e.g. when operating on a NTFS file
system) will the file actually be a sparse file.
Being a sparse file seems to be no issue when using these file with QEMU
itself. Most file formats that qemu-img is able to create will be
unknown to Windows own tools, but the one exception are VHD/VHDX files.
As long as a file carries the sparse attribute it will be "un-
acceptable" to the Windows tools (e.g. diskpart/diskmgmt). As a crude
work-around I've noticed that a copy of such a file will have "lost" the
sparse attribute, and therefore can be mounted. Likewise any copy of a
file created on a different system will not be a sparse file (and hence
the issue does not arise).
I'm attaching a log file (with a few comments) of some steps that
demonstrate the problem, and how I worked around it. The test was done
with qemu-img v4.1.0, but I'm fairly certain that this issue has been
present since "forever" (and a quick re-test with v4.2.0 confirmed that
it has not "gone away").
So, a simple work-around exists, but I see myself unable to suggest a
patch. I guess the patch should be specific to prevent the creation of
sparse VHD/VHDX files on Windows. But from the superficial reading I did
I could not work out whether the image format information would be
available in 'raw_co_create()' (of: 'block/file-win32.c').
** Attachment added: "sparse-VHD_issue.log"
https://bugs.launchpad.net/qemu/+bug/1759522/+attachment/5332081/+files/sparse-VHD_issue.log
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1759522
Title:
windows qemu-img create vpc/vhdx error
Status in QEMU:
New
Bug description:
On windows, using qemu-img (version 2.11.90) to create vpc/vhdx
virtual disk tends to fail. Here's the way to reproduce:
1. Install qemu-w64-setup-20180321.exe
2. Use `qemu-img create -f vhdx -o subformat=fixed disk.vhdx 512M` to create
a vhdx:
Formatting 'disk.vhdx', fmt=vhdx size=536870912 log_size=1048576
block_size=0 subformat=fixed
3. Execute `qemu-img info disk.vhdx` gives the result, (note the `disk size`
is incorrect):
image: disk.vhdx
file format: vhdx
virtual size: 512M (536870912 bytes)
disk size: 1.4M
cluster_size: 8388608
4. On Windows 10 (V1709), double click disk.vhdx gives an error:
Make sure the file is in an NTFS volume and isn't in a compressed folder
or volume.
Using Disk Management -> Action -> Attach VHD gives an error:
The requested operation could not be completed due to a virtual disk
system limitation. Virtual hard disk files must be uncompressed and uneccrypted
and must not be sparse.
Comparison with Windows 10 created VHDX:
1. Using Disk Management -> Action -> Create VHD:
File name: win.vhdx
Virtual hard disk size: 512MB
Virtual hard disk format: VHDX
Virtual hard disk type: Fixed size
2. Detach VHDX
3. Execute `qemu-img info win.vhdx` gives the result:
image: win.vhdx
file format: vhdx
virtual size: 512M (536870912 bytes)
disk size: 516M
cluster_size: 33554432
Comparison with qemu-img under Ubuntu:
1. Version: qemu-img version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.16),
Copyright (c) 2004-2008 Fabrice Bellard
2. qemu-img create -f vhdx -o subformat=fixed lin.vhdx 512M
Formatting 'lin.vhdx', fmt=vhdx size=536870912 log_size=1048576
block_size=0 subformat=fixed
3. qemu-img info lin.vhdx
image: lin.vhdx
file format: vhdx
virtual size: 512M (536870912 bytes)
disk size: 520M
cluster_size: 8388608
4. Load lin.vhdx under Windows 10 is ok
The same thing happens on `vpc` format with or without
`oformat=fixed`, it seems that windows version of qemu-img has some
incorrect operation? My guess is that windows version of qemu-img
doesn't handle the description field of vpc/vhdx, which leads to an
incorrect `disk size` field.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1759522/+subscriptions