Before looking at the specific multiple RAID levels, I have to explain a few things
about the way multiple RAID levels are constructed. A multiple RAID level is generally
created by taking a number of disks and dividing them into sets. Within each set a single
RAID level is applied to form a number of arrays. Then, the second RAID level is applied
to the arrays to create a higher-level array. This is why these are sometimes called nested
arrays.
Since there are two levels, there are two ways they can be combined. The choice of
which level is applied first and which second has an impact on some important array
characteristics. Let's take as an example multiple RAID employing RAID 0 and RAID 1 to
create an array of ten disks. Much as we can define 10 to be 2*5 or 5*2, we can create our
multiple RAID array two ways:
- RAID 0, then RAID 1: Divide the ten disks into two sets of five. Turn
each set into a RAID 0 array containing five disks, then mirror the two arrays. (Sometimes
called a "mirror of stripes".)
- RAID 1, then RAID 0: Divide the ten disks into five sets of two. Turn
each set into a RAID 1 array, then stripe across the five mirrored sets. (A "stripe
of mirrors").
Naming conventions for multiple RAID levels are just horrible. The standard
that most of the industry seems to use is that if RAID level X is applied first
and then RAID level Y is applied over top of it, that is RAID "X+Y", also
sometimes seen as "RAID XY" or "RAID X/Y". This would mean that
alternative number 1 above would be called "RAID 0+1" or "RAID 1+0",
and that's in fact the terminology that most companies use. Unfortunately, other companies
reverse the terms! They might call the RAID 0 and then RAID 1 technique "RAID
1/0" or "RAID 10" (perhaps out of fear that people would think "RAID
01" and "RAID 1" were the same thing). Some designers use the terms
"RAID 01" and "RAID 10" interchangeably. The result of all this
confusion is that you must investigate to determine what exactly a company is
implementing when you look at multiple RAID. Don't trust the label.
Of course, I haven't even explained why you should care about the distinctions, so I
suppose I should do that.
After all, if you have ten marbles, why would you care if
they are arranged in five columns and two rows, or two columns and five rows? Same here:
aren't ten disks in an array ten disks in an array? Clearly I am setting you up, so the
answer is obviously "no". 
In many respects, there is no difference between them: there is no impact on
drive requirements, capacity, storage efficiency, and importantly, not much impact on
performance. The big difference comes into play when we look at fault tolerance.
Most controllers implement multiple level RAID by forming a "super array"
comprised of "sub-arrays" underneath it. In many cases the arrays that comprise
the "super array"--often called sets--are considered to be logical
"single units", which means that the controller only considers one of these
"single units" to either be "up" or "down" as a whole. It
will make use of redundancy features within a sub-array, but not between
sub-arrays, even if the higher-level array means that drives in different sub-arrays will
have the same data.
That makes this sound much more complicated than it really is; it's much easier to
explain with an example. Let's look at 10 drives and RAID 0+1 vs. RAID 1+0 again:
- RAID 0+1: We stripe together drives 1, 2, 3, 4 and 5 into RAID 0 stripe
set "A", and drives 6, 7, 8, 9 and 10 into RAID 0 stripe set "B". We
then mirror A and B using RAID 1. If one drive fails, say drive #2, then the entire stripe
set "A" is lost, because RAID 0 has no redundancy; the RAID 0+1 array continues
to chug along because the entire stripe set "B" is still functioning. However,
at this point you are reduced to running what is in essence a straight RAID 0 array until
drive #2 can be fixed. If in the meantime drive #9 goes down, you lose the entire array.
- RAID 1+0: We mirror drives 1 and 2 to form RAID 1 mirror set
"A"; 3 and 4 become "B"; 5 and 6 become "C"; 7 and 8 become
"D"; and 9 and 10 become "E". We then do a RAID 0 stripe across sets A
through E. If drive #2 fails now, only mirror set "A" is affected; it still has
drive #1 so it is fine, and the RAID 1+0 array continues functioning. If while drive #2 is
being replaced drive #9 fails, the array is fine, because drive #9 is in a different
mirror pair from #2. Only two failures in the same mirror set will cause the array to
fail, so in theory, five drives can fail--as long as they are all in different sets--and
the array would still be fine.
Clearly, RAID 1+0 is more robust than RAID 0+1. Now, if the controller running RAID 0+1
were smart, when drive #2 failed it would continue striping to the other four drives in
stripe set "A", and if drive #9 later failed it would "realize" that
it could use drive #4 in its stead, since it should have the same data. This functionality
would theoretically make RAID 0+1 just as fault-tolerant as RAID 1+0. Unfortunately, most
controllers aren't that smart. It pays to ask specific questions about how a
multiple RAID array implementation handles multiple drive failures, but in general, a
controller won't swap drives between component sub-arrays unless the manufacturer of the
controller specifically says it will.
The same impact on fault tolerance applies to rebuilding. Consider again the example
above. In RAID 0+1, if drive #2 fails, the data on five hard disks will need to be
rebuilt, because the whole stripe set "A" will be wiped out. In RAID 1+0, only
drive #2 has to be rebuilt. Again here, the advantage is to RAID 1+0.
Tip: For a diagram
showing graphically the difference between RAID 0+1 and RAID 1+0, see the page discussing those levels.
Some controllers offer the choice of "what order" you use to set up a
multiple RAID array; they will let you do either RAID X+Y or RAID Y+X, as you choose.
Others will force you to use only one or the other configuration. Again, ask for details
when considering a solution, and be specific with your questions so you can figure out
what exactly the controller you are investigating does.
Next: RAID Levels 0+1 (01) and 1+0 (10)