[Gluster-devel] Client side AFR race conditions?

Derek Price derek at ximbiot.com
Wed May 7 16:40:06 UTC 2008


gordan at bobich.net wrote:
> On Wed, 7 May 2008, Anand Avati wrote:
> 
>>>
>>> The only way I see to ensure data integrity is to have some arbiter vet
>>>> all writes.  You can try to make that arbiter redundant, but good luck
>>>> making it actually distributed.
>>>>
>>>
>>> I've seen the distributed arbiter done in proprietary software, so it
>>> must be possible.  The design is pretty clear to me, but I have no idea
>>> where to start integrating the idea into glusterfs, though gluster's the
>>> closest thing to what I need that I've seen in open source.
>>
>> Can you give some details/links? We would be interested to learn about 
>> it.
> 
> I suspect what was referred to was a system where the locks are notified 
> to every host, not an actually load sharing system. DLM (RHCS/GFS) does 
> it by multicasting, presumably with acknowledgements being returned from 
> each connected node. I've not looked at the DLM protocol in great 
> detail, so I don't know what the details are.

Actually, I was thinking of WANdisco's Multi-site CVS/SVN/MySQL 
mirroring software.  It's not generalized to the point of being a disk 
load sharing system, exactly, but I think the concept and the problems 
are the same.  They use a quorum locking model and basically journal the 
transaction with whichever server they are wrapping for later replay on 
the other servers.

There used to be a white-paper on WANdisco's protocol online (I haven't 
looked recently).  I didn't know much about DLM (and, after reading what 
documentation I could find online just now, I don't feel like I know 
much more), but it sounds like DLM uses a similar quorum model for locking.

As for the versioning (and perhaps this is relevant to the discussion 
taking place in another thread), I don't see how this can be done 
without meta-data journaling, so why not make things even simpler and 
share a unique version number between all entities changed in a 
transaction?  So, for any server to acquire an implicit write lock, the 
quorum must agree to increment a global transaction ID (which could also 
be attached in the FS as a directory and/or file's version number). 
Then, as long as any given system knew that its journal/replay was 
up-to-date with the latest transaction ID according to the quorum, then 
it could trust a file's content without consulting a file-specific 
revision number.

If a server was not completely up-to-date, then it would at least have 
to synchronize the meta-data journal and consult it to find if a 
requested file had any pending writes and decide whether it needed to 
synchronize the file before serving it.

Regards,

Derek
-- 
Derek R. Price
Solutions Architect
Ximbiot, LLC <http://ximbiot.com>
Get CVS and Subversion Support from Ximbiot!

v: +1 248.835.1260
f: +1 248.246.1176





More information about the Gluster-devel mailing list