SQL in a VM performance question

Posted on 2016-10-10
Last Modified: 2016-10-13
I am currently running a physical server for my SQL 2012 R2 box. I'm planning to visualize the box to my HP SAN.
I bought a new enclosure just for this SQL VM.  I've partitioned the enclosure with 3 different partitions, one for the OS, one for the data and one for the Logs.  The OS and Logs volume are raid 1. The Data volume is raid 6.  
I ran a performance test using the Crystal Disk Mark software:

I ran the tests on my physical server and also on the raid 6 and raid 1 volumes as well.
I'm trying to figure out if there's a major difference between the raid 6 and raid 1, as I would like to keep my data with raid 6, so I don't have to use raid 10, or I will lose to much storage.

Looks to me like the physical server is faster than the VM, but there isn't much difference between raid 6 and raid 1.  
Is this correct?

Will it be adequate to use raid 6 for my data volume, instead of using raid 10?, as raid 1 didn't make a big difference?

Question by:afacts
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 3
  • +5
LVL 12

Assisted Solution

by:Máté Farkas
Máté Farkas earned 41 total points
ID: 41837967
Messurements on VM is not relevant.
Just take into account the values on real machine.
Make more messurements on RAID 6 and RAID 1 with Reading and Wrinting performance.
RAID 6 has faster reading, slower writing but it uses the disk space most efficiently.
RAID 1 is fast for reading and wringing but its too redundant and uses more disk space.
LVL 21

Expert Comment

ID: 41837969
The columns of intrest are 4K and 4K Q32T1.  These corresponds to the random IO that is typical for SQL server.
Sequential IO is not important, because SQL server rarely does sequential IO (except perhaps for backups/database verification).

I would say that the VM in combination with your SAN can handle about 2x to 4x the IO the physical box can. This is not unusual as a SAN often has more spindles and cache than a physical server with internal storage.

If your SQL server has a high load, you may see a speed boost when moving to this setup.  RAID6 has an impact on 4K write speed compared to RAID 1, but again this will not impact you as this is still faster than your physical box.
LVL 42

Assisted Solution

kevinhsieh earned 41 total points
ID: 41837977
What kind of HP SAN? Different types of SAN can have radically different performance characteristics for random reads, random writes, and latency.

Having more RAM available to SQL can mitigate performance challenges with your storage.
Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

LVL 33

Expert Comment

ID: 41838104
Use Diskspd to benchmark your different IO scenarios.
LVL 49

Assisted Solution

by:Vitor Montalvão
Vitor Montalvão earned 41 total points
ID: 41838108
Did you align the disks on blocks of 64K? Or multiple of 64 (128, 256,...)?
This should be a good improvement for SQL Server since each data extent page is 64K size, so if you align the disk block with SQL Server extent page size then you'll have a better performance.
LVL 42

Expert Comment

by:Eugene Z
ID: 41838154
it depends - -in your case RAID 6 could be good.. Are you using SAN, EMC storage ?

Disk Partition Alignment Best Practices for SQL Server


Architecting Microsoft SQL Server
on VMware vSphere
LVL 39

Expert Comment

by:Aaron Tomosky
ID: 41838499
It looks like the sequential san speeds are limited by gigabit Ethernet (120MB/s), is that how it's connected? Like was said in the first comment, you only care about the 4K numbers not the sequential anyway so you will be fine.
LVL 33

Assisted Solution

ste5an earned 41 total points
ID: 41838615
While the 4K numbers are important, the do not tell you the entire truth. Cause SQL Server data is organized in 8K pages in 64K extents.

Thus alignment matters as Vitor already wrote. But this is also the reason to use the appropriate tool to create the benchmark.
LVL 21

Assisted Solution

robocat earned 41 total points
ID: 41838773
A 8K blocksize random IO benchmark test could give more accurate data.

However, the test results already posted give a good enough idea to answer the original question:

Yes, RAID6 on this SAN box will be good enough for your purpose. RAID6 write speeds are a bit slower for random IO than RAID1, but still a lot faster than what you have now.

So if performance is OK now on the physical server, RAID6 for your data volume will certainly be sufficient, if not faster.

Author Comment

ID: 41839248
Thanks everyone for the input.
I have an HP SAN 2332i
The enclosure I'm using has 450Gb SAS drives, 15K rpm

Some of you mentioned that the SAN will be faster than the physical box, but I wonder how that's possible when the numbers show opposite?  I guess I'm not reading the numbers correctly?

