[Gluster-devel] Automated split-brain resolution

Ravishankar N ravishankar at redhat.com
Mon Aug 11 06:42:08 UTC 2014


On 08/09/2014 01:23 AM, Joe Julian wrote:
> Thinking about it more, I'd still rather have this functionality 
> exposed at the client through xattrs. For 5 years I've thought about 
> this, and the more I encounter split-brain, the more I think this is 
> the needed approach.
>

Joe, why do you feel resolving split-brains should be exposed to 
clients? Whatever approach is taken (either a gluster  CLI command or an 
overloaded get/satfattr call, is it not better to have this done at the 
server side?)


> "getfattr -n trusted.glusterfs.stat" returns 
> xml/json/some_madeup_datastructure with the results of stat from each 
> brick
> "getfattr -n trusted.glusterfs.afr" returns the afr matrix
> "setfattr -n trusted.glusterfs.sb-pick -v "server2:/srv/brick1"
>
> That gives us the tools we need to choose what to do with any given 
> split-brain. For large swaths of automated repair, we can use find.
>
> I suppose that last bit could still be implemented through that cli 
> command.
>
>
> On 08/07/2014 01:35 AM, Ravishankar N wrote:
>>
>> Manual resolution of split-brains [1] has been a tedious task 
>> involving understanding and modifying AFR's changelog extended 
>> attributes. To simplify and to an extent automate this task, we are 
>> proposing a new CLI command with which the user can specify  what the 
>> source brick/file is, and automatically heal the files in the 
>> appropriate direction.
>>
>> Command: gluster volume resolve-split-brain <VOLNAME> {<bigger_file>  
>> |  source-brick <brick_name> [<file>] }
>>
>> Breaking up the command into its possible options, we have:
>>
>> a) gluster volume resolve-split-brain <VOLNAME> <bigger_file>
>> When this command is executed, AFR will consider the brick having the 
>> highest file size as the source and heal it to all other bricks 
>> (including all other sources and sinks) in that replica subvolume. If 
>> the file size is same in all the bricks, it does *not* heal the file.
>>
>> b) gluster volume resolve-split-brain <VOLNAME > source-brick 
>> <brick_name > [<file>]
>>
>> When this command is executed, if <file> is specified, AFR heals the 
>> file from the source-brick <brick_name> to all other bricks of that 
>> replica subvolume. For resolving multiple files, the command must be 
>> run iteratively, once per file.
>> If <file> is not specified, AFR heals all the files that have an 
>> entry in .glusterfs/indices/xattrop *and* are in split-brain. As 
>> before, heals happen from source-brick <brick_name> to all other bricks.
>>
>> Future work could also include extending the command to add other 
>> policies like choosing the file having the latest mtime as the 
>> source, integration with trash xlator wherein the files deleted from 
>> the sink are moved to the trash dir etc.
>>
>> Please give feedback on the above.
>>
>> Regards,
>> Ravi
>>
>> [1] https://github.com/gluster/glusterfs/blob/master/doc/split-brain.md
>>
>>
>> _______________________________________________
>> Gluster-devel mailing list
>> Gluster-devel at gluster.org
>> http://supercolony.gluster.org/mailman/listinfo/gluster-devel
>
>
>
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at gluster.org
> http://supercolony.gluster.org/mailman/listinfo/gluster-devel

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


More information about the Gluster-devel mailing list