qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Benoît Canet" <benoit.canet@irqsave.net>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, pbonzini@redhat.com, agrover@redhat.com,
	stefanha@redhat.com
Subject: [Qemu-devel] tcmu-runner and QEMU
Date: Fri, 29 Aug 2014 19:22:18 +0200	[thread overview]
Message-ID: <20140829172218.GD16755@irqsave.net> (raw)


Hi list,

Listening at Palo's suggestion I started discussing privately with
Andy about integrating LIO and the QEMU block layer together using
tcmu-runner: https://github.com/agrover/tcmu-runner.

The rationale is that it would be very handy to be able to export one of the numerous QEMU
image formats into ISCSI or FCOE via the LIO kernel target.

For example a cloud provider would be able to provision either a bare metal instance
(some hardware knows how to boot ISCSI and FCOE) or a virtualized instance while
using the same QCOW2 backing chain.

The consequence is that the end user would be able to switch back and forth between
small virtualized hardware or monster bare metal hardware while keeping the same data
in the same volumes.

Quoting Andy:
"My initial thought is that we don't want to make tcmu-runner
QEMU-specific, what we really want is tcmu-runner to be able to use
QEMU's multitude of BlockDrivers. Ideally the BlockDrivers could be
compiled as loadable modules that could then be loaded by QEMU or
tcmu-runner. Or if that's not possible then we might need to build a
tcmu-runner handler as part of QEMU, similar to how qemu-nbd is built?"

The truth is that QEMU block drivers don't know how to do much on their own
so we probably must bring the whole QEMU  block layer in a tcmu-runner handler plugin.

Another reason to do this is that the QEMU block layer brings features like taking
snapshots or streaming snaphots that a cloud provider would want to keep while exporting
QCOW2 as ISCSI or FCOE.

Doing these operations is usually done by passing something like
"--qmp tcp:localhost,4444,server,nowait" as a QEMU command line argument then
connecting on this JSON processing socket then send orders to QEMU.

I made some patches to split this QMP machinery from the QEMU binary but still
I don't know how a tcmu-runner plugin handler would be able to receive this command
line configuration.

Some other configuration would be needed to configurate properly the QEMU block layer:
for example which cache mode should the handler use ?

So passing configuration to the QEMU block plugin would be the first critical point.

The second problem is that the QEMU block layer is big and filled with scary stuff like
threads and coroutines but I think only trying to write the tcmu-runner handler will
tell if it's doable.

Best regards

Benoît

             reply	other threads:[~2014-08-29 17:23 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-29 17:22 Benoît Canet [this message]
2014-08-29 18:38 ` [Qemu-devel] tcmu-runner and QEMU Andy Grover
2014-08-29 18:51   ` Benoît Canet
2014-08-29 22:36     ` Andy Grover
2014-08-29 22:46       ` Benoît Canet
2014-08-30 14:46 ` Richard W.M. Jones
2014-08-30 15:53   ` Benoît Canet
2014-08-30 16:02     ` Richard W.M. Jones
2014-08-30 16:04       ` Richard W.M. Jones
2014-08-30 17:22         ` Benoît Canet
2014-08-30 21:50           ` Benoît Canet
2014-08-30 16:51       ` Benoît Canet
2014-08-31 20:03       ` Andy Grover
2014-08-31 20:38         ` Benoît Canet
2014-09-01  8:32           ` Paolo Bonzini
2014-09-01  8:08         ` Paolo Bonzini
2014-09-02  9:25 ` Stefan Hajnoczi
2014-09-03  0:20   ` Andy Grover
2014-09-03  7:34     ` Paolo Bonzini
2014-09-03 13:11     ` Stefan Hajnoczi
2014-09-04 13:24       ` Benoît Canet
2014-09-04 15:15         ` Andy Grover
2014-09-04 15:59           ` Benoît Canet
2014-09-04 20:16           ` Stefan Hajnoczi

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=20140829172218.GD16755@irqsave.net \
    --to=benoit.canet@irqsave.net \
    --cc=agrover@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.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).