This post was authored by Subhasish Bhattacharya, Program Manager, Windows Server

Introduction: “Special” virtual machines

Not all virtual machines (VMs) in your production deployment are created equal… some are just special! Therefore, it is important for these “Utility” VMs to start up before other “Dependent” VMs in your private cloud. Consider a VM hosting the Domain Controller for your private cloud. It is imperative for that VM to start before any VM in your private cloud that depends on Active Directory.

Virtual machine priority in Windows Server

Today in Windows Server, VM start ordering is addressed by configuring the priority of VMs. VMs can be designated a Low, Medium or High priority. This ensures that the most important VMs are started first. Additionally, it is ensured that in the case of resource constraints, the most important VMs are running. However, there is no cross-node orchestration (by VM priority) across the nodes in a cluster. Each cluster node has an isolated view of the priority of the VMs it is hosting. Additionally, for VM start ordering based on priority, a VM is considered to be running once it reaches online state. This often does not provide a sufficient head start for its dependent VMs.

The need for virtual machine start ordering in your private cloud

Let us consider some scenarios to motivate the need for VM start ordering in our production deployments:

  1. A multi-tiered application where the database VMs have to start first, followed by the middle-tier VMs and lastly, the front-end VMs.
  2. In an integrated system, such as the Cloud Platform System, where infrastructure VMs (hosting services like Active Directory) need to start first. Next, application VMs (such as those hosting SQL) can start, followed by front-end VMs hosting management infrastructure.
  3. A hyper-converged cluster where storage utility VMs need to start before management and tenant VMs. A similar scenario exists for storage appliances.
  4. Converged clusters where at least one Domain Controller VM needs to start up before VMs hosting applications with Active Directory dependencies can be brought up.

Virtual machine start ordering

The virtual machine start ordering enhances your private cloud VM orchestration by providing the following:

Special VMs

•    VMs can be anointed as “Utility” VMs which are slated to start before all other VMs.


•    Groups of VMs can be defined to represent tiers.
•    Startup indicators and triggers are available for each VM group to determine when each VM group can be considered to be started.

•    Multi-layer dependencies can be created between different VM groups to define a start order.

Extending beyond VMs

Thus far in this blog post I have discussed the start ordering of VMs. However, this feature enables you to orchestrate the start ordering for any application represented as a cluster group (for example: a cluster group that is used to make your in-house application highly available)!

To try this new feature in Windows Server 2016, download the Technical Preview.

Check out the series: