From: Avi Kivity <avi@qumranet.com>
To: Mark Williamson <mark.williamson@cl.cam.ac.uk>
Cc: kvm-devel@lists.sourceforge.net, qemu-devel@nongnu.org
Subject: Re: [kvm-devel] Making qemu images executable (and store command line arguments in them =P)
Date: Thu, 16 Aug 2007 08:21:39 +0300 [thread overview]
Message-ID: <46C3DEE3.3040909@qumranet.com> (raw)
In-Reply-To: <200708160052.51858.mark.williamson@cl.cam.ac.uk>
Mark Williamson wrote:
>> I've been giving some thought to Anthony's idea:
>>
>> http://kvm.qumranet.com/kvmwiki/Specs/StoringCommandLineInImage
>>
>> However, maybe I'm just too much on vacations, but I don't seem to
>> come up with a nice way of doing this. Everything keeps coming back to
>> creating a new 'container' image format and then implementing block
>> layer functions that only add the number of sectors occupied by the
>> command-line to the read and write calls made by QEMU, and then just
>> relay those calls to the image-specific functions. That doesn't sound
>> very efficient.
>>
>
> It's not necessarily that pretty, but I wouldn't have thought that adding a
> simple offset to block operations will have a measurable performance impact
> (given the latencies involved in block accesses anyhow, and the amount of
> data transferred each time).
>
>
Right.
>> The '#!' trick works nice with scripts, but I don't see it playing
>> very well with images. ¿Comments? ¿Pointers?
>>
>
> Well, it's not really necessary, but it would be darn cool :-) Another cool
> (but admittedly twisted - get the brain soap ready!) thing to do would be to
> statically link a qemu, and then include a virtual machine config and disks
> in a section of the elf file (inspired by glick:
> http://blogs.gnome.org/alexl/2007/08/07/experiments-with-runtime-less-app-bundles/).
> So then you'd have an "executable" VM image which doesn't need a Qemu runtime
> to be available. There are various variations you could do on this basic
> premise in order to make the file you carry around less terrifyingly huge!
>
That would make the VM not transportable (think moving from an x86_64
host to an i386 host) and would tie it to a particular version of kvm
userspace.
> Anyhow, enough of my random ideas... I was thinking about container formats.
>
> I've missed some of the discussion, but wouldn't tar be an obvious choice? It
> can expand easily out to a directory hierarchy containing config file and
> multiple virtual disk files, there are standard tools that can manipulate it
> and standard libraries that can be used by Qemu in order to get at the
> contents. Only problem I see with this approach is that sparse file handling
> might get a bit strange (using real sparse files vs using tar's
> represesntation of sparse files vs compatibility with tars that don't support
> them!).
>
Also it can't be used in-place, like Anthony's header or the
metadata-in-snapshot idea.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@qumranet.com>
To: Mark Williamson <mark.williamson@cl.cam.ac.uk>
Cc: kvm-devel@lists.sourceforge.net, qemu-devel@nongnu.org
Subject: Re: [kvm-devel] [Qemu-devel] Making qemu images executable (and store command line arguments in them =P)
Date: Thu, 16 Aug 2007 08:21:39 +0300 [thread overview]
Message-ID: <46C3DEE3.3040909@qumranet.com> (raw)
In-Reply-To: <200708160052.51858.mark.williamson@cl.cam.ac.uk>
Mark Williamson wrote:
>> I've been giving some thought to Anthony's idea:
>>
>> http://kvm.qumranet.com/kvmwiki/Specs/StoringCommandLineInImage
>>
>> However, maybe I'm just too much on vacations, but I don't seem to
>> come up with a nice way of doing this. Everything keeps coming back to
>> creating a new 'container' image format and then implementing block
>> layer functions that only add the number of sectors occupied by the
>> command-line to the read and write calls made by QEMU, and then just
>> relay those calls to the image-specific functions. That doesn't sound
>> very efficient.
>>
>
> It's not necessarily that pretty, but I wouldn't have thought that adding a
> simple offset to block operations will have a measurable performance impact
> (given the latencies involved in block accesses anyhow, and the amount of
> data transferred each time).
>
>
Right.
>> The '#!' trick works nice with scripts, but I don't see it playing
>> very well with images. ¿Comments? ¿Pointers?
>>
>
> Well, it's not really necessary, but it would be darn cool :-) Another cool
> (but admittedly twisted - get the brain soap ready!) thing to do would be to
> statically link a qemu, and then include a virtual machine config and disks
> in a section of the elf file (inspired by glick:
> http://blogs.gnome.org/alexl/2007/08/07/experiments-with-runtime-less-app-bundles/).
> So then you'd have an "executable" VM image which doesn't need a Qemu runtime
> to be available. There are various variations you could do on this basic
> premise in order to make the file you carry around less terrifyingly huge!
>
That would make the VM not transportable (think moving from an x86_64
host to an i386 host) and would tie it to a particular version of kvm
userspace.
> Anyhow, enough of my random ideas... I was thinking about container formats.
>
> I've missed some of the discussion, but wouldn't tar be an obvious choice? It
> can expand easily out to a directory hierarchy containing config file and
> multiple virtual disk files, there are standard tools that can manipulate it
> and standard libraries that can be used by Qemu in order to get at the
> contents. Only problem I see with this approach is that sparse file handling
> might get a bit strange (using real sparse files vs using tar's
> represesntation of sparse files vs compatibility with tars that don't support
> them!).
>
Also it can't be used in-place, like Anthony's header or the
metadata-in-snapshot idea.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
next prev parent reply other threads:[~2007-08-16 5:21 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-15 22:52 Making qemu images executable (and store command line arguments in them =P) Jorge Lucángeli Obes
2007-08-15 22:52 ` [Qemu-devel] " Jorge Lucángeli Obes
[not found] ` <59abf66e0708151552r6192f7e1he7ebe5bffd49525f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-15 23:52 ` Mark Williamson
2007-08-15 23:52 ` Mark Williamson
2007-08-16 5:21 ` Avi Kivity [this message]
2007-08-16 5:21 ` [kvm-devel] " Avi Kivity
[not found] ` <200708160052.51858.mark.williamson-kDbDZe0LBGWFxr2TtlUqVg@public.gmane.org>
2007-08-16 16:11 ` Andreas Färber
2007-08-16 16:11 ` Andreas Färber
2007-08-16 4:22 ` H. Peter Anvin
2007-08-16 4:22 ` [Qemu-devel] Re: [kvm-devel] " H. Peter Anvin
[not found] ` <46C3D109.3080807-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2007-08-16 5:23 ` [Qemu-devel] " Avi Kivity
2007-08-16 5:23 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
2007-08-16 15:12 ` Luke -Jr
-- strict thread matches above, loose matches on Subject: below --
2007-08-16 17:05 [Qemu-devel] " Ben Taylor
2007-08-17 12:40 ` Avi Kivity
2007-08-17 13:09 ` [kvm-devel] " Christian Brunschen
2007-08-19 10:35 ` [Qemu-devel] " Avi Kivity
2007-08-19 11:04 ` [kvm-devel] " Markus Hitter
2007-08-19 11:08 ` Avi Kivity
2007-08-19 13:14 ` [kvm-devel] " Christian Brunschen
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=46C3DEE3.3040909@qumranet.com \
--to=avi@qumranet.com \
--cc=kvm-devel@lists.sourceforge.net \
--cc=mark.williamson@cl.cam.ac.uk \
--cc=qemu-devel@nongnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.