One of the common areas that people tend to overlook when designing an
Exchange Server solution is the design of the disk subsystem. And if you
didn’t design your disk subsystem well, it is very likely that your
Exchange Server will not perform well.
In Exchange Server 2003 and in earlier versions, the read:write ratio of
the Exchange database was about 4:1. In Exchange Server 2007, it’s about
1:1 for a properly configured Exchange server. This improvement comes
primarily at the expense of memory - Exchange 2007 needs much more
memory to be performant than did Exchange 2003.
In Microsoft’s tests, Exchange 2007 requires 73% less IOPS than Exchange
2003. However, Exchange still needs to be able to perform lots of Input
and Output Operations Per Second (IOPS). In Exchange 2007, a light email
user will, on average, require 0.11 IOPS. A medium user will require
0.18 IOPS. A heavy user will require 0.32 IOPS and a very heavy user
will require 0.48 IOPS. Note that this is just for the mailbox database
and that database I/O is completely random. The transaction log will
require about three-quarters of one-half of that per user (that is, 38%
of the IOPS per user).
Consider an Exchange Server with 100 users; all falling in the very
heavy user range. The database IOPS is 0.48 * 100 = 48 IOPS. The
transaction log IOP is 48 * 0.38 = 19 (rounding up). That really doesn’t
sound like much, does it?
However, consider this: your average 7,200 RPM SATA drive will only
provide you with approximately 35 IOPS. A 10K RPM SATA drive will
provide you with about 50 IOPS. This should make it immediately clear
that SATA is not a high-performing solution where a single drive is
concerned.
For SCSI 10K RPM, the IOPS per drive value is about 85 IOPS. For SCSI
15K RPM, the IOPS per drive value is about 110 IOPS. This goes to show
you that SCSI is at least twice as fast as SATA, but that still isn’t
enough for large installations. So what do you do?
Enter RAID. RAID stands for Redundant Arrays of Independent Disk. You
can create large pools of disk using RAID. Generally, mirrors (RAID-1)
and RAID-5 (where you spend one disk on parity information) are the most
commonly seen types of RAID. However, we aren’t here to talk about RAID
- except how it allows us to create more highly performing disk
subsystems.
Using RAID-1, read performance is equal to (IOPS * N), where N is the
number of disks in the array and IOPS is the total IOPS available from a
single disk. Write performance is (IOPS * N / 2). Note that N must
always be an even number (such as 2, 4, 6, 8…) with RAID-1. However, the
amount of disk available is (GB * N / 2), where GB is the amount of disk
space available on a single disk.
Using RAID-5, read performance is equal to (IOPS * (N - 1)). Write
performance is (IOPS * ((N - 1)/ 4)). Note that N can be any number
higher than 2. The amount of disk space is (GB * (N - 1)).
So, once you have calculated how many IOPS you need, you can easily
determine how many disks you would need in a RAID configuration. Given
RAID, even SATA disk can be used to meet high IOPS requirements. And
while RAID-1 gives better IOPS more quickly, it also requires more
physical spindles than RAID-5.
As a final note, to calculate the IOPS for a particular physical disk,
you will need the specification sheet from the manufacturer. On it, hunt
for the number for latency (normally between 1.0 and 2.0 ms) and the
number for access (normally around 15 - 20 ms). Add the two together.
Divide 1,000 by that value to get IOPS for completely random access. For
example, if latency is 2 ms and access is 20 ms, then (1000 / 22) is
equal to 45 IOPS.
Exchange Server 2007 Storage Technology
http://technet.microsoft.com/en-us/library/bb738146%28EXCHG.80%29.aspx
Mailbox Server Role Storage Requirements Calculator
http://msexchangeteam.com/archive/2007/01/15/432207.aspx