From: Ori Mamluk <omamluk@zerto.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: "Kevin Wolf" <kwolf@redhat.com>,
"תומר בן אור" <tomer@zertodata.com>, "עודד קדם" <oded@zerto.com>,
dlaor@redhat.com, qemu-devel@nongnu.org,
"Yair Kuszpet" <yairk@zerto.com>,
"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [RFC] Replication agent design (was [RFC PATCH] replication agent module)
Date: Sun, 19 Feb 2012 15:40:38 +0200 [thread overview]
Message-ID: <4F40FBD6.2000500@zerto.com> (raw)
In-Reply-To: <CAJSP0QXRdU4XhW2wU+vOPh+vuzEECdKEWUGzaaENEtTbpRfKMg@mail.gmail.com>
On 08/02/2012 16:59, Stefan Hajnoczi wrote:
> On Wed, Feb 8, 2012 at 1:28 PM, Ori Mamluk<omamluk@zerto.com> wrote:
> You mentioned a future feature that sends request metadata (offset,
> length) to the rephub synchronously so that protection is 100%.
> (Otherwise a network failure or crash might result in missed writes
> that the rephub does not know about.)
>
> The NBD tap might not be the right channel for sending synchronous
> request metadata, since the protocol is geared towards block I/O
> requests that include the actual data. I'm not sure that QMP should
> be used either - even though we have the concept of QMP events -
> because it's not a low-latency, high ops communications channel.
>
> Which channel do you use in your existing products for synchronous
> request metadata?
>
> Stefan
Looking a little deeper into the NBD solution, it has another
problematic angle.
Assuming Rhev is managing the system - it will need to allocate a port
per volume on the host.
I don't see a clean way to do it.
Also, the idea of opening 3 process-external APIs for the replication
(NBD client, NBD server, meta-data tap) doesn't feel right to me.
Going back to Anthony's older mail :
> We're doomed to reinvent all of the Linux storage layer it seems. I
> think we really only have two choices: make better use of kernel
> facilities for this (like drbd) or have a proper, pluggable, storage
> interface so that QEMU proper doesn't have to deal with all of this.
>
> Gluster is appealing as a pluggable storage interface although the
> license is problematic for us today.
>
> I'm quite confident that we shouldn't be in the business of
> replicating storage though. If the answer is NBD++, that's fine too.
I think it might be better to go back to my original less generic design.
We can regard it as a 'plugin' for a specific application - in this
case, replication.
I can add a plugin interface in the generic block layer that allows
building a proper storage stack.
The plugin will have capabilities like a filter driver - getting hold of
the request on its way down (from VM to storage) and on its way up (IO
completion), allowing to block or stall both.
As for the plugin mechanism - it's clear to me that a dynamic plugin is
out of the question. It can be a definition - for example a 'plugins'
directory under block, which will contain the plugins code, and plugged
by command line or QMP commands.
This way we create separation between the Qemu code and the storage filters,
The down side is that the plugin code tends to be less generic and
reusable.
The advantage is that by separating - we don't complicate the Qemu
storage stack code with applicative requirements.
How about it?
Ori.
next prev parent reply other threads:[~2012-02-19 13:40 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-07 10:29 [Qemu-devel] [RFC PATCH] replication agent module Ori Mamluk
2012-02-07 12:12 ` Anthony Liguori
2012-02-07 12:25 ` Dor Laor
2012-02-07 12:30 ` Ori Mamluk
2012-02-07 12:40 ` Anthony Liguori
2012-02-07 14:06 ` Ori Mamluk
2012-02-07 14:40 ` Paolo Bonzini
2012-02-07 14:48 ` Ori Mamluk
2012-02-07 15:47 ` Paolo Bonzini
2012-02-08 6:10 ` Ori Mamluk
2012-02-08 8:49 ` Dor Laor
2012-02-08 11:59 ` Stefan Hajnoczi
2012-02-08 8:55 ` Kevin Wolf
2012-02-08 9:47 ` Ori Mamluk
2012-02-08 10:04 ` Kevin Wolf
2012-02-08 13:28 ` [Qemu-devel] [RFC] Replication agent design (was [RFC PATCH] replication agent module) Ori Mamluk
2012-02-08 14:59 ` Stefan Hajnoczi
2012-02-08 14:59 ` Stefan Hajnoczi
2012-02-19 13:40 ` Ori Mamluk [this message]
2012-02-20 14:32 ` Paolo Bonzini
2012-02-21 9:03 ` [Qemu-devel] BlockDriverState stack and BlockListeners (was: [RFC] Replication agent design) Kevin Wolf
2012-02-21 9:15 ` [Qemu-devel] BlockDriverState stack and BlockListeners Paolo Bonzini
2012-02-21 9:49 ` Kevin Wolf
2012-02-21 10:09 ` Paolo Bonzini
2012-02-21 10:51 ` Kevin Wolf
2012-02-21 11:36 ` Paolo Bonzini
2012-02-21 12:22 ` Stefan Hajnoczi
2012-02-21 12:57 ` Paolo Bonzini
2012-02-21 15:49 ` Markus Armbruster
2012-02-21 13:10 ` Kevin Wolf
2012-02-21 13:21 ` Paolo Bonzini
2012-02-21 15:56 ` Markus Armbruster
2012-02-21 16:04 ` Kevin Wolf
2012-02-21 16:19 ` Markus Armbruster
2012-02-21 16:39 ` Kevin Wolf
2012-02-21 17:16 ` Stefan Hajnoczi
2012-02-21 10:20 ` Ori Mamluk
2012-02-29 8:38 ` Ori Mamluk
2012-03-03 11:46 ` Stefan Hajnoczi
2012-03-04 5:14 ` Ori Mamluk
2012-03-04 8:56 ` Paolo Bonzini
2012-03-05 12:04 ` Stefan Hajnoczi
2012-02-08 11:02 ` [Qemu-devel] [RFC PATCH] replication agent module Stefan Hajnoczi
2012-02-08 13:00 ` [Qemu-devel] [RFC] Replication agent requirements (was [RFC PATCH] replication agent module) Ori Mamluk
2012-02-08 13:30 ` Anthony Liguori
2012-02-08 12:03 ` [Qemu-devel] [RFC PATCH] replication agent module Stefan Hajnoczi
2012-02-08 12:46 ` Paolo Bonzini
2012-02-08 14:39 ` Stefan Hajnoczi
2012-02-08 14:55 ` Paolo Bonzini
2012-02-08 15:07 ` Stefan Hajnoczi
2012-02-07 14:53 ` Kevin Wolf
2012-02-07 15:00 ` Anthony Liguori
2012-02-07 13:34 ` Kevin Wolf
2012-02-07 13:50 ` Stefan Hajnoczi
2012-02-07 13:58 ` Paolo Bonzini
2012-02-07 14:05 ` Paolo Bonzini
2012-02-08 12:17 ` Orit Wasserman
2012-02-07 14:18 ` Ori Mamluk
2012-02-07 14:59 ` Anthony Liguori
2012-02-07 15:20 ` Stefan Hajnoczi
2012-02-07 16:25 ` Anthony Liguori
2012-02-21 16:01 ` Markus Armbruster
2012-02-21 17:31 ` Stefan Hajnoczi
2012-02-07 14:45 ` Ori Mamluk
2012-02-08 12:29 ` Orit Wasserman
2012-02-08 11:45 ` Luiz Capitulino
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=4F40FBD6.2000500@zerto.com \
--to=omamluk@zerto.com \
--cc=dlaor@redhat.com \
--cc=kwolf@redhat.com \
--cc=oded@zerto.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
--cc=tomer@zertodata.com \
--cc=yairk@zerto.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 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.