Exchange 2010 Mailbox Server Role Design Example

This topic provides an example of how to determine the appropriate memory, capacity, I/O, and CPU performance requirements for the Mailbox server role and its accompanying architecture.

You can use the Exchange Server 2010 Mailbox Server Role Requirements Calculator to determine the appropriate requirements for the Mailbox server role by specifying your set of input factors. The calculator can determine the requirements discussed in this example. For more information about the calculator (and to download it), see the Exchange Server Team Blog article Exchange 2010 Mailbox Server Role Requirements Calculator.

Note:

The content of each blog and its URL are subject to change without notice. The content within each blog is provided "AS IS" with no warranties, and confers no rights. Use of included script samples or code is subject to the terms specified in the Microsoft Terms of Use.

The scenario used in this example is that of a three database copy solution that makes use of JBOD (just a bunch of disks) storage. For the purposes of this example, consider the following architecture requirements:

Six Mailbox servers participating in a single database availability group (DAG)

The following example illustrates appropriate sizing for an environment in which there are 24,000 2-GB 100 messages / day profile mailboxes spread across six Mailbox servers that are participating within a DAG with each database having three copies. These mailboxes receive an average of 37 MB of mail per 5-day work week, with an average message size of 75 KB. Single item recovery is enabled with a 14 day deleted item retention window. The following calculations are used to determine the mailbox size:

Example values for determining actual mailbox size on disk

Mailbox quota

Dumpster size (two weeks)

White space

Total size on disk

2 GB

246 MB

7.3 MB

2.25 GB (+12%)

In this environment, each user will consume 2.25 GB of disk space. This solution will also leverage 1TB disks in a JBOD configuration; therefore the maximum database size is 667 GB. To support 24,000 mailboxes, with a 667 GB database size, it's necessary to have 102 databases. This results in a final count of 235 mailboxes per database.

However, because this solution is leveraging a JBOD storage architecture, it's vital to ensure that the number of mailboxes per database not exceed the amount of random I/O that can be achieved on the single disk. Because this solution is leveraging large form factor 7.2K SATA spindles, the spindle can achieve a maximum of 55 random I/O per second (IOPS) when fully utilized. Factoring in a 20 percent I/O overhead growth buffer, this means that the spindle can handle a total of 44 random IOPS.

Provided that the user base has a 100 messages / day profile, each mailbox is expected to consume 0.1 IOPS, therefore the disk can support a maximum of 440 mailboxes with this IOPS profile. Because the capacity calculations determined that the maximum number of mailboxes that can be supported is 235 and this is below the 440 mailboxes determined based on the IOPS profile, this solution can be deployed on a single disk.

Based on the number of mailboxes, the actual size of the mailboxes, and the database growth overhead factor of 20 percent, the database size is 635 GB as shown in the following table.

Database capacity requirements

Mailboxes per database

Total number of databases

Database size requirements

235

102

635 GB

To ensure that the Mailbox server doesn't sustain any outages as a result of space allocation issues, the transaction logs also need to be sized to accommodate all of the logs that will be generated during the backup set. Provided that this architecture is leveraging the mailbox resiliency and single item recovery features as the backup architecture, the log capacity should allocate for three times the daily log generation rate in the event that a failed copy isn't repaired for three days. (Any failed copy prevents log truncation from occurring.)

A 100 messages / day profile mailbox generates 20 transaction logs per day on average, so a 24,000 mailbox environment will generate 576,000 transaction logs each day. This means that each database will generate 5,647 logs per day. One percent of the mailboxes are moved per week on one day (Saturday). The solution leverages the native data protection features within Exchange and therefore, doesn't perform backups, and is sized to tolerate three days without log truncation.

As shown in the following table, this server requires 23 GB of space for each database copy.

Log capacity requirements

Logs per database

Log file size

Daily log size

Move mailbox size / database

Truncation failure tolerance

Log size requirements

5647

1 MB

5.65 GB

6 GB

(240 × 2.25 GB / 102)

16.5 GB

(3 × 5.65 GB)

23 GB

(16.5 GB + 6 GB)

Provided that this is a Mailbox Resiliency / JBOD configuration with three copies, each database and its corresponding transaction logs will be placed on the same LUN. The LUN size required is:

Determining required LUN size

Provided that there are a total of 102 databases required to support 24,000 mailboxes and that each database has three copies, the DAG will support a total of 306 databases. 306 databases spread across six Mailbox servers means that each Mailbox server will house 51 database copies. The database copies should be distributed across the servers in the DAG in such a way that server level failures cause active databases to fail over to as many remaining servers as possible (database copies aren't distributed in a symmetric fashion).

To maximize the efficiency of the Mailbox servers participating in the DAG, the active databases will be equally distributed across all Mailbox servers. As a result, when all six Mailbox servers are functioning, each server should be hosting 17 active database copies.

In the event that a single Mailbox server fails, the 17 databases will be redistributed across the remaining Mailbox servers increasing the active database copy count per server to 21.

In the event that two Mailbox servers fail, the 34 databases will be redistributed across the remaining Mailbox servers, increasing the active database copy count per server to 26. It's this active copy count that will be used to size the memory and CPU requirements for the Mailbox server.

With a message profile of 100 messages / day, the minimum required memory per mailbox to support the database cache is 6 MB. With a worst case active mailbox database count per server being 26, each server could host a total of 6,110 live mailboxes. In addition, there are a total of 51 databases per server. The Mailbox server requires a minimum database cache of 12 GB. Therefore, the amount of memory required to support the database cache is:

During a double server failure event, the remaining servers each host 26 databases for a total of 6,110 active mailboxes per server. Based on the calculations found in Mailbox Server Processor Capacity Planning, each server has the following CPU megacycle requirements.

Determining CPU megacycle requirements

Active mailbox CPU megacycle requirements

Passive mailbox CPU megacycle requirements

Total CPU megacycle requirements

14,682

1,765

16,447

Provided that the chosen server platform can support a total of 26,400 megacycles, the server CPU platform can support the environment during a double server failure event.