Link to home
Start Free TrialLog in
Avatar of Ugi_Fletzet
Ugi_FletzetFlag for Israel

asked on

Best way to configure disks array in my server

Hi,

* Sorry about my English, I''m not a native English speaker...

I have Dell R610 Server, with 2 XEON E5620 CPU's, 16Gb RAM, and up to 6 HDDs.
The server will have VMWare ESX OS, with 2 or 3 virtual machines:
One VM (or two) will be web server (Windows 2008 R2 with IIS7.5), and the other VM will be SQL server (SQL Server 2008 R2).
I'm looking for the "best practice" for HDD configurations.
I have 3 options for HDD:
146Gb - 10K rpm (SAS)
146Gb - 15K rpm (SAS)
300Gb - 10 rpm  (SAS)
(unfortunatelly there is no 300Gb 15Krpm)

I thought of four 300Gb disks on RAID 10 which will give me about 600Gb, but someone told me RAID5 is better for my needs. and someone else told me that RAID1 is enugh because i'm using ESX anyway, so RAID10 will not be faster than RAID1 due to the ESX layer between the Windows system and the physical hardware. Maybe it's better to have smaller but faster disks (maybe RAID5 of six 146Gb - 15K rpm) instead of larger but slower disks (four 300Gb 10K rpm)....I'm confused, I'm not sure what is the best configuration for my needs....

Maybe Three RAID1 arrays is the best solution? so each VM will have each own Disk?
Maybe small RAID1 for the ESX and one big RAID5 for the VM?

I'll be glad to listen to any idea, but please - explain yourself. write a reason.

Avatar of AbuTech
AbuTech
Flag of Bahrain image

My recommendation is to go for 2 disks for the ESX server on a RAID 1 configuration and then a RAID 5 for the VMs.

If you use the same type of disks for both the RAID sets, then configure a roaming hotspare so both containers will be able to benefit from the hotspare in case of a failure.

Switch the write cache to ON in the PERC controller.
ASKER CERTIFIED SOLUTION
Avatar of Member_2_231077
Member_2_231077

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
The sql server would be the machine in the scenario that worries me..It is HDD intensive and would be the potential bottleneck. I would use these loose reccomendations as a starting point. Also Unless you need the OS running on your VMware server, I would just use the ESXi hypervisor and give your Virtual machines direct access to the hardware, and Andyalder is correct, you should symetrically populate your ram to get to 24GB

The small database server. This would be a database system having a small number of users and a low number of transactions per second. For a system of this type, putting the data files, transaction logs and tempdb database on a single RAID 5 array will be fine. With a load this low, there should be minimal to no performance loss because of having the files on the same array.

The medium database server. This would be a system that has a larger number of users and no more than 100 transactions per second. At this system size, you will begin to separate parts of the database. Start by separating the database files and log files onto different RAID arrays. The tempdb database can probably remain on the same array as the database files. But, if the tempdb database is heavily used for things like lots of temporary table usage, it should be moved to its own drive array.

The large database server. This system is for hundreds of users and hundreds or thousands of transactions per second. When designing systems of this size, break apart not only the database files, log files and tempdb database files, but also want database into smaller data files on multiple drives. This includes moving the indexes to separate files on RAID 1 or RAID 5 arrays, moving blob data (data stored in TEXT, NTEXT, IMAGE, VARCHAR(MAX) and NVARCHAR(MAX) data types) to a separate RAID 5 array. You can also place different types of tables on different drives by assigning them to different file groups.
146Gb - 15K rpm (SAS) with RAID 5 will give you enough speed and resiliance. 300gb drives may give you more space, but trust us 1 year down the line when the server gets to its real test drive pefornce will be a key issue. For space you can attach a NAS device life a Buffallo or so. they are cheap and will give you enough space extension.

Avatar of David
RAID level performance characteristics differ, depending on the type of RAID, number of  drives, and how the O/S accesses the data.  YOu have provided some information, but have not addressed the usage.   Take the VM out of the equation for now .. how many 64KB IOPs do you need for each file system; what is mix of random/sequential?  Are non-virtualized systems currently running these apps?  If so, what does perfmon report?

How can somebody possibly tell you what RAID level is "better"?  In what context?  RAID1 vs RAID10 in ESX?  It is not that simple.   First 2 x RAID1 vs 1 x RAID10 is what you are comparing.  ESX does 64KB I/O, and controllers vary when it comes to load balancing capabilities in RAID1 and RAID10.  

