A lot has been written about virtualizing Microsoft Exchange, but comparatively little on virtualizing Lotus Domino which is also a very popular email platform used by thousands of companies. I was a Domino administrator for more than 10 years, so I thought I would share some tips for running Domino on virtual hosts.
Like any email server, Domino has very high disk input/output (I/O) activity because of the many activities that occur on the server, including full-text indexing, view updates, mail router activity, multiple agents, maintenance tasks such as fixup and compact, and much more. Additionally, Domino servers tend to have high CPU and memory usage as well as network I/O. So is a Domino server a good candidate for virtualization? In most cases yes, except for the busiest of workloads.
Lotus Domino has been using application virtualization for almost 10 years with its built-in partitioned server technology that allows multiple independent Domino servers to run on a single server and operating system. I’ve personally run up to six separate Domino servers on one server without any issues. So, moving to operating system virtualization is a natural and more efficient progression for running multiple Domino servers on a single server.
Because Domino is similar to Exchange as far as resource utilization and workloads, many of the same methods and best practices that are recommended for Exchange can be used with Domino. However, Domino is a bit different than Exchange and there are a few things you should be aware of when virtualizing Domino.
- Since Domino has very high disk I/O make sure you architect your storage for maximum efficiency. This includes using the fastest RPM drives that you can, configuring your RAID groups to have more drives, adjusting your queue depths and using the largest cache possible on your storage controllers. Additionally, use the fastest storage that you can. Fibre Channel tends to be the fastest but hardware iSCSI is also a good choice (using NFS storage is not recommended).
- Split your disk partitioning into multiple physical LUNs or RAID groups; put your operating system, Domino databases and transaction logs on separate partitions.
- Align your VMFS partitions for maximum throughput and minimum latency, check out that link on how to do this or check out Aligning disk partitions to boost virtual machine performance
- While you should always take care when assigning more then one vCPU to a VM, Domino is a very multi-threaded application and usually works best with multiple vCPUs, especially for medium to larger Domino installations. Also the more cores available on your host the better, don’t assign a VM 4 vCPUs if you only have 4 total cores on your host server.
- Don’t skimp on the memory that you assign to your Domino VM, Domino requires a lot of memory and the more you provide to it the more it has available to do caching with. Also do not set memory limits on your Domino VM and use memory reservations to ensure that it is not forced to swap to disk if the physical host memory is exhausted.
- You don’t want too many busy Domino servers running on the same ESX host. As DRS only balances VMs based on CPU and memory usage and not on disk or network I/O you should create affinity rules in DRS to make sure the Domino servers stay on separate hosts.
For more tips on using virtualizing Domino Server on ESX hosts check out the below links:
- IBM Technote – How to size Domino and Sametime systems for full production loads on VMware ESX Server
- IBM Technote – Troubleshooting performance issues for a Domino server on VMware ESX
- VMworld 2007 presentation (free registration required) – IBM Lotus Domino and Lotus Sametime on VMware Infrastructure 3
- VMworld 2008 presentation (available only to attendees or subscribers) – Best Practices for Virtualizing IBM Lotus Domino with VI3