From: Iustin Pop <iustin@google.com>
To: Philipp Reisner <philipp.reisner@linbit.com>
Cc: drbd-dev@lists.linbit.com
Subject: Re: [Drbd-dev] [PATCH 0/3] Implement {begin|after}-resync-source handlers
Date: Tue, 18 May 2010 10:52:07 +0200 [thread overview]
Message-ID: <20100518085207.GB19087@google.com> (raw)
In-Reply-To: <201005172344.40802.philipp.reisner@linbit.com>
On Mon, May 17, 2010 at 11:44:40PM +0200, Philipp Reisner wrote:
> Am Montag 17 Mai 2010 14:37:57 schrieb Iustin Pop:
> > These small patches duplicate the resync-target handlers for the other
> > end of the connection.
> >
>
> Hi Iustin,
>
> The patches look okay so far, I am considering to apply them
> to our tree.
>
> * Have you ever considered to use the "drbdsetup events"
> interface instead?
Yep, I thought about it, and might use it if the handler method is not
good enough (for whatever reason). But I'd rather like to use the
handlers, since they allow reaction before the actual sync starts, and
thus they eliminate a window of "uncontrolled" syncs (see below why we
want to control them).
> * Are you going to use them in your organisation?
That too, but better said we're going to use them in Ganeti (opensource,
cluster-based virtualization manager). Background: Ganeti uses only the
low-level drbdsetup interface, and not the drbdadm one, since we manage
the minor numbers assignments dynamically. This dynamic part hits us,
because we cannot make easy 'resync-after' rules (especially as on
bigger Ganeti clusters, like 20-40 nodes, you could get easily into
circular dependencies if you're not careful.
So the plan is to write a custom usermode_helper (right now Ganeti
documentations says to use /bin/true :), so we're not losing any
functionality by moving to a custom helper), that will simply restrict
DRBD to a single sync (either incoming or outgoing) per machine, in
order to not overload any machine's I/O resources. When a begin-sync
request comes in, either source or target, the helper will look if any
other minors are undergoing syncs, and if so will drbdsetup pause-sync
the minor - I hope that this is safe to do from the callback, my few
tests show it so. And when a after-resync-* requests comes, we look if
there are any paused syncs (on our end), and if so then we'll unpause
one.
Now, if drbd (the kernel driver) would have a setting like 'max_syncs',
then we wouldn't have to implement anything in Ganeti, but that is
probably more work in the kernel - which is harder, compared with a
simple userspace shell script.
Hope my explanation makes sense…
iustin
next prev parent reply other threads:[~2010-05-18 8:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-17 12:37 [Drbd-dev] [PATCH 0/3] Implement {begin|after}-resync-source handlers Iustin Pop
2010-05-17 12:37 ` [Drbd-dev] [PATCH 1/3] Implement before|after-resync-source in drbdadm Iustin Pop
2010-05-17 12:37 ` [Drbd-dev] [PATCH 2/3] Make the drbd driver generate resync-source callbacks Iustin Pop
2010-05-17 12:38 ` [Drbd-dev] [PATCH 3/3] Update documentation for resync-source handlers Iustin Pop
2010-05-17 21:44 ` [Drbd-dev] [PATCH 0/3] Implement {begin|after}-resync-source handlers Philipp Reisner
2010-05-18 8:52 ` Iustin Pop [this message]
2010-05-18 12:05 ` Philipp Reisner
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=20100518085207.GB19087@google.com \
--to=iustin@google.com \
--cc=drbd-dev@lists.linbit.com \
--cc=philipp.reisner@linbit.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.