[DRBD-user] Resyncing over a slow link
brian at netcents.com
Tue Nov 17 17:27:37 CET 2009
Please pardon any mistakes, as I am relatively new to DRBD.
I've recently started to use DRBD to synchronize a 2TB volume over a
low-speed (10-14 megabit) wireless link to an offsite location. I
initialized the original volume using ocfs2 and drbd and copied to the
second volume using dd, so the data sets should have started out identical.
I installed the disks at the remote location and brought up the array in
active-active synchronous mode. Writes on either volume would show up
instantly and everything seemed to be alright, but I wanted to verify
that the data sets were actually in sync, so I did an invalidate-remote
from the local node and watched in horror as it tried to re-sync the
entire array. The operation was set to take 2-3 weeks, and everytime one
or other node went down the operation started again from 0%!
Reading the mailing lists, it appeared that their was an assumption that
the disk was always the performance bottleneck, and the case of slow
links was not really considered by the developers.
Seeing as I contribute to reasonably large OSS projects, I am interested
in trying to add some functionality to DRBD to help people out in
situations similar to my own (as well as help with my own dilemma).
My question is this: is the code functionally separated to the point
that it would be possible to add a second code path for the
synchronization algorithm? I would be interested in adding support for
synchronizing devices using a binary diffing library like librsync to
trade CPU cycles for bandwidth.
Please let me know if this is theoretically possible given the current
architecture of DRBD, and if so, any starting tips you might be able to
think of. I couldn't find a developers guide, so I'll be jumping into
this cold. Also let me know if I'm being terribly naive in thinking that
there is some way I'll be able to implement something workable in less
that the 3 weeks it will take for the array to sync naturally.
More information about the drbd-user