Taken from the Deployment Guide and the Server Virtualization Guide:
- If you decide to go virtual, Lync only supports Hyper-V R2 or ESX 4.0 platforms. Windows Server 2008 Hyper-V is NOT supported as "A number of enhancements that are critical for running virtualized Lync Server media workloads were implemented with Windows Server 2008 R2 to address network packet loss."
- If you choose virtual. All roles in virtual must run on Windows Server 2008 R2 as the guest/child OS, citing more network optimizations.
- In general, all roles can be virtualized, except for the 3rd party Survivable Branch hardware appliance (obviously).
- You need to decide physical or virtual on a per pool basis. Inside the pool, the roles on separate servers (physical or virtual) need to be of similar resources (hardware), as "Balanced end-to end-performance is required."
- The exceptions to this rule, is you can always choose the Front End to be virtual and the DB backend to be physical in any scenario.
- Virtualization high availability features (Windows clustering, VMotion, Live Migration, etc.) are not a substitute for Lync's built-in redundancy features inside its architecture (multiple front-end's, SQL redundancy, etc.).
- Even in a small virtualized pool, the following are not recommended: shared networking port for host and guests, shared disk spindles for host and guests or for multiple guests, network connectivity less than 1GB, and dynamic disks.
- Disabling IPv6 on the host and guests will improve performance (although it doesn't specify which technique to use for disabling. Is unchecking the box in Network Connection Properties enough even though it doesn't completely disable IPv6?).
- Notes are included for enabling VMQ on Intel network adapters and other driver/reg modifications to improve performance.
Maybe it's just me, or maybe I've not read other Microsoft server virtualization recommendation white papers… but this one was particularly detailed and full of real-word guidance for sizing virtual and physical machines, including what perfmon counters to use for baselining. Bravo Lync team. If only all server apps came with this level of detail.