Optimal Raid Configuration

Posted on 2014-02-06
Medium Priority
Last Modified: 2016-12-08
I have an HP DL380 that we are configuring for SQL server. I'm creating multiple logical drives for data, logs, tempdb etc... My question is around the best way to create the logical drives on the raid controller. Is it better for performance to create one Array that uses all 10 physical disks and then create the logical drives in that array or create multiple arrays with a logical drive in each. Many things that I've read say that more spindles is better than few?

What is the best practice for raid configuration. The i/o is predominately read. I was going to use raid 1+0 but if that's not best I'll configure another level...

Comments please?
Question by:BenthamLtd
LVL 60

Expert Comment

by:Kevin Cross
ID: 39838747

Separate arrays versus logical drives on one big array usually works better, especially if you separate the operating system and SQL (i.e., at a minimum you want two arrays, but using more to allow you to leverage best RAID for each drive's purpose).

Here is a good resource:

In the article, it nicely lays out the RAID that works well with each portion of SQL Server, user databases, tempdb, log files, et cetera.  Using these recommendations, you could have one array that contains logical drive(s) with operating system, SQL base code, and initial page file.  You then can create other arrays to separate databases, log files, additional page files, and so on.

I hope that helps!

Best regards,

LVL 47

Expert Comment

ID: 39839147
Best is ALWAYS going to be one logical drive per RAID group, using the best make/model disk for that job.

Example, if you want RAID1 for scratch table space & indexing, you do that by using a pair of 15K RPM SAS drives and creating a 2-disk RAID1.  You do NOT create a large RAID6 array with SATA disks then carve out a partition and use that for this task.
LVL 70

Accepted Solution

Scott Pletcher earned 1500 total points
ID: 39839343
In general, yes, more spindles = better performance.  But you've got to balance other considerations as well.

You'll want at least two separate RAID sets for recovery reasons.  A given's db log file should be on a separate RAID from its data file(s).

Typically RAID1/RAID10 works better for logs, RAID5/6 for data.  But with low write activity, you could use RAID5 for both logs and data.  Then you could better balance write activity between the RAID sets.

If you'll have a lot of tempdb activity, a separate RAID1 for it, or RAID0 if it's used exclusively for tempdb, can be very beneficial to SQL performance.

I don't think the OS really needs a separate RAID set, although I've seen this recommended many times.  To me, the OS and (data or logs) can co-exist/share disks just fine when drives are limited.
LVL 56

Expert Comment

ID: 39840001
Strange thing is that people would have you create a RAID array for each use because it's using the server's internal disks whereas if it was on a SAN you would almost be guaranteed that most if not all of the logical disks you would be given would be on the same set of spindles. Some 500 disk SANs I've seen only have two disk groups on them (and it would be just one except for the log/data separation Scott mentions which is for recovery rather than performance measures).

I like to see 1 big array and multiple logical disks on it for performance since if the OS disks are idle the data gets the benefit of the extra spindles. Bear in mind though that software recovery tools such as RAID reconstructor can't easily cope with one disk array with mixed RAID levels and stripe element sizes on it. Alternatively though I like to see the OS on a separate array for data recovery purposes which would then be ideal for the logs as Scott also said).

Edit, wanted to add that it's even better for data recovery if the OS disks (with transaction logs perhaps) are on a separate controller which is exactly what you'll get if you're adding a 2nd disk cage to the DL380p gen8 as there's 8 disks per cage unless you get the CTO 25 disk model.
LVL 60

Expert Comment

by:Kevin Cross
ID: 39840019
As a former sys admin of 1000s of servers, it is the reason I put OS on separate array.  I also agree, though, that we did not worry about this when disks were on SAN.  With lower number of disks, I have run SQL server with one array just fine.  Therefore, you should be fine.

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Windocks is an independent port of Docker's open source to Windows.   This article introduces the use of SQL Server in containers, with integrated support of SQL Server database cloning.
Windows Server 2003 introduced persistent Volume Shadow Copies and made 2003 a must-do upgrade.  Since then, it's been a must-implement feature for all servers doing any kind of file sharing.
Via a live example, show how to setup several different housekeeping processes for a SQL Server.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.
Suggested Courses

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question