Build Array for performance

We are looking to upgrade our terminal server environment. We currently have both profiles and public share hosted on the same server. We are adding a dedicated file server and moving only the public share to it due to it's increasing size.

Here is what we have thus far. Please let me know how to get the most performance possible using this setup. Will also consider "less" costly upgrades (i.e. memory upgrade for controller)

Windows 2003 Enterprise SP2
HP DL380 G4
SA6402 192MB cache only
MSA30 DB all bays populated w/ 72GB 15k drives
RAID10 w/ 2 hot spares

What stripe size is recommended for mixed small and large files? Lots of small Word, Excel and large PDFs containing plans.
Battery Cache Configuration? Does it matter when attached to MSA30? I read somewhere the controller acts as a HBA when setup this way.

Any software tweaks for a file server? I recently read an article on advanced perfomance option within disk policies on Win2k3 servers. This is one example of the tweaks I am referring to.

Thanks in advance,
John C.
Who is Participating?
Handy HolderConnect With a Mentor Saggar maker's bottom knockerCommented:
>Battery Cache Configuration? Does it matter when attached to MSA30? I read somewhere the controller acts as a HBA when setup this way.

Nope, that's the MSA20. The MSA30 is a dumb JBOD which is really better than having a MSA20 with internal controller.

6402 has 2 channels as does MSA30DB but since they are on the same controller you can have an array that has disks from both channels, it is a good idea to layout the disks as you said though, then you can cope with an onlikely failure of a channel. It tries to split the mirrors across chanels if it can so your layout is perfect for that.

You probably habe 128MB write cache at the moment, you could upgrade to 512MB for about $700.

Default stripe size is optimal for just about everything, You can experiment by changing it on the fly, although performance drops while it's migrating from one stripe size to another. You're not limited to just one logical volume on your single set of 12 disks, you can have multiple ones and even have different RAID levels and stripe sizes on them.

Windows 2003 doesn't automatically align disks if using disk administrator so you should align your partitions with diskpart.exe first.

Serio27Author Commented:
One thing I forgot to mention earlier is since the MSA30 DB (dual bus) splits the enclosure in two. I plan on configuring the drives as follows.

Bays 1-6 - Data
Bay 7 - Spare #1
Bays 8-13 - Mirrored Data
Bay 14 Spare #2

Let me know if this is optimal. Thx
BigSchmuhConnect With a Mentor Commented:
 Please have a look at this reference document from MS "Performance Tuning Guidelines for Windows Server 2003" where you will find all interesting tuning parameters for Storage and Networking
Array alignment of your arrays using DiskPart.exe is, as andyalder stated above, a serious quickwin.
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Serio27Author Commented:

With this setup is it best to configure for 100% read or write cache? Maybe even a split for that matter.

Also, I plan on configuring one partition to use up all the space available on this array. Do I still need to use diskpart to align it properly in this instance?

Thanks again
Aligning your partition to a stripe multiple will avoid your OS to have 1 io splitted on 2 drives
Ex of the default XP/2003 mis-alignment:
-by default XP/2003 partition leaves 63 sectors as reserved space on the device.
-the first 64KB io will put 33.5KB on hdd#1 and 31.5KB on hdd#2 involving both drives and lowering your iops capability by up to 50% (raid10 with 4 drives and a 64KB stripe)

Regarding the cache setup, most io will be cached at the OS level and I don't think this make a real difference. Enlarging the cache for your usage (read in most case) usually wins in non-parity raid scenario
Serio27Author Commented:

Gotcha, so assuming I go with the default 64kb stripe size. Then I should configure as follows..


DISKPART> select disk 1

DISKPART> create partition primary align=64
Serio27Author Commented:

Great, that answers my questions. I will work on it over the weekend then award points.

Assuming, I do not come back with more questions before then. Thanks

can you have hot-spare for whole array? RAID10 or RAID5/6 are redundan t enough to survive one drive failure.
i can only say that your setup is VALID - raid10 on 4 disks, one spare (per array) and RAID5/6 on remaining disks
blocksize is 16k (win shares) 8k (oracle), going below 4k or above 32k is sub-optimal, unless you have some app that could use it.
Handy HolderSaggar maker's bottom knockerCommented:
I don't think there's RAID 10 on 4 disks and RAID 5/6 on the rest, and no Oracle. Wrong question maybe?
All Courses

From novice to tech pro — start learning today.