Máquina virtual de Hyper-V atascada en estado de inicio/detención
Si su máquina virtual que se ejecuta en Hyper-V está atascada por algún motivo, dejó de responder y no se inicia/detiene/reinicia después de hacer clic en los botones correspondientes en la consola del Administrador de Hyper-V, puede forzar la detención (matar) del proceso de trabajo para esta VM en el host de Hyper-V. Le mostraremos cómo forzar el reinicio de máquinas virtuales Hyper-V bloqueadas que se ejecutan en Windows Server 2022/2019/2016, Windows 10/11 o Free Hyper-V Server sin reiniciar todo el host del hipervisor y todas las máquinas virtuales en ejecución (útil si no tiene un clúster Hyper-V HA y Live-Migration).
Máquina virtual de Hyper-V atascada en el estado de detención/inicio/copia de seguridad
Supongamos que una de sus máquinas virtuales en un host Hyper-V está atascada en el estado Deteniéndose (Deteniéndose-Crítico), Iniciando (Iniciando 10%) o Haciendo copia de seguridad.
En este caso, el sistema operativo invitado deja de responder y los botones "Apagar", "Apagar" y "Restablecer" en el Administrador de Hyper-V dejan de estar disponibles (atenuados) o devuelven el siguiente error cuando se presionan:
The application encountered an error while attempting to change the state of VM.
Failed to change state.
The operation cannot be performed while the object is in its current state.
Si su Hyper-V no muestra la lista de máquinas virtuales registradas en la consola del administrador de Hyper-V y devuelve el error "Conectando al servicio de administración de máquinas virtuales", debe reiniciar el proceso vmms.exe (Servicio de administración de máquinas virtuales de Hyper-V). Esta es una operación segura y no interrumpirá las máquinas virtuales en ejecución. La forma más sencilla de reiniciar el proceso vmms.exe del servicio vmms es mediante el
services.mscconsola o con los cmdlets de administración de servicios de PowerShell:
Get-Service vmms | Restart-Service¿Cómo detener/matar una máquina virtual colgada en Hyper-V?
La única forma de forzar el apagado/reinicio de una VM atascada sin reiniciar todo el host de Hyper-V es eliminar su proceso de trabajo en el sistema operativo del host. Todas las máquinas virtuales en un host de Hyper-V se inician con las instancias de proceso vmwp.exe (proceso de trabajador de máquina virtual). Para encontrar un PID de proceso específico, debe averiguar el GUID de la máquina virtual.
Puede obtener el GUID de la máquina virtual mediante la consola Hyper-V Administrador. Abra la configuración del servidor Hyper-V. La sección Servidor contiene el directorio donde se almacenan los archivos de configuración de la VM (en nuestro caso es D:\VMStore).
Abra este directorio en el Explorador de archivos y busque la carpeta con el nombre de su máquina virtual atascada. Copie el GUID que se especifica en el nombre del archivo de configuración de VM con el
*.vmcxextensión.
Ejecute el Administrador de tareas y vaya a la pestaña Detalles. Todas las máquinas virtuales se ejecutan bajo su propia instancia del proceso vmwp.exe. Para determinar qué proceso es responsable de su VM, necesita el GUID de la VM colgada que obtuvo anteriormente. Busque el proceso vmwp.exe que tiene el GUID de su máquina virtual en la columna Usuario nombre. Elimine este proceso de VM (Terminar tarea).
Del mismo modo, puede encontrar y detener un proceso de máquina virtual bloqueado en un host de Hyper-V mediante la herramienta Process Explorer.
Ejecute Process Explorer como administrador y haga clic en Buscar controlador o DLL (o presione Ctrl-F);
Especifique la ruta al disco virtual (*.vhdx) de la VM de Hyper-V que está atascada en el estado de inicio/detención;
Process Explorer enumerará todos los procesos que utilizan el archivo VHDX de la máquina virtual;
Localice el proceso de la máquina virtual vmwp.exe y elimínelo (haga clic con el botón derecho -> Eliminar proceso).
Anteriormente, le mostramos cómo usar Process Explorer para buscar y desbloquear archivos que están bloqueados por otros procesos.
La máquina virtual se detendrá a la fuerza. Ahora puedes hacer lo que quieras con VM.
Forzar la detención de una máquina virtual Hyper-V con PowerShell
Es mucho más fácil encontrar y eliminar el proceso de la máquina virtual que no responde usando PowerShell. Ejecute la consola de PowerShell como administrador (su cuenta debe ser miembro del grupo "Administradores de Hyper-V" de Hyper-V).
En este caso, el cmdlet Stop-VM integrado del módulo Hyper-V PowerShell no le permitirá apagar la máquina virtual. Si intenta ejecutar el
Stop-VM -Forcecomando, también se cuelga. Obviamente esperando una respuesta de la VM.
Debe matar un proceso de VM por su GUID. Puede obtener el GUID de la máquina virtual por su nombre. Por ejemplo, para obtener el GUID de la VM con el nombre SVM-GUARDEDHOST1, ejecute el comando:
$VMGUID = (Get-VM "SVM-GUARDEDHOST1").IDSi no desea escribir el nombre completo de la VM, puede enumerar todas las VM registradas en este host de Hyper-V y su ID:
Get-VM | Select VMName, VMId, pathCopie su VMID de la lista resultante.
Busque el identificador de proceso vmwp.exe (PID) para este VMGUID:
$VMWMProc = (Get-WmiObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VMGUID})Luego, debe terminar por la fuerza el proceso de una máquina virtual Hyper-V colgada, usando el comando Stop-Process:
Stop-Process ($VMWMProc.ProcessId) -ForceConsejo. También tenemos una guía simple sobre cómo matar una VM atascada en VMWare ESXi.
Máquina virtual de Hyper-V atascada en estado de copia de seguridad
Al realizar una copia de seguridad de una máquina virtual en un host Hyper-V, es posible que la máquina virtual Hyper-V se atasque en el estado En ejecución con el estado Copia de seguridad. Sin embargo, no puede detener o iniciar la VM a través de Hyper-V Manager.
Si no desea reiniciar el host Hyper-V, verifique primero el estado del servicio "Microsoft Hyper-V VSS Writer":
vssadmin list writersAsegúrese de que el comando no devuelva un error. A continuación, debe reiniciar el servicio "Administración de máquinas virtuales de Hyper-V" con el comando de PowerShell:
Get-service vmms | stop-processAsegúrese de que el proceso vmms.exe haya finalizado. Si no, forzarlo a terminar:
Get-Process | Where-Object { $_.ProcessName -eq 'vmms' } | Stop-ProcessAhora puede iniciar el servicio de administración de Hyper-V:
Start-Service vmmsReiniciar el servicio de administración de máquinas virtuales debería restablecer el estado de VSS Writer en el host de Hyper-V.
El administrador de Hyper-V no pudo cambiar el estado de la máquina virtual
A veces sucede que incluso después de eliminar un proceso de VM bloqueado, no puede encender la VM. Además, se congela en el estado Inicial con un error:
Virtual Machine Connection
Failed to Change State.En este caso, marque las siguientes opciones:
Compruebe que haya suficiente espacio libre en el disco en el que se almacenan los archivos de la máquina virtual de Hyper-V;
Si una imagen ISO está conectada en la configuración de VM, verifique si este archivo de imagen está disponible en la ruta especificada;
Compruebe la configuración del adaptador de red de la máquina virtual. Los adaptadores de red virtual deben estar conectados a un conmutador virtual Hyper-V existente (no debe haber ningún estado Adaptador de red - Error de configuración para ninguna NIC);
Verifique que el Servicio de administración virtual de Hyper-V (VMMS) se esté ejecutando y no se haya quedado atascado en el estado Detención;
Asegúrese de que su software antivirus no bloquee el acceso a los archivos de VM. Agregar rutas al directorio de VM a las exclusiones de antivirus (consulte las exclusiones de agregación activa al antivirus integrado de Windows Defender en Windows Server);
Busque errores relacionados con Hyper-V en el Visor de eventos -> Registros de aplicaciones y servicios -> Microsoft -> Windows -> Hyper-V-Worker;
Deshabilite la suspensión y la hibernación en los sistemas operativos invitados de la máquina virtual. Puede deshabilitar la suspensión en Windows a través del Panel de control -> Opciones de energía -> Cambiar la configuración del plan -> Poner la computadora en suspensión -> Nunca. Para deshabilitar la hibernación y la suspensión en un sistema operativo invitado Ubuntu Linux, ejecute el comando:
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Si los métodos anteriores no ayudaron, parece que tendrá que reiniciar todo el host de Hyper-V.











