greenguy

"best" RAID configuration?

Recommended Posts

Hi,

We just got a brand new Dell Server, with 6-600GB seagate drives in the 6 bays. Our network guy had asked Dell to set up RAID 5 with 5 drives, and 1 hot spare. but they actually set up 2 RAID 5 arrays, 3 drives each, no hot spare. it looks like this right now:

Array 1:

C drive: 40GB (system, etc), 1/2 already used up.

E drive: 1.7 TB

plus 2 much very smaller partitions for recovery i think and possibly something else.

Array 2:

D drive: 991GB

this will be a SQL Server Database server, with perhaps an equal amount of reading and writing, though we are not sure of that. perhaps i should run some tests on the current production server to see, if that is crucial?

So the network guy asked me to rebuild the RAID array (5+1), but to figure out the stripe size first. Well, that opened up an iceberg of considerations, if i may use that term. Here are the main variables i have found, and if anyone can help us to see a clear path forward to reasonably optimal configuration and performance on these 6 drives, I would truly appreciate it.

1. i have seen people saying RAID 5 is good for reading and not so much if you're doing a lot of writing, and in general it seems some people almost hate RAID5. :)

2. Everyone seems to agree that SQL Server log files should be on a physically different drive, for best performance. RAID5 with 5 drives wouldn't give us that. The current configuration i've described above, would. What about putting the log files on separate logical drive--does that help?

3. Regarding stripe size. i've seen an MS article suggesting 64K or 128K as ideal. i've also seen this principle: "When using striping, match stripe size to data block size used by application. Use 2K stripe with 5-drive array to match 8K data blocks in Oracle, 4K stripe with 3-drive array (don't forget parity requirement!)." [i'm not sure at the moment what the SQL Server data blocks are, but i found this: SQL Server works with two specific IO request size 8K and 64K in general)

So, my bottom line question is: what is the best configuration for the 6 drives?

apologies if this was a bit long,

Fred

Share this post


Link to post
Share on other sites

You'll get a lot of opinions on this. I'll give you mine. With 6 drives I'd try to at least get 2 separate arrays going. Simultaneous disk access will be faster between 2 arrays than 1 large array with 2 partitions. 3-drive RAID 5 is much slower than 4-drive RAID 5 in my experience. With only 6 drive bays available I don't think a hot spare is worthwhile.

I'd go with 1 of the following:

(3) RAID 1 arrays (mirrors)

or

(1) RAID 1 array + (1) 4-drive RAID 5 array.

I'd then purchase a spare hard drive to sit and use as a "cold spare" should a failure occur.

Good luck!

Share this post


Link to post
Share on other sites

I will give my advice also.

As kremlar says i wouldnt go for a hotspare either, you just have too few disks, and i would also go for the best practice of splitting up logs and database volume, on a database server.

as i see it you have two options:

1) Go for the high capacity option, and do a 4 disk raid 5 for Data, and a 2 disk raid 1 for OS/logs

2) go for the higher speed option and do a 4 disk raid10 for data, and a 2 disk raid 1 for OS/logs

And yeah.. just buy a disk to have in reserve when you dont have hotspares.

I believe SQL server writes 8K pages, im sure it can be googled fairly easy.

Share this post


Link to post
Share on other sites

First, thanks for your well considered responses. very helpful.

our server will sit in a colo far from us, and so the hot spare is naturally an appealing idea. we will also have a warmish secondary server, if it goes down, but there's nothing like a hot spare. if we can find a way to live with a cold spare, then it does seem like we'd be better off with one of your scenarios as opposed to RAID5 with 5 disks.

Also, Kremlar, do you have any idea why 3 drive RAID5 is much slower than 4 drive?

Thanks again!

Fred

Share this post


Link to post
Share on other sites

Without knowing how much space you really need. . .hard to say. But here is one possibility

3-disk RAID 5:

- one partition for system

- one partition for logs and backup

2-disk RAID 1:

- DB files

1 disk for hot spare.

The extra capacity on the RAID5 is good because logs can be larger than the DB, and you can use that space for creating DB backups, which you'd then immediately copy off to some other server.

Share this post


Link to post
Share on other sites

Folks,

Thanks again for your good suggestions. these were what i was looking for.

However, now it appears that the Hotspare is a requirement, given the remote nature of the server location.

I didn't mention before, but i believe we will need at least 2TB of space.

So, i believe this means the best solution will be RAID5 with 5 drives, plus the hotspare. Agreed? or...please set me straight!

thanks,

Fred

Share this post


Link to post
Share on other sites

6x 600 GB drives, including 1 hot spare. 5x 600 GB = 3 TB total storage, so you can spare one drive's worth of capacity, but not two. So none of the multiple physical array options will provide enough storage, even if they share a hot spare, as they'd each use at least one disk for mirror/parity. give you 1.8 TB at best.

Now, there's an option with HP array controllers that might help you if Dell do something similar (all my experience is with HP servers, but Dell are usually not too far behind on the technology front). It lets you have multiple logical arrays with different RAID levels in one physical array, I'll try to explain.

HP will let you configure a physical array with 5 drives and a hot spare, but not specify a RAID level for the physical array. You can then split it into logical arrays with specified RAID levels and arbitrary sizes. So you could specify a RAID 1 and a RAID 5 logical array, and it would use part of each drive for the RAID 1 and part of each drive for the RAID 5. Performance is distributed between the two arrays in proportion to the native performance of that RAID level.

So, if the RAID 5 logical array is idle, the RAID 1 logical array will get all the performance of 5 drives. When the RAID 1 logical array is idle, the RAID 5 logical array will get all the performance of 5 drives. When both logical drives are equally active, then performance will be roughly equivalent to a 2 drive RAID 1 and a 3 drive RAID 5, but in practice it should be better as long as both logical arrays aren't constantly saturated with reads and writes.

It's comparable to the way SANs virtualise storage, where you get RAID 1, 10 or 5 equivalent performance and redundancy for each LUN, but spread across maybe 60 disks that are shared with many other LUNs.

Advantages - you can specify logical arrays that aren't a multiple of the drive size, without wasting space. For example a 250 GB RAID 10 (which will use 500 GB of your total storage, 100 GB per disk) and a 2 TB RAID 5 array (which will use 2.5 TB of your total storage, 500 GB per disk).

When one array is utilised much more than the other, it will get more drives worth of performance.

For logical arrays with parity, you lose proportionally less space because it's spread across more drives.

Disadvantages - if you lose one drive, all logical arrays get degraded.

If both logical arrays are heavily used at the same time, then the perfomance advantage is reduced - it could even be a slight overhead v.s. two separate physical arrays. But that's usually worthwhile for the added flexibility and capacity.

Sorry if I've just given everyone a headache, it took me a while to get my own head round it while writing this! :blink:

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