This is the first post in a what will be a series of posts on working with a sub-optimal disk configuration to squeeze as much performance out of it as possible. You might ask what a Sub-Optimal Disk Configuration? In this case it is a Dell Powervault MD3000 with 15 Seagate Barracuda ES.2 SAS 1 TB 7.2K RPM disks (Model Number ST31000640SS). This equates to just under 14TB of raw storage that can configured into a number of RAID configurations. In this case, the disk array was initially configured with two RAID 5 arrays utilizing seven disks each for a total of 12TB of usable storage.
Why do I call this a Sub-Optimal Configuration you might ask? The answer is simple, its the most space possible at the lowest cost possible, unfortunately using the slowest disks possible in a SAS configuration. While this might yield twelve terabytes of storage, it has a very limited number of potential IO’s per second. Using the default configuration from the graphical user interface of the MD3000, the following results were recorded for one of the RAID 5 disk arrays using SQLIO for testing:
By comparison, the same server with a four disk RAID 5 array using Hitachi UltraStar 15K450 SAS 450GB 15KRPM disks (Model Number HUS154545VLS300) using the default configuration from the graphical user interface, the following results were recorded:
These numbers were from a Windows Server 2003 R2 Standard Edition installation that had default partitioning, and was in production use in the listed configuration prior to being rebuilt for optimized performance. Both of the above disk arrays had misaligned partitions, and neither was formated using a 64K allocation unit size, so immediately these items stand out as areas for improving the IO characteristics of the arrays, but its significant to point out that a disk array that has three fewer disks is performing significantly better than the seven disk RAID 5 due to the increased spindle speed (RPM’s) and lower seek times.
In the next post in this series, I’ll start stepping through how I’m tuning the MD3000 array to get the most performance possible from it by using the command line tools, and why the graphical user interface is not ideal for configuring this type of array for SQL Server.