<div dir="ltr">Hello all,<br><div>DHT&#39;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.</div>
<div><br></div><div>This in a way is a feature overlap with replace-brick&#39;s data migration functionality. Replace-brick&#39;s data migration is currently also used for planned decommissioning of a brick.</div><div><br>
</div><div>Reasons to remove replace-brick (or why remove-brick is better):</div><div><br></div><div>- There are two methods of moving data. It is confusing for the users and hard for developers to maintain.</div><div><br>
</div><div>- 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)</div>
<div><br></div><div>- In a non-replicated config if a server is getting replaced by a new one, add-brick &lt;new&gt; + remove-brick &lt;old&gt; &quot;start&quot; achieves the same goal as replace-brick &lt;old&gt; &lt;new&gt; &quot;start&quot;.</div>
<div><br></div><div>- In a non-replicated config, &lt;replace-brick&gt; is NOT glitch free (applications witness ENOTCONN if they are accessing data) whereas add-brick &lt;new&gt; + remove-brick &lt;old&gt; is completely transparent.</div>
<div><br></div><div><div>- 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.</div>
</div><div><br></div><div><div>- Replace-brick code is complex and messy (the real reason :p).</div></div><div><br></div><div>- No clear reason why replace-brick&#39;s data migration is better in any way to remove-brick&#39;s data migration.</div>
<div><br></div><div>I plan to send out patches to remove all traces of replace-brick data migration code by 3.5 branch time.</div><div><br></div><div>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.</div>
<div><br></div><div>Please do ask any questions / raise concerns at this stage :)</div><div><br></div><div>Avati</div><div><br></div></div>