[Gluster-devel] [Gluster-users] Phasing out replace-brick for data migration in favor of remove-brick.

Cool coolbsd at hotmail.com
Fri Sep 27 18:33:12 UTC 2013


How does the new command set achieve this?

old layout (2x2):
rep=2: h1:/b1 h2:/b1 h1:/b2 h2:/b2

new layout (3x2):
rep=2: h1:/b1 h2:/b1 h1:/b2 h3:/b1 h2:/b2 h3:/b2

purpose for the new layout is to make sure there is no SOF, as I cannot 
simple add h3:/b1 and h3:/b2 as a pair.

With replace-brick it pretty straightforward, but without that ... 
should I remove-brick h2:/b2 then add-brick h3:/b1? this means I'm going 
to have only one copy for some data for a certain period of time, which 
makes me feel nervous. Or, should I add-brick h3:/b1 first? That doesn't 
seems to be reasonable either.

Or am I the only one hitting this kind of upgrade?

-C.B.

On 9/27/2013 10:15 AM, Amar Tumballi wrote:
>
>     Hello all,
>     DHT's remove-brick + rebalance has been enhanced in the last
>     couple of releases to be quite sophisticated. It can handle
>     graceful decommissioning of bricks, including open file
>     descriptors and hard links.
>
>
> Last set of patches for this should be reviewed and accepted before we 
> make that claim :-) [ http://review.gluster.org/5891 ]
>
>     This in a way is a feature overlap with replace-brick's data
>     migration functionality. Replace-brick's data migration is
>     currently also used for planned decommissioning of a brick.
>
>     Reasons to remove replace-brick (or why remove-brick is better):
>
>     - There are two methods of moving data. It is confusing for the
>     users and hard for developers to maintain.
>
>     - If server being replaced is a member of a replica set, neither
>     remove-brick nor replace-brick data migration is necessary,
>     because self-healing itself will recreate the data (replace-brick
>     actually uses self-heal internally)
>
>     - In a non-replicated config if a server is getting replaced by a
>     new one, add-brick <new> + remove-brick <old> "start" achieves the
>     same goal as replace-brick <old> <new> "start".
>
>
> Should we phase out CLI of doing a 'remove-brick' without any option 
> too? because even if users do it by mistake, they would loose data. We 
> should enforce 'start' and then 'commit' usage of remove-brick. Also 
> if old method is required for anyone, they anyways have 'force' option.
>
>     - In a non-replicated config, <replace-brick> is NOT glitch free
>     (applications witness ENOTCONN if they are accessing data) whereas
>     add-brick <new> + remove-brick <old> is completely transparent.
>
>
> +10 (thats the number of bugs open on these things :-)
>
>     - Replace brick strictly requires a server with enough free space
>     to hold the data of the old brick, whereas remove-brick will
>     evenly spread out the data of the bring being removed amongst the
>     remaining servers.
>
>     - Replace-brick code is complex and messy (the real reason :p).
>
>
> Wanted to see this reason as 1st point, but its ok as long as we 
> mention about this. I too agree that its _hard_ to maintain that piece 
> of code.
>
>     - No clear reason why replace-brick's data migration is better in
>     any way to remove-brick's data migration.
>
>
> One reason I heard when I sent the mail on gluster-devel earlier 
> (http://lists.nongnu.org/archive/html/gluster-devel/2012-10/msg00050.html 
> ) was that the remove-brick way was bit slower than that of 
> replace-brick. Technical reason being remove-brick does DHT's readdir, 
> where as replace-brick does the brick level readdir.
>
>     I plan to send out patches to remove all traces of replace-brick
>     data migration code by 3.5 branch time.
>
> Thanks for the initiative, let me know if you need help.
>
>     NOTE that replace-brick command itself will still exist, and you
>     can replace on server with another in case a server dies. It is
>     only the data migration functionality being phased out.
>
>
> Yes, we need to be careful about this. We would need 'replace-brick' 
> to phase out a dead brick. The other day, there was some discussion on 
> have 'gluster peer replace <old-peer> <new-peer>' which would re-write 
> all the vol files properly. But thats mostly for 3.6 time frame IMO.
>
>     Please do ask any questions / raise concerns at this stage :)
>
>
> What is the window before you start sending out patches ?? I see 
> http://review.gluster.org/6010 which I guess is not totally complete 
> without phasing out pump xlator :-)
>
> I personally am all in for this change, as it helps me to finish few 
> more enhancements I am working on like 'discover()' changes etc...
>
> Regards,
> Amar
>
>
> _______________________________________________
> Gluster-users mailing list
> Gluster-users at gluster.org
> http://supercolony.gluster.org/mailman/listinfo/gluster-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20130927/1ab708d7/attachment-0001.html>


More information about the Gluster-devel mailing list