OK, so here’s the scenario. You have a 2-node DRS cluster – and VM1 and VM2 are setup to be “Separate Virtual Machines”. What happens when you trigger Maintenance Mode? Answer depends of which version of Vi3 your running under.
In Vi3.0.x the VMs would be put together where you were using manual, partial, or fully-automated. If not it would cause a logical impossibility – I can’t move VM1 to on ESX2, because VM2 is there already. If you like Maintenance Mode over-riding your (anti)affinity rules. Critically, even if you do a manual VMotion, there’s no warning from VirtualCenter that your about to override one of your all important rules…
In Vi3.5. The behavior is somewhat different. The system will move all the VMs off the host (including powered off and suspended VMs, which is neat, but not your templates – which is less so neat). However, your ones with anti-affinity rules will just stay where there are. Maintenance mode will not complete – unless the process can find an ESX host that keeps the rule in place. This has implications for a 2-node ESX cluster – because there is no alternative but to break the rule. When this happens – you don’t get any warning, dialog pop-up box or alert. The only really indication – is that if you are in manual/partially automated mode – where all the VMs can be moved get flagged with 5-star recommendation – the VMs that cannot be moved (because this would breach some kind of affinity rule) just don’t appear. The result – is the VM just sits there, and so does the maintenance mode process at 2%.
Solution? You my, friend – have to manually move these VMs to allow maintenance mode to complete.
Long term solution? Buy more ESX hosts, and add them to the cluster. It basically reduces the chances of these logical problems.