So before you can possibly get any advice, tell us about the IO requirements per system & the applications.  

I will offer one thing, however ... You have other options you did not mention.  First, I would go with at least one RAID1 using the fastest disks, and I would also  purchase a USB flash disk and boot ESXi to that.  Then all of the hard drives are allocated 100% to the virtual machines.  The fastest 146KB RAID1 disks can be used to boot all machines, as they will have the greatest amount of 4KB I/Os.  SQL server writes in chunks of 64KB, so you want to set the RAID parameters differently between the boot device and where the database goes.

No one has mentioned RAID 50.
It is option between raid 10 and raid 5.

It is faster than raid 5 and slower than raid 10. Two disks are used for parity and can survive two failed disks in separate parity groups.
I would choose between 146Gb - 15K rpm (SAS) and 300Gb - 10 rpm  (SAS). And it really depends if your primary goal is performance or capacity (or price). Anyway i would use all 6 disks.
RAID50 offers higher throughput at the expense of IOPs .. it is not necessarily "Faster".  Plus, if you are comparing RAID50 against RAID 5 or RAID10, then the correct thing to do is compare 1x RAID50 against 2 x RAID5s.   (Instead of 1 x RAID50 against 1 x RAID5 or 1 x RAID10)

Also characteristics of RAID50 within a VM are different then characteristics of RAID50 outside of a VM, and performance characteristics differ when traffic is read vs write vs random vs sequential.

in summary, RAID50 is not "faster" than any particular configuration w/o adding context.
Avatar of Member_2_231077
Member_2_231077

I think the reason nobody mentioned RAID 50 is that they've only got 6 disk bays.
So there is no "best practice"... ;)  Everything depends on user preferences (needs, money,...).
Maybe it is RAID50 better to compare to 1xRAID5 configured with 6 disks than 2x RAID5 with 3 disks.
6 disks (bays) are minimum, but enough to build RAID50 array.
Avatar of Ugi_Fletzet

ASKER

Thank you guys,

As for your questions: The system is more random than sequential. It's a very ordinary web server (that is, 99% are very small HTML,CSS,JS,JPEG... files, and NOT large/streaming files), and SQL is also more random than sequential, as the queries usualy returns a very small set of data.

I think I'll go for 2 HDD in RAID1 for the ESX system, and 4 HDD in RAID10 for the VMs.
RAID50 and RAID5 is not an option according to anyalder link (www.baarf.com) so I'll go for RAID10 with 300Gb 10K disks for that.

For the RAID1 (ESX) I thought to take the 300Gb as well, and use the extra space (Almost 299 Gb) as backup space for all VMs (Maybe with shared folder under Linux VM)

Am I right?
I'll be happy for any other idea

Thanks
Sounds reasonable, are you going to store the transaction logs with the VMs or on the VMware disks? It's not so important from a performance point of view unless there's a lot of write data but it's best practice for a recovery point of view to have data and logs on different disk sets.
I'll add my $.02 to the pile as well.

As I've noted in other threads, due to problems with RAID5 in the past the company I work for has stopped shipping any machines with RAID5 and replaced all of our configs with RAID10 for increased redundancy.

Also at some point since ESX and ESXi have built-in iSCSI functionality, you could look into getting another machine with more storage/spindles and load it with a Linux-based iSCSI target (we use SuSE Enterprise 11) then direct connect the machines with crossover cables on spare GB NIC ports.
RAID10 only has a 50% probability of providing increased redundancy, based on the specifics of what 2 drives failed.  lose the nth disk in both mirrors and you have 100% data loss.  If you want dual drive failure redundancy, you need RAID6 or RAIDZ2.

(But RAID10 has performance advantages over RAID6 and is supported on more controllers).  However, RAID10 SOMETIMES provides increased redundancy.
dlethe, you are exactly correct.  RAID6 will support ANY 2 drives failing, while RAID10 will support (in best case) n/2 drives failing as long as no two drives are from the same mirror set.

For what it's worth, RAID6 also has greatly increased parity calculation processing needs whereas RAID10 will just keep on truckin' if you throw a disk or 2.  Not a good idea to run any length of time at all with any failed disks anyway, but can be a life saver in high-availability high throughput environments.