Hyper-V shut down lento ed errore 7043

Su un sistema Windows Server 2012 R2 col ruolo Hyper-V mi capitato di rilevare un arresto particolarmente lento (più di 30 minuti).

Analizzando poi l’Event Viewer ho rilevato negli eventi di sistema il seguente errore:

Log Name: System
Source: Service Control Manager
Event ID: 7043
Task Category: None
Level: Error
Keywords: Classic
Description: The Hyper-V Virtual Machine Management service did not shut down properly after receiving a preshutdown control.

L’errore in sintesi significa che il servizio Hyper-V Virtual Machine Management (VMMS) è stato arrestato in modo forzoso allo scadere del timeout. Il servizio VMMS si occupa della della gestione delle VM, ovvero è quello che permette l’interazione della console di Hyper-V con l’hypervisor per la gestione (creazione, arresto, avvio di VM etc.).

La soluzione ufficiale Microsoft per la risoluzione degli eventi 7043 è quella di arrestare manualmente prima il servizio e poi di eseguire lo shutdown (a riguardo si veda Event ID 7043 — Service Stop Operations).

Volendo creare uno script per l’arresto si potrebbe pensare ad un vbs che richiede conferma e poi arresta prima il servizio e quindi avvia lo shutdown:

If msgbox(“Confermi l’arresto del sistema?”, vbYesNo OR vbQuestion OR vbDefaultButton2, “Arresto del sistema”) = vbYes Then
  Set shell = CreateObject(“WScript.Shell”)
  shell.run(“sc stop vmms”, 1, true)
  shell.run(“shutdown -s -t 0”)
  set shell = Nothing
End If

Nel caso l’arresto del sistema debba essere possibile anche ad un utente non amministratore è possibile concedere a tale utente il privilegio per arrestare il servizio tramite una Group Policy di dominio (a riguardo si veda la KB324802 How To Configure Group Policies to Set Security for System Services in Windows Server 2003) o tramite il comando SC SDSET (a riguardo si vedano la KB91439 Best practices and guidance for writers of service discretionary access control lists e il post Set permissions on a specific service (Windows)).

Analizzando più a fondo il caso nel mio caso il problema sembra legato ad una VM che in certe situazioni non gestire correttamente lo Shutdown automatico in quanto le applicazioni/servizi che esegue probabilmente non gestiscono a loro volta correttamente l’evento di shutdown, a riguardo si vedano:

Altre possibili cause potrebbero essere servizi o applicazioni che vengono eseguiti nella parent partition, come ad esempio Antivirus o software di terze parti del produttore hardware.