The raid 6 volume has 8 drives in the array.
I'm also running HP servers, proliant, DL360 G7 and G8 servers.  I'm planning on only running my SQL sever on one physical servery, so I can give it like 100GB or so, as I have 128Gb on the physical server.

I'm only going to run my SQL server on this enclosure.
I created 1 volume for the OS, 2 drives, raid 1
I created 1 volume for the data, 8 drives, raid 6
I created 1 volume for logs, 2 drives, raid 1

I am using ISCSI to connect my SAN and servers.  I am using dual NICs, so I think I'm getting up to 2Gb/s.

I tried using dskpsd, but it gave me errors, so I couldn't get it to run.

I'm not sure how to align the disks with block sizes of 64K.
LVL 39

Assisted Solution

by:Aaron Tomosky
Aaron Tomosky earned 41 total points
ID: 41839262
To get more than 1gbps (which you are not) you have to have a san/hosts that support it and configure multipath iscsi and possibly a lag in the switch.

I'm not sure if this is possible with your gear, but having two NICs on the host and san doesn't give you more than 1gbps to your storage out of the box.
LVL 42

Accepted Solution

Eugene Z earned 254 total points
ID: 41839308
all depends of what you plan to do with Sql server-- in some cases having physical Server can be the best solution...

for example: If there will be "archive"  read-only DBs with 1-2 users per week it is 1 c story
if you plan to have 1000 concurrent users it is an another planning
About Q:
if you do not plan to use SAN storage:
plan to set if possible another at least RAID 6 ( MS recommends RAID 10) for TempDB data- log
Separate drives for user DBs Data - log files ...
System DB and Sql binaries preferably set no on C drive (RAID 1 +hot spare if you can)
you may need to keep in mind System (page File)  extra drive (RAID 1) RAMx 1.5 (size)
if you plan to run Tier 1 - with 24x7 availability you may need to invest in some 2nd "DR"- HA server
you may need to have server backup, sql DBs.. etc, etc.

It all depend on what sql server and DBs usage you plan to have..

As per above post - Sometimes more CPUs and RAM can have a big impact with Storage IO combined on sql code performance  
NIC team - it a good idea -- just if you can have 10GB with 10GB switches..
there is much more for the best sql server setup
As I said it is up to you -- you know what sql server you need and with  available budget you for sure will have the best server for your project..


check HP sql sizer tools if they still have (OLAP, DW)
LVL 42

Expert Comment

ID: 41839351
If you care at all about the performance, use SSD. PERIOD. END OF STORY. A single SSD will outperform 100 15K SAS drives in RAID 0, and be cheaper.

Author Comment

ID: 41839355
I know, and I agree, but my HP SAN does NOT support SSD's.
The SAN is about 5 to 6 years old, if not older.
LVL 42

Expert Comment

ID: 41839387
If your SAN is so old, why are you looking to use it for this application? Are you looking to possibly improve availability via hypervisor clustering?

Just putting SSD into the physical server now will speed it up tremendously, and would keep you at the same availability levels you have now. You can then decide whether or not to virtualize it on the same hardware or different hardware.

Author Comment

ID: 41839396
Yes, I am using hyper-V, in a cluster environment.
A new equiavelant SAN is about 15 to 25k, so I think we'll try to get another 3-4 years out of our current SAN before replacing it.
LVL 21

Expert Comment

ID: 41841092
>Some of you mentioned that the SAN will be faster than the physical box, but I wonder how that's possible when the numbers show opposite?  I guess I'm not reading the numbers correctly?

As I mentioned in my first post, the columns of intrest are 4K and 4K Q32T1, which is equivalent to IOPS. Databases need a lot of IOPS. Ignore the SEQ columns because databases usually don't do much sequential IO. Look at my first post for details.

The 4K IOPS RAID6 numbers are higher for the SAN than they are for physical server, so no need to worry about RAID6.

Just one important question you need to ask yourself: is performance adequate on the current physical server? If the answer is yes then there's no need to spend money for a new SAN or 10Gbit ethernet because the SAN box you have will be faster than the physical storage. You don't mention any existing performance issues so sometimes good is good enough.

Author Closing Comment

ID: 41842658
Thanks Everyone for your help and input.

Featured Post

Has Powershell sent you back into the Stone Age?

If managing Active Directory using Windows Powershell® is making you feel like you stepped back in time, you are not alone.  For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why.

Question has a verified solution.

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

Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
I have a large data set and a SSIS package. How can I load this file in multi threading?
Via a live example, show how to setup several different housekeeping processes for a SQL Server.
Using examples as well as descriptions, and references to Books Online, show the documentation available for datatypes, explain the available data types and show how data can be passed into and out of variables.

733 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