Yesterday I happened to catch Brad McGhee’s (Blog|Twitter) tweet about receiving a new MD3000 DAS storage array today. I shot him a tweet that I could send him information about using the command line interface for the MD3000 to do advanced configuration of the array, optimizing it for SQL Server. Back in April I started what i had hoped to be a series about my efforts working with a MD3000 storage array titled Working with Sub-Optimal Disk Configurations (Making the best of what you’ve got). Things being what they are, I never got back around to writing further on this, so consider this to be a continuation of that effort.
Background on the MD3000 Series Disk Arrays
The first thing to know about the MD3000 storage arrays is that the Modular Disk Storage Manager (MDSM), which is the graphical user interface for setting up and managing the disk array, is fairly limited in what it actually lets you do. When I first started looking at the two MD3000 disk arrays in use in my environment when I took over it, I used the MDSM to collect array configuration and profile information, and one of the things I noted was that the arrays were all set to use 128 KB segment sizes. I wanted to test the performance of various other segment sizes with SQLIO, but I couldn’t figure out how change the segment size in the MDSM so I hit the internet search engines and found that there are some significant limitations in the MDSM.
The MDSM allows you configure the storage array using simple defaults only. The Dell website has a Dell™ PowerVault™ MD3000/MD3000i Array Tuning Best Practices document that I expected to to tell how to actually tune the storage array. However, it only provides high level summary information about what kind of options are actually available, and doesn’t provide specifics for tuning the array. One of the things provided in this tuning guide is the following table for configuration options of the array:
This made it apparent to me that the available MDSM configuration templates weren’t going to allow me to make the changes I wanted to make to play around with SQLIO on the array. For example the array segment size is set by default at 128KB for all of the templates, while the MD3000 array actually supports sizes of 8, 16, 32, 64, 128, 256, and 512 KB. To use a array segment size other than 128 KB, you have to manually configure the array using the command line interface(CLI). To test the various Segment sizes, I would need to move from the MDSM GUI to the Command Line Interface (CLI) to actually be able to test the impact of various configurations with SQLIO. However, finding out how to use the CLI was a bit more complex than I actually expected.
Dell has a two different document libraries for the MD3000 and MD3000i storage arrays. If you do a basic comparison, the two document libraries are similar in nature, and in fact, the arrays are configured using identical configuration options depending on the specific firmware version that the array uses. To work with the CLI, Dell offers a rudimentary CLI Guide, but its really short its actual coverage of the available CLI options that actually exist for the MD3000 series of disk arrays. However, if you really dig into things, you will find a reference for the CLI in the Dell™ PowerVault™ Modular Disk Storage Manager CLI Guide.
What is really interesting about the MD3000 series of disk arrays is that they aren’t actually Dell specific hardware. They are instead a basic hardware platform that is used by multiple vendors including Dell and IBM (the DS4000 uses the exact same CLI as the MD3000). If you do a non-specific search for the CLI executable smcli command reference, the top two results are not actually Dell references (SANtricity Storage Manager Command Line Interface and Script Commands and SANtricity Storage Manager Command Line Interface and Script Commands). These two documents actually are excellent references to the CLI management of the MD3000 and MD3000i arrays, since they provide better details than the Dell documents, about the CLI commands available to configure the array.
Configuring MD3000 Series Disk Arrays for SQL Server
With all of the potential configuration options available for MD3000 series disk arrays, what exactly are the BEST configurations for SQL Server? The answer unfortunately is not as straight forward as it might seem. Like anything with SQL Server, the right answer depends on the specific workload that the storage array intends to target. In the next blog posts, I’ll provide details about the different performance characteristics noted under various configurations of the MD3000 array used in the initial blog post Working with Sub-Optimal Disk Configurations (Making the best of what you’ve got).