From: Eric Blake <eblake@redhat.com>
To: "Wang, Wei W" <wei.w.wang@intel.com>, Kevin Wolf <kwolf@redhat.com>
Cc: "Richard W.M. Jones" <rjones@redhat.com>,
"lersek@redhat.com" <lersek@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"qemu-block@nongnu.org" <qemu-block@nongnu.org>,
"mreitz@redhat.com" <mreitz@redhat.com>
Subject: Re: Question on Compression for Raw Image
Date: Tue, 20 Oct 2020 09:32:23 -0500 [thread overview]
Message-ID: <ec72d814-109c-4ed9-cb26-32b9d903f8c2@redhat.com> (raw)
In-Reply-To: <6124d55766e4477299a5796a002276a0@intel.com>
[-- Attachment #1.1.1: Type: text/plain, Size: 2059 bytes --]
On 10/20/20 9:22 AM, Wang, Wei W wrote:
> On Tuesday, October 20, 2020 4:01 PM, Kevin Wolf wrote:
>> Am 20.10.2020 um 03:31 hat Wang, Wei W geschrieben:
>>> Hi,
>>>
>>> Does anyone know the reason why raw-format.c doesn't have
>> compression
>>> support (but qcow has the supported added)? For example, raw image
>>> backup with compression, "qemu-img convert -c -O raw origin.img
>>> dist.img", doesn't work.
>>
>> A raw image is by definition a file that contains the exact same sequence of
>> bytes as the guest sees, without any additional information or encoding. If
>> you compress a raw file, the guest will see compressed data on its hard disk
>> instead of the real data.
>
> Ok, thanks. I'm thinking QEMU could do decompression of the compressed data in raw.img when guest reads data.
>
>>
>> Anything you could do to add transparent compression to it would mean that
>> it's not a raw image any more, but a new image format.
>>
> Yes, decompression makes it transparent to the guest. Would you think it's good to reuse the raw image implementation, just add the compress/decompress option?
My recommendation would be implementing a new BDS filter that does
uncompression. Then, you could do things like:
raw -> decompress -> file.xz
or even
qcow2 -> decompress -> file.qcow2.xz
By the way, the notion of filters is already possible in other ways.
For example, you can point qemu to read from an NBD server, and then use
nbdkit to do the decompression with its filters:
nbdkit --filter=xz file file.xz
raw -> nbd://localhost:10809
Also note that serving a decompressed view of a compressed image tends
to be a read-only proposition (you really CAN'T write to the image
without recompressing, but even if recompression has been blocked for
parallelism, you would end up writing far more of the file after
recompression than the amount of data written by a guest).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
[-- Attachment #1.1.2: OpenPGP_0xA7A16B4A2527436A_and_old_rev.asc --]
[-- Type: application/pgp-keys, Size: 103475 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]
next prev parent reply other threads:[~2020-10-20 14:34 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-20 1:31 Question on Compression for Raw Image Wang, Wei W
2020-10-20 8:00 ` Kevin Wolf
2020-10-20 14:22 ` Wang, Wei W
2020-10-20 14:32 ` Eric Blake [this message]
2020-10-20 14:42 ` Richard W.M. Jones
2020-10-20 14:49 ` Alberto Garcia
2020-10-20 14:36 ` Alberto Garcia
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=ec72d814-109c-4ed9-cb26-32b9d903f8c2@redhat.com \
--to=eblake@redhat.com \
--cc=kwolf@redhat.com \
--cc=lersek@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
--cc=wei.w.wang@intel.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;
as well as URLs for NNTP newsgroup(s).