[Drbd-dev] syncsource -> sync completed ack lost
Petrakis, Peter
Peter.Petrakis at stratus.com
Wed Jan 6 15:51:23 CET 2010
Hi,
> 8.2 is obsolete.
> it has been superseeded by 8.3
I know we're behind, such is the life of a vendor branch :)
> if you can reproduce with 8.3,
> we will certainly look into this.
I can re-run the tests but in general we have a difficult time
reproducing these bugs. Do you know of a way I could "stage" the
state transitions so to make it more reproducable?
> but I think we fix a few things that would match your symptoms in 8.3.
>
> we are currently (well, tomorrow) at 8.3.7 rc2
That's promising.
> > Jan 5 14:36:18 node1 kernel: drbd5: helper command:
> > /usr/lib/spine/bin/avance_drbd_helper after-resync-target minor-5
>
> I'd be interessted in this /usr/lib/spine/bin/avance_drbd_helper.
> what does it do, compared with drbdadm?
Sure, we wrote our own drbd management daemon which is part of our
cluster manager. The DRBD resources are constructed as a consequence
of VM provisioning, using drbdsetup. So we already have a config to
reference, however to make use of the fencing handler we would also
have maintain the drbd.conf file, which after much consideration it was
determined as being too fragile for our environment: Should one part of
the config file become inconsistent then all resources are affected.
avance_drbd_helper will dispatch only the events we care to handle to
our other custom handlers which will communicate to our management
daemon
directly using XML-RPC. So I have access to not only what would
be found normally in the drbd.conf to make decisions, but the entire
state
of the cluster.
$cat avance_drbd_helper
#!/usr/lib/spine/bin/ruby
$:.unshift('/usr/lib/spine')
$0 = 'avance_drbd_helper'
require 'base/extensions'
require 'syslog'
$syslog = Syslog.open($0, Syslog::LOG_NDELAY, Syslog::LOG_DAEMON)
$syslog.notice "invoking #{$0}"
usage = <<-EOF
Description:
This is a pass-thru helper for drbd. We execute processes on
it's
behalf and return the exit status back to the khelper.
Usage:
avance_drbd_helper <action> <arguments>
EOF
puts usage unless ARGV.length > 0
# see drbd_khelper for argument list passed to userspace
khelper = ARGV[0] # 'outdate-peer'
resource = ARGV[1] # 'minor-5'
# the config file is no longer necessary, add all calls to
# khelpers here instead.
if khelper == 'outdate-peer' || khelper == 'fence-peer'
resource.match(/minor-(\d+)/)
%x{/usr/lib/spine/bin/drbd_outdate_peer drbd#{$1}}
exit $?.exitstatus
end
if $DEBUG
ARGV.each_with_index do |arg, idx|
$syslog.notice "arg[#{idx}]='#{arg}'"
end
end
# safe default value for the rest of the handlers e.g.
before-resync-target
exit 0
##
# vim: ts=4:sw=4:ai:expandtab
Should anyone else want to use this, just remove any references to
"spine"
and "require 'base/extensions'". We override the default implementation
of
%x.
Peter
> --
> : Lars Ellenberg
> : LINBIT | Your Way to High Availability
> : DRBD/HA support and consulting http://www.linbit.com
>
> DRBD(r) and LINBIT(r) are registered trademarks of LINBIT, Austria.
> _______________________________________________
> drbd-dev mailing list
> drbd-dev at lists.linbit.com
> http://lists.linbit.com/mailman/listinfo/drbd-dev
>
More information about the drbd-dev
mailing list