[Top] [All Lists]

Re: swidth in RAID

To: Stan Hoeppner <stan@xxxxxxxxxxxxxxxxx>
Subject: Re: swidth in RAID
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Mon, 1 Jul 2013 11:38:51 +1000
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <51D0A62E.2020309@xxxxxxxxxxxxxxxxx>
References: <557F888F-34EA-4669-B861-C0B684DAD13D@xxxxxxxxx> <51D0A62E.2020309@xxxxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Sun, Jun 30, 2013 at 04:42:06PM -0500, Stan Hoeppner wrote:
> On 6/30/2013 1:43 PM, aurfalien wrote:
> > I understand swidth should = #data disks.
> No.  "swidth" is a byte value specifying the number of 512 byte blocks
> in the data stripe.
> "sw" is #data disks.
> > And the docs say for RAID 6 of 8 disks, that means 6.
> > 
> > But parity is distributed and you actually have 8 disks/spindles working 
> > for you and a bit of parity on each.
> > 
> > So shouldn't swidth equal disks in raid when its concerning distributed 
> > parity raid?
> No.  Lets try visual aids.
> Set 8 coffee cups (disk drives) on a table.  Grab a bag of m&m's.
> Separate 24 blues (data) and 8 reds (parity).
> Drop a blue m&m in cups 1-6 and a red into 7-8.  You just wrote one RAID
> stripe.  Now drop a blue into cups 3-8 and a red in 1-2.  Your second
> write, this time rotating two cups (drives) to the right.  Now drop
> blues into 5-2 and reds into 3-4.  You've written your third stripe,
> rotating by two cups (disks) again.
> This is pretty much how RAID6 works.  Each time we wrote we dropped 8
> m&m's into 8 cups, 6 blue (data chunks) and 2 red (parity chunks).
> Every RAID stripe you write will be constructed of 6 blues and 2 reds.

Right, that's how they are constructed, but not all RAID distributes
parity across different disks in the array. Some are symmetric, some
are asymmetric, some rotate right, some rotate left, and some use
statistical algorithms to give an overall distribution without being
able to predict where a specific parity block might lie within a

And at the other end of the scale, isochronous RAID arrays tend to
have dedicated parity disks so that data read and write behaviour is
deterministic and therefore predictable from a high level....

So, assuming that a RAID5/6 device has a specific data layout (be it
distributed or fixed) at the filesystem level is just a bad idea. We
simply don't know. Even if we did, the only thing we can optimise is
the thing that is common between all RAID5/6 devices - writing full
stripe widths is the most optimal method of writing to them....


Dave Chinner

<Prev in Thread] Current Thread [Next in Thread>