[Linux-cluster] [ddraid] extensibility

Daniel Phillips phillips at redhat.com
Thu May 12 05:36:07 UTC 2005

Hi Jakob,

On Wednesday 11 May 2005 10:02, Jakob Praher wrote:
> hi philipp and all,
> I am very interested in ddraid for having sios systems over the
> network. A few questions though:
> I've looked shortly at your implementation (ddraid-0.5.0), but have a
> few questions, which I thought to ask you:
> * how will you track extensibilty:
> afaik you assign a fixed number of logical sectors to the device
> mapper device. but lets take a trivial example:
> you have 3 disks (2^k+1), each in a sperate computer.
> then you want to plug a 4th and 5th disk (2^k+1) disk (again separate
> computer) in the ddraid - how should that look like regarding the dm
> setup?

You want to increase the "order" of the ddraid array?  This is not 
supported yet.  The way to do it would be to create a new, higher order 
ddraid array with an initial size of zero, then pvmove from the old 
array to the new one, expanding the new array and recovering space from 
the beginning of the old array as the move proceeds.  This will be 
tricky to implement!  But it is possible, and in time we can expect to 
see more sophisticated functionality like that arrive.

Adding an extra spindle to each ddraid member will be much easier.  In 
that case, you would change each ddraid member to a linear combination 
of two devices, by changing your dmsetup commands.

> what problems could arise given the striping information on the
> blocks. do you simply extend a stripe from 2 to 4 data blocks?

This is quite a tricky problem because you want to start using the new 
geometry while some of the old geometry is still in use.  There is no 
obstacle to implementing this, except a lot of work.

> is it 
> possible to raise the number of logical sectors with device mapper
> (sorry for my ignorance - I haven't looked the details of the dmsetup
> man page). do you have to rearrange block sizes or stripe
> information?

If you raise the number of logical sectors in the device mapper command, 
then you must actually have the new capacity available.  In other 
words, you would need to increase the partition size of each member of 
the ddraid array as well.  CLVM is supposed to be able to do such 
things automatically, but ddraid has not been integrated with CLVM yet.

> * have you investigated raid-x - would that be possible to implement
> via device mapper?
> I've looked closer on a the papers by hwang et al regarding Raid-x,

I do not have that paper.  Is it freely available online?  I see from 
the abstract that "the RAID-x architecture is based on an orthogonal 
striping and mirroring (OSM) scheme".  The answer is: you probably can 
implement this in device mapper.  But why?

> which also provides a single io space for servlerless clusters.

DDRaid provides that, in an efficient form.

> The design is basically a mixture of mirroring and striping, making it
> possible for one node to fail completly.

DDRaid does this without using either mirroring or striping.  It sounds 
like Raid-x is fairly wasteful of disk space and IO bandwidth, compared 
to ddraid.

> On stripe is made of (n-1) blocks and you have (n-1) mirror blocks.
> They have implemented as part of their trojan cluster project, wich I
> think isn't alive any more.

What is "n" in this description?



More information about the Linux-cluster mailing list