[sheepdog] consistency problem when replicating to multi-replica

guping guping610 at qq.com
Mon Jan 5 02:12:27 CET 2015


Thanks Hitoshi,

I just began to evaluate sheepdog for our cloud deployment. I will try 
to reproduce the problem when I have enough time. If some clue, I will 
let you know.

A question, does the IO stack components higher than sheepdog, such as 
IO queue in VM, qemu block driver, etc, provide the necessary serialization?

在 15/1/5 上午8:52, Hitoshi Mitake 写道:
> At Sun, 04 Jan 2015 23:27:15 +0800,
> guping wrote:
>>
>> Sheepdog send write request to all replica simultaneously to do the
>> replication. Which I think could lead to divergent content in replicas.
>>
>> Imagine a scenario, there are two write requests A & B to update the
>> same offset in a 2-replicas object. If a qemu client send A and B to a
>> gateway concurrently, the gateway will send A and B to the same set of
>> replicas simultaneously. Which could not guarantee the same sequence to
>> apply A and B, you can apply A then B in a replica and apply B then A in
>> another replica, then you get two request return successfully but not
>> the same data in the replicas.
>>
>> Is this a consistency problem in sheepdog? How can we deal with it?
>
> Hi Gu,
>
> Currently, the above problem is prevented for a case of copy on write
> requests (first write to an object). Look at
> check_simultaneous_create() of sheepdog driver in qemu. Multiple COW
> requests for a single object is serialized for not losing written
> information illegally.
>
> But, the driver doesn't do the serialization for ordinal write
> request. As you say, there might be a possibility of divergent
> objects. Could you produce the problem with artificial workload?
>
> Thanks,
> Hitoshi
>
>>
>> --
>> Thanks,
>> Gu Ping
>> --
>> sheepdog mailing list
>> sheepdog at lists.wpkg.org
>> https://lists.wpkg.org/mailman/listinfo/sheepdog
>

-- 
Thanks,
Gu Ping





More information about the sheepdog mailing list