[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gluster-devel] Help developing new translator

From: michael . osullivan
Subject: [Gluster-devel] Help developing new translator
Date: Sat, 8 May 2010 17:45:32 +1200 (NZST)
User-agent: SquirrelMail/1.4.8-4.0.1.el4

Hi Gluster developers,

I'm would like to develop a new translator so I can experiment with
different methods of spreading data around a Gluster system, but I have no
Gluster experience and very little filesystem development experience. I
have tentatively called the new translator "spread" and attach my initial
thoughts for functionality below as a starting point for discussion. Any
help/advice/suggestions/feedback you could give me would be very welcome.
If I could better understand the basics behind translators I may be able
to cobble together what I need from stripe, distribute and replicate.

Kind regards, Mike O'Sullivan


1) File arrives, goes to "generate" function and gets key + spread version
2) File split into smaller pieces (cf. stripe) and "place" function uses
the key and spread version number to assign a replication sequence = set
of Gluster bricks to each piece. Note. Pieces may be assigned the same
replication sequence;
3) Each piece is replicated to all bricks in the replication sequence,
note that some bricks may appear in more than one sequence.


File size = 50MB
Atom size = 10MB

| 1 | 2 | 3 | 4 | 5 |

1 goes to replication sequence (Brick 1, Brick 2)
2 goes to replication sequence (Brick 1, Brick 3)
3 goes to replication sequence (Brick 1, Brick 2)
4 goes to replication sequence (Brick 2, Brick 3)
5 goes to replication sequence (Brick 1, Brick 3)

Brick 1

| 1 | 2 | 3 | - | 5 |

Brick 2

| 1 | - | 3 | 4 | - |

Brick 3

| - | 2 | - | 4 | 5 |


1) Request for file arrives and key and spread version number get read
from metadata (using extended attributes?);
2) The "locate" function uses the key and spread version to recover the
replication sequence used to write each piece of the file;
3) The piece is read from the first brick in the sequence if possible
(brick may have failed or be unreachable), otherwise it is read from the
next brick in the sequence, etc until either the piece is read or all
bricks in the replication sequence have failed.

LS, MKDIR, etc
I'm not sure what would be needed for these operations.

A file should be able to heal itself using the replicas of pieces, but I'm
not sure how this should be done.

NOTE. The functions generate, place and locate can be implemented to work
for any size piece and any number of replications. I would also like to
use an UPDATE to dynamically update the data used to drive these
functions, hence the need for spread version number.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]