Sign in to follow this  
brashquido

Yet more RAID help needed!?!

Recommended Posts

Hi All,

Had an interview test for a job I went for, and they had a question regarding RAID that I can't seem to get my workmates to agree on (I'm no RAID expert);

Which RAID configuration provides the best I/O performance, while still providing redundancy?

I answered RAID 0+1, two of my workmates think RAID 5, and one thinks a decent hardware controller with load balancing and RAID 1.

I'd really value some input, thanks.

Share this post


Link to post
Share on other sites

It's somewhat dependent on the implementation. I'd say there's no "right" answer without a better definition of the configuration.

RAID0+1 can be the fastest. But for RAID0+1 you need to write 2x the amount of data. That slows things down if the mirror set isn't split across two independent busses.

RAID 3 or 5 both require checksum calculations that can slow either reads or writes (depending on which one you use), though this can be helped significantly HW support built into the Controller (you're out of luck for software RAIDs, though). RAID 3 and 5 do not require 2x the amount of data be written, so there's a speed advantage for single-bus configurations.

Life is rarely as simple as "which is best". There are other factors...

RAID0+1 is the least efficient use of your HDDs, since total capacity 1/2N*HDDs. Also, you need to use drives in groups of 2, which can add additional expense depending on your capacity target. On the positive side, RAID0+1 can be more fault tolerant depending on which drives fail. As long as there's one drive from each stripe segment left, you could theoretically lose 50% of the drives in the array and not lose data.

Of course, Murphy's Law demands that if two are going to fail, they'll probably both be in the same stripe segment and you'll be "toast".

RAID3 or 5 can provide the same level of redundancy as RAID0+1 provided the RAID is always restored to fault tolerant status as soon as a failure occurs (easily achievable if you have a hot spare in the array). But, RAID3 & 5 make much better use of your HDDs. Total Capacity is (N-1)*HDDs.

What I can tell you for certain is that, no matter what the configuration, RAID-1 is NEVER the best performance, just the best redundancy. RAID-0 (or 0+1) and RAID 3 or 5 combine individual drive throughput as well as capacity (though not in the same way). In a RAID-0 configuration, for example, if a you use two drives that are each 36G and 50MB/Sec, you end up with an array that's 72G and 100MB/S. The same two drives used in a RAID-1 configuration provide only 36G total capacity and are arguably slowed slightly below 50MB/S by the additional burden of having to write all the data twice.

Share this post


Link to post
Share on other sites

Haven't heard back yet. One thing we all seem to agree on is that there is no 100% right answer, especially given the simplicity of the question. If I get to final interview stage, I think I'll be able to justify my RAID 0+1 answer, thanks for your help :D

Share this post


Link to post
Share on other sites
[...snip...]

Of course, Murphy's Law demands that if two are going to fail, they'll probably both be in the same stripe segment and you'll be "toast".

[...snip...]

I assume what you actually mean here is that if you lose both drives in one of the RAID 1 sets, you'll lose your data.

If you lost one or both drives in one of the RAID 0 stripes, you'd still be fine, since the other stripe would still be intact.

Share this post


Link to post
Share on other sites

I would say your raid 01 suggestion would be the fastest on a per I/O - with one addition. Multiplex your array controllers - you get all the full speed benefit of a raid 0 array and keep the brunt of the parity calc as well as the pending writes on your secondary queue (controller) alltogether.

cheers,

gerson

Share this post


Link to post
Share on other sites
I assume what you actually mean here is that if you lose both drives in one of the RAID 1 sets, you'll lose your data.

If you lost one or both drives in one of the RAID 0 stripes, you'd still be fine, since the other stripe would still be intact.

No. That's not what I meant. But we may be confusing terminology. Here are my definitions:

RAID-1 is a "Mirror Set". RAID-1 alone typically only supports 2 drives (though there's no reason why you couldn't use more to further increase fault tolerance, I'm not actually aware of any controllers that would allow it). The capacity of the RAID-1 array is equal to the capacity of just one of the drives. The contents of array are duplicated by the second drive in the array. The performance of the array can (depending on HW configuration) actually be lower than a single drive, since each block of data needs to be written two times, though usually this performance loss is negligable.

RAID-1 is fault tolerant. The reliability of the array is increased algebraically by the number of drives in the array. 2 drives is 2x more reliable than 1 drive, since you can lose one drive and continue to operate with the remaining drive.

RAID-0 is a "Stripe Set". RAID-0 supports as many drives as your bus and hardware can accomodate. The capacity of the array is equal to the sum of the drives in the array. The data is "spread" across the drives in equal chunks. The size of any one chunk is called a "Stripe" (which is why the drives that comprise the array are called "Stripe Sets"). The performance of the array improves algebraically as a function of the number of drives on the bus. 2 drives is twice as fast as 1 drive. However, the performance can be limited by the SCSI Bus bandwidth. 5 40MB/S drives on a U160 bus won't be any faster than 4 40MB/S drives on the same bus, since the bandwidth is fully consumed by 4 drives (4*40=160), the 5th drive adds capacity but can't add speed. You can fix this by splitting the stripe set across a multiple channel HBA, or across multiple HBAs within the same system (though system bus bandwidth can also become a limiting factor. PCI-X 133 theoretically caps out at around 500MB/S).

RAID-0 is actually anit-fault tolerant. The reliability of the array is reduced algebraically by the addition of more HDDs. 2 drives is 1/2 as reliable as one drive.

RAID-0 is great when performance is paramount, but it's the last thing you want to use when you care about keeping data around for a long time. This makes RAID-0 suitable for short-term data storage applications, typically those found in Digital Video or high-speed data collection applications (like Nuclear Colliders), where the content will be moved off-line or near-line after you're done working with it.

To mitigate the inherent reliability loss of RAID-0, while minimizing the performance losses required to achieve improved fault tolerance, RAID-0+1 (or 1+0 or sometimes it's called "10") can be employed to combine a stripe set into a mirror set. The realibility is enhanced because the data in the stripe set is duplicated on a second "mirrored" group of drives. At a minimum, that reliability is 2x the reliability of the RAID-0 alone. However, it can be greater. The reliability is a function of which drives in the array fail.

Lets say you have a 4 drive stripe set, and each stripe is 64K in size (the data is split across the drives in 64K chunks). The data from a 256K file would be distributed evenly across all 4 drives, each drive getting 64K of the total 256K of data. Let's call each of the 4 64K segments of the file A, B, C, & D. Now let's mirror the set. The data is still distributed in the same way, but now it's also duplicated. We need to change the naming convention. Let's call the original 4 file segments A1, B1, C1, D1, and the duplicate, mirrored segments A2, B2, C2, & D2.

You can remove any one drive from the array and still be guaranteed to be able to recover your data, since for any individual drive in the array, there is another "spare" with the exact same data on it.

Things become interesting when you kill a second drive, however. If you lost the A1 drive first, you have no fault tolerance left for the "A" stripe. Lose "A2" and you're "toast". But, the B, C, & D segements are still fault tolerant. You can lose any one of these drives and not lose data. It does't matter which side of the mirror you lose one of the drives in, so long as you still have all 4 segments of the stripe. A1B1C1D1 is as good as A1B2C1D2 or any other combination you can think of that has at least 1 A, B, C, & D drive.

Thus, my original statement, which is that so long as you don't lose both drives from the same stripe segment, you're fine. Murphy's law being what it is, though, odds are that if you're going to lose two drives, they'll both be from the same stripe segment and you'll be "toast"!

Hope that clears it up!

Share this post


Link to post
Share on other sites

1) RAID Level 0+1 requires a minimum of 4 drives to implement

http://www.acnc.com/04_01_0p1.html

Characteristics/Advantages

RAID 0+1 is implemented as a mirrored array whose segments are RAID 0 arrays

RAID 0+1 has the same fault tolerance as RAID level 5

RAID 0+1 has the same overhead for fault-tolerance as mirroring alone

High I/O rates are achieved thanks to multiple stripe segments

Excellent solution for sites that need high performance but are not concerned with achieving maximum reliability

Disadvantages

RAID 0+1 is NOT to be confused with RAID 10. A single drive failure will cause the whole array to become, in essence, a RAID Level 0 array

Very expensive / High overhead

All drives must move in parallel to proper track lowering sustained performance

Very limited scalability at a very high inherent cost

2) RAID Level 5 requires a minimum of 3 drives to implement

http://www.acnc.com/04_01_05.html

Characteristics/Advantages

Highest Read data transaction rate

Medium Write data transaction rate

Low ratio of ECC (Parity) disks to data disks means high efficiency

Good aggregate transfer rate

Disadvantages

Disk failure has a medium impact on throughput

Most complex controller design

Difficult to rebuild in the event of a disk failure (as compared to RAID level 1)

Individual block data transfer rate same as single disk

=>The correct answer is Raid 5

Share this post


Link to post
Share on other sites

MaxtorSCSI,

I believe Trinary is correct, as we have been referring to RAID 0+1, as opposed to the RAID 1+0 configuration which you describe.

The difference between the two being that RAID 0+1 creates two striped arrays, which are then mirrored. Think of each stripe-set as a single virtual volume - if drives A, B, C, and D are part of stripe set 1, and W, X, Y, and Z are part of stripe set 2, a single drive failure in either stripe set, say drive B, would render that set unusable as the RAID 0 stripe set has no redundancy.

However, the overall RAID 0+1 array continues to function, as the entire other stripe set is still functional. However, if at this point, say drive Z from this other stripe set fails, you lose the entire array.

Contrast this with RAID 1+0, where you are in effect creating a "stripeset of mirrors". Here, say drive A & W create mirror set 1, B & X create 2, C & Y create 3, and D & Z create 4. Then, mirror sets 1 to 5 are striped. Essentially, you have 5 stripes consisting of two mirrored disks, so that if drive B fails, it only affects mirror set 2, as drive X would continue to supply the data from that stripe. If drive Z now failed, the RAID 1+0 array would still function, as again only mirror set 4 is affected.

Only two failures of the same mirror set would render the whole array useless - which is what you described when referring to RAID 0+1. Again, it could be a simple confusion in terminologies used :)

Anyhow, RAID 1+0 is obviously more fault-tolerant than RAID 0+1. An intelligent controller may provide equivalent fault-tolerance for RAID 0+1 by means that when drive B fails, it would continue striping to the other four drives in stripe set 1, and if drive X subsequently fails, it would realise that it could use drive D instead, as it would have the same data. This functionality would make RAID 0+1 just as fault-tolerant as RAID 1+0 in theory. However, most controllers aren't that smart, so RAID 1+0 remains a clearly superior configuration to RAID 0+1.

Yoz

Share this post


Link to post
Share on other sites

The more I think about it, the more I'm inclined to think RAID 10 (instead of the RAID 01 I put as my answer in the test) would be the best solution. The way the question is worded, the primary goal is that disk I/O performance is to be maximized with redundancy being the secondary goal.

Share this post


Link to post
Share on other sites
2) RAID Level 5 requires a minimum of 3 drives to implement

http://www.acnc.com/04_01_05.html

Difficult to rebuild in the event of a disk failure (as compared to RAID level 1)

That's a really weird comment to make. The controller performing a rebuild/verify is no different than it performing every write it performs anyway!

XORing data to create parity info and using that parity info to re-create lost data is the same calculation process. If you have three drives, for example: (D1 data XOR D2 data = D3 parity info). if D2 fails: (D1 data XOR D3 parity info = D2 data). It's the same calculating done in a different order.

WHO wrote that?! 8O

I believe they mean the calculations involved in RAID 5 functions are difficult (meaning more technical), but saying it has any negative performance on rebuild doesn't make any sense. Wouldn't it then be more reasonable to just say RAID 5 is more difficult to implement?! Once implemented, redundancy is no more difficult to perform in any RAID setup though! :roll:

Share this post


Link to post
Share on other sites

Nice =D

you probably stood out from all the RAID5 answers ....

(well, thats what i like to think anyway)

goodluck

-lec

Share this post


Link to post
Share on other sites

btw, we have a RAID box from AC&NC. the rigamarole we had to deal with regarding the unit is beyond comprehension and although i've had my fair share of bad tech support and customer service they are absolutely the worst. i wouldn't buy or recommend their products if they were the only source for storage devices.

big daddy fatsacks

Share this post


Link to post
Share on other sites

I've seen the discussion of how 0+1 and 1+0 are different many times now. I'm quite clear on the fact that 1+0 provides higher potential redundancy, and have been the one to make the explanation on many occasions.

What I don't understand is, what's the point of 0+1 if it offers the same performance at lower redundancy? Nobody's ever been able to offer any suggestions. What I have seen however, is a controller that uses the 0+1 terminology but the 1+0 methodology. It's my belief that 0+1 was the common terminology used a long time ago.

What I'm hypothesising is that no manufacturer actually implements the 0+1 methodology, but instead just uses the terminology. As the masses have become aware of the differences between the two methodologies companies have started listing both in specifications more for marketing purposes than anything else.

Unfortunately I don't have a controller that gives both options. I'm interested to see if somebody has the hardware and the inclination to test it.

MaxtorSCSI, FYI the DEC, I mean Compaq, I mean HP!, HSG series controllers (and probably all HSx series) support more than 2 disks per mirror. Up to 6 in fact! Although I've never seen it in use, I'm sure there are some sites that must have redundancy requirements to the point where they absolutely must not fail.

Share this post


Link to post
Share on other sites
2) RAID Level 5 requires a minimum of 3 drives to implement

http://www.acnc.com/04_01_05.html

Difficult to rebuild in the event of a disk failure (as compared to RAID level 1)

That's a really weird comment to make. The controller performing a rebuild/verify is no different than it performing every write it performs anyway!

XORing data to create parity info and using that parity info to re-create lost data is the same calculation process. If you have three drives, for example: (D1 data XOR D2 data = D3 parity info). if D2 fails: (D1 data XOR D3 parity info = D2 data). It's the same calculating done in a different order.

WHO wrote that?! 8O

I believe they mean the calculations involved in RAID 5 functions are difficult (meaning more technical), but saying it has any negative performance on rebuild doesn't make any sense. Wouldn't it then be more reasonable to just say RAID 5 is more difficult to implement?! Once implemented, redundancy is no more difficult to perform in any RAID setup though! :roll:

I guess what he means is that the performance of a RAID 5 array during rebuild is very much degraded compared to a RAID 1 array.

Share this post


Link to post
Share on other sites
1) RAID Level 0+1 requires a minimum of 4 drives to implement

I think people are confusing 0+1 with RAID 10. 0+1 is really a single striped array with a hidden, rotated mirror of the visible logical drive. It's present on late model Mylex controllers and as RAID 1E on IBM ServeRAIDs. It only requires three disks.

RAID 10 is your two pairs of mirrors that have an overarching RAID 0 stripe across them. This is completely different to 0+1 and 1E.

Share this post


Link to post
Share on other sites
1) RAID Level 0+1 requires a minimum of 4 drives to implement

I think people are confusing 0+1 with RAID 10. 0+1 is really a single striped array with a hidden, rotated mirror of the visible logical drive. It's present on late model Mylex controllers and as RAID 1E on IBM ServeRAIDs. It only requires three disks.

RAID 10 is your two pairs of mirrors that have an overarching RAID 0 stripe across them. This is completely different to 0+1 and 1E.

Can you explain how this works in more detail. Your explanation unfortunately has made little sense to me.

Might want to explain it to the DEC engineers who designed the HSG controllers as well. On these controllers RAID 0+1 is definitely implemented as a series of two or more mirrors striped together.

Share this post


Link to post
Share on other sites
Can you explain how this works in more detail.
Easy: right here[/quote=Chew]Might want to explain it to the DEC engineers who designed the HSG controllers as well.Being a smart ass won't get you far with me. See above for the information. See Mylex's site for their information.

Share this post


Link to post
Share on other sites

Actually, PCI-X 133 standard is only implemented in 64bit slots, which gives you throughput of around 1,056 mb/s. PCI-X is a 64bit slot, running at 133mhz. The only slots that give you around 528 mb/s are 64bit slots running at 66mhz. All PCI-X cards built to standard, are compatable with 64bit bus speeds of 133mhz, 100mhz, 66mhz, and 33mhz. They are also backwards compatable with 32bit slots at 33 or 66mhz. There are no 32bit PCI slots that run above 66mhz.

Share this post


Link to post
Share on other sites
Can you explain how this works in more detail.
Easy: right here[/quote=Chew]Might want to explain it to the DEC engineers who designed the HSG controllers as well.
Being a smart ass won't get you far with me. See above for the information. See Mylex's site for their information.

I apologise if came across somewhat nastily. That was never my intention, I really need to make more use of the Emoticons! :)

I see that what you said does make sense now, it was just a little simple for a not-so-simple concept (at least, not-so-simple when one has not heard of if before).

Are you familiar with Mylex and their implementation of RAID 0+1? Are you certain this is the same as RAID 1E? I ask out of interest, not out of doubt, as the only RAID 0+1 implementation I'm familiar with specifically is the DEC HSG, which as I mentioned before applies the striped mirrors method.

Share this post


Link to post
Share on other sites
Are you familiar with Mylex and their implementation of RAID 0+1?
I am. Works really well, too.
Are you certain this is the same as RAID 1E?
It is the same scheme but it is a little more adventurous than 1E. You can only have one logical drive on an IBM 1E array. The Mylex solution doesn't have that limitation and allows for multiple logical drives and multiple RAID levels to exist on the same array where a 0+1 logical resides. Odd that IBM didn't go the whole hog.

Share this post


Link to post
Share on other sites

This discussion led me to actually read the manual to find out how my onboard IDE RAID is implemented. It appears the Highpoint HPT370 calls it's implementation RAID 0+1, and uses the least desirable implementation, that being two sets of stripes in a mirror.

This means three different methods are actively used today on the market and called the same thing. No wonder I've seen so many arguments over what RAID 0+1 really is!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this