[sheepdog] read/write during recovery

Dietmar Maurer dietmar at proxmox.com
Wed Jul 25 17:13:23 CEST 2012


> > I like the idea but I think it makes the recovery more complex.
> >
> > For example:
> >
> >  1. There are two node, A and B.
> >  2. Node C joins Sheepdog, and journal data is written on node C until
> >     it finishes recovery.
> >  3. If node D joins Sheepdog before Node C finishes recovery, the node
> >     reads actual data from node A and B, and journal data from node C.
> >     At the same time, node C also needs to write journal data in local
> >     to handle write requests.
> >  4. If node E joins Sheepdog before node C and D finish recovery, node
> >     E needs to read journal data from node C and D.  Node E needs to
> >     know which journal is newer to apply journal in the correct order.
> >
> > The situation becomes more complex if we have more nodes.  Do you have
> > any ideas to handle node failure with journal data simply?
> 
> Well, I never considered such error scenarios. I thought we can simply reject
> reads during recovery, but that is not the case.
> 
> The journal does not contain 'all' object data (only the pieces written), so you
> can never do a successful read. You need to wait until data is recovered.

But wait. Maybe we can force the gateway node to write the whole object if needed?

- Dietmar




More information about the sheepdog mailing list