How does LSI MegaRAID actually lay out RAID10 sets?

I'm trying to set up a RAID10 set on an LSI MegaRAID controller. It is unclear to me how the RAID controller will actually lay out the RAID set on the physical drives.

Part of the problem is that MegaRAID seems to use terms very inconsistently; the same idea often has multiple terms, and it seems as if sometimes they use the same term to refer to multiple ideas. I'm going to try to use the terms that the MegaCli command seems to use most frequently.

MegaRAID requires that there be two to eight arrays within a RAID10 set. Each array must contain physical drives in multiples of two. Each array in the RAID10 set must have the same number of physical drives.

Is each array a RAID10 set, and then the arrays are joined together? If so, does the fact that the arrays have to be the same size imply that the arrays are being striped? If so, given that each array is striped, and then there's an additional layer of striping on top of that, should I be concerned about that redundancy in regards to performance? (Or would it be a good thing?)

If each array is a RAID10 set, though, why does MegaRAID require that you have at least two of them?

If each array is not a RAID10 set, why does it require that arrays have physical drives in multiples of two?

In the documentation, it refers to arrays as spans, which it elsewhere defines like this:

Disk spanning allows multiple drives to function like one big drive. Spanning overcomes lack of disk space and simplifies storage management by combining existing resources or adding relatively inexpensive resources. For example, four 20 GB drives can be combined to appear to the operating system as a single 80 GB drive. Spanning alone does not provide reliability or performance enhancements. Spanned virtual drives must have the same stripe size and must be contiguous.

Which, to me, implies concatenation, or, at best, striping. Let's be generous and call it RAID0.

So if I have to define two arrays, and arrays are spans, and spans are RAID0, then I'm defining two RAID0 sets. And if I have to define two of them, it'd make sense that it's mirroring those. But that would be a RAID1 of two RAID0s, or RAID0+1, which is bad.

I'd expect, then, that if I defined three arrays, that would be creating a three-way mirror of RAID0 sets, but if I actually do that, the logical drive still has half the capacity of all the drives in total, not a third. So that conclusion doesn't make sense, either.

The problem is that I have 18 drives I want in a RAID10 set. In every other RAID system I've used, I'd just create 9 two-drive mirrors and then stripe them, but I can't do that with MegaRAID. Because there have to be between two and eight arrays, and each array must have an even number of drives, the only config I can come up with that works is three arrays of six drives each, but I just feel strange doing that without having a better notion of how those disks are actually going to be laid out.

Am I overthinking this? Should I just let MegaRAID do its thing and just hope that the drives are laid out optimally?


Solution 1:

LSI claim that their approach to RAID 10 differs from the standard definition because they follow the SNIA specification.

With MegaRAID RAID 1 can consist of from two drives (the more traditional definition) to up to sixteen drives. MegaRAID RAID 1 must be an even number of drives. With MegaRAID 1, if more than two drives are in the Virtual Drive (VD), then the VD consists of striped mirrored pairs. In other words, what traditionally would be considered RAID 10 (striped mirror pairs) is reported by MegaRAID as RAID 1.

With MegaRAID RAID 10, instead of the traditional method of having striped mirrored pairs, MegaRAID uses SNIA PRL=11, RLQ=0 For example, while a traditional eight drive RAID 10 would consist of eight mirrored pairs striped together, MegaRAID 'RAID 10' is actually four drives in a traditional RAID 10 span (two mirrored pairs striped) in a span striped with another four drives of striped mirrored pairs. Up to eight of these spans are supported.

Which means that if you want RAID10, choose what LSI labels RAID1. What LSI labels as RAID10 is what might be better referred to as RAID100 or RAID 1+0+0.