Cómo Funciona el Modo VMware EVC: Visión General Completa
Si está familiarizado con la función vMotion, probablemente recuerde que la práctica recomendada es utilizar los mismos procesadores en todos los servidores ESXi para la migración en vivo de VM. Si desea utilizar servidores con diferentes modelos de procesador en el clúster, es mejor instalar procesadores de la misma generación. Además, el requisito estricto es que los procesadores sean fabricados por el mismo proveedor, como Intel o AMD. De lo contrario, es probable que obtenga un error al utilizar vMotion.
VMware diseñó su software vSphere teniendo en cuenta las situaciones que pueden darse en el entorno de producción, incluida la ampliación de un clúster añadiendo nuevos servidores con procesadores diferentes. Esta es una situación común – imagina que tienes un cluster con 5 nodos ESXi que compraste hace 3 años y necesitas añadir dos nodos más para ejecutar más VMs para satisfacer las necesidades de tu negocio. Los procesadores que compró hace 3 años ya no se fabrican y ya no se venden en el mercado; sólo puede comprar los procesadores de la familia más reciente. No hay razón para preocuparse: puede utilizar clústeres de alta disponibilidad en vSphere, añadir nodos con procesadores diferentes y utilizar vMotion para la migración en vivo de máquinas virtuales entre hosts que tengan procesadores diferentes. Esto es posible gracias a la función Enhanced vMotion Capability (EVC) que puede habilitarse para clusters en VMware vSphere.
Principio de funcionamiento del modo EVC de VMware
Cada nueva generación de procesadores incluye nuevos conjuntos de instrucciones, además de los disponibles para la generación anterior. Las nuevas funciones suelen mejorar el rendimiento o la seguridad de las aplicaciones en ejecución. Por ejemplo, los procesadores de la generación SkyLake tienen un nuevo conjunto de instrucciones(SGX) en comparación con los procesadores de la generación Haswell. Veamos los conjuntos de instrucciones de estas dos generaciones de procesadores y exploremos sus detalles.
Juegos de instrucciones Haswell (2013):
x86-64, MMX, AES-NI, CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, TXT, VT-x, VT-d. Las instrucciones TSX están deshabilitadas mediante microcódigo para los procesadores Haswell debido a un error, excepto para Haswell-EX.
Conjuntos de instrucciones SkyLake (2017):
x86-64, MMX, AES-NI, CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, TXT, TSX, SGX, VT-x, VT-d.
Esto significa que si se selecciona el nivel de compatibilidad Haswell en los ajustes de EVC, el conjunto de instrucciones SGX debe desactivarse (enmascararse, para ser más precisos) en los servidores con procesadores Skylake y, como resultado, todos los procesadores funcionarán con los mismos conjuntos de instrucciones. De este modo, dispondrá de un entorno homogéneo adoptado para la migración de máquinas virtuales mediante vMotion. La compatibilidad uniforme de vMotion se proporciona aplicando la misma línea de base de instrucciones CPUID para todas las máquinas virtuales que se ejecutan en hosts ESXi sin procesadores uniformes. CPUID puede considerarse una API para la CPU.
Por un lado, las ventajas del conjunto de instrucciones SGX se pierden cuando se activa el modo Haswell EVC, pero por otro, el rendimiento del clúster existente no se reduce si se añaden hosts con procesadores más recientes al clúster. Si añade hosts ESXi con procesadores más antiguos al clúster existente, es posible que note una reducción del rendimiento en determinados casos.
Nota: SGX (Software Guard Extensions) permite organizar fragmentos protegidos de código y datos (también denominados enclaves) para garantizar un alto nivel de protección de los datos de las aplicaciones en funcionamiento frente a los ataques de piratas informáticos. Los desarrolladores que utilizan instrucciones SGX para sus aplicaciones pueden protegerlas contra accesos o modificaciones no permitidos, incluso si la aplicación atacante tiene privilegios superiores.
Nota: TSX (Transactional Synchronization Extensions) garantiza el traslado al nivel de hardware (la propia CPU) de la mayoría de las tareas en ejecución para distribuir los recursos entre los núcleos del procesador. Sin soporte de instrucciones TSX por un procesador, esta distribución se realiza a nivel de software por un sistema operativo y aplicaciones. Si el conjunto de instrucciones TSX está desactivado para su procesador Haswell a través del microcódigo, es posible que tenga que configurar el nivel más antiguo (Ivy Bridge) para el modo EVC.
Por lo general, las máquinas virtuales en ejecución deben apagarse y encenderse para aplicar los ajustes modificados del modo EVC. Si utiliza vCenter 4.1 o posterior, es posible que las máquinas virtuales que se ejecutan en el host ESXi con el procesador más antiguo no se apaguen (puede dejarlas en estado de ejecución). En este caso, el modo EVC debe ser igual a la generación de ese procesador más antiguo. Las máquinas virtuales que se ejecutan en hosts ESXi que tienen procesadores con funciones de CPU más recientes deben apagarse antes de habilitar el modo EVC en todo el clúster. Cuando el host ESXi se excluye de un clúster, sigue funcionando con el modo EVC desactivado.
Versión de VMware vSphere / Compatibilidad de CPU para EVC
El modo EVC necesario depende de los modelos de procesador y de la versión de vCenter Server. El modo EVC de la última versión de vCenter Server es compatible con los procesadores más recientes. Considere la posibilidad de utilizar vCenter de las últimas versiones si dispone de servidores con procesadores de las generaciones más recientes. En la tabla siguiente, puede ver qué combinaciones de generaciones de procesadores Intel y versiones de vCenter son compatibles para determinar la línea de base del clúster EVC para su entorno.
El modo EVC más adecuado viene determinado por el modelo del procesador más antiguo del servidor ESXi dentro del cluster. Técnicamente es posible seleccionar el nivel más antiguo (inferior) del modo EVC que la generación del procesador más antiguo, pero generalmente no hay razón para realizar tales ajustes. Las versiones más antiguas de ESXi y vSphere admiten nuevos procesadores, pero la línea de base máxima de EVC se mantiene en el nivel de los procesadores más antiguos que eran funcionales cuando se lanzó esa versión de vSphere y se consideraban los más nuevos disponibles en ese momento.
Cuando cambie el nivel del modo EVC, debe apagar y encender las máquinas virtuales en ejecución para aplicar los ajustes a esas máquinas virtuales; reiniciar la máquina virtual no es suficiente.
Guía de compatibilidad con VMware
Puede comprobar la compatibilidad de sus procesadores y el modo EVC más alto posible disponible para su servidor vCenter en el sitio web de VMware. Para comprobar la compatibilidad, abra la página de la Guía de compatibilidad de VMware, seleccione la CPU series en el menú desplegable (es decir, lo que está buscando), en la lista Versión de lanzamiento del productoseleccione su versión de ESXi, en la lista de series de CPU mantenga pulsada la tecla Ctrl y seleccione los procesadores instalados en sus hosts ESXi (pulse el botón izquierdo del ratón). Una vez seleccionados los parámetros necesarios, haga clic en el botón CPU/EVC Matrix para ver la tabla de modos EVC disponibles para sus servidores ESXi. En el ejemplo que se muestra en la siguiente captura de pantalla, se han seleccionado ESXi 6.5 (gestionado por vCenter 6.5), procesadores Intel Xeon E3-1500-v5, Xeon E5-4600-v3 y Xeon Platinum 8100. El nivel más alto del modo EVC admitido por todos los procesadores seleccionados es la generación Haswell de Intel.
Requisitos
Para que vMotion funcione correctamente tras activar el modo EVC, deben cumplirse los siguientes requisitos:
- Los procesadores de todos los hosts ESXi deben ser sólo Intel o sólo AMD.
- Las funciones de virtualización de procesadores como Intel VT-x o AMD-V deben estar habilitadas en UEFI/BIOS de los hosts ESXi.
- Los hosts ESXi deben ser gestionados por el mismo vCenter Server.
- Los hosts ESXi deben estar configurados para utilizar vMotion.
Cómo activar y configurar EVC
Tras familiarizarnos con la teoría, repasemos la configuración del modo EVC en la práctica. Es posible que tenga que apagar la máquina virtual en el host ESXi cuyo nivel de EVC debe degradarse. Asegúrese de que no hay funciones del procesador desactivadas en UEFI/BIOS para evitar posibles problemas.
Abra VMware vSphere Web Client en su navegador web introduciendo la dirección IP de su vCenter Server en la barra de direcciones del navegador. Vaya a vCenter > Hosts and clusters y seleccione cada host ESXi para verificar la configuración de la CPU (unidad central de procesamiento). En el ejemplo actual, consideramos dos hosts que ejecutan ESXi 5.5 que se añaden al clúster y son gestionados por vCenter Server 5.5. Como puede ver en la siguiente captura de pantalla, el modelo de procesador del primer host ESXi es Intel Xeon E3110 y el procesador instalado en el segundo host ESXi es Intel Xeon X3430.
Si ya se han añadido hosts ESXi al clúster, seleccione su clúster(temp-cluster en nuestro ejemplo), haga clic en la pestaña Manage, luego abra la pestaña Settings, seleccione Configuration > VMware EVC y haga clic en el botón Edit.
Ahora, antes de seleccionar el modo EVC en vCenter, abra una nueva pestaña en su navegador web y abra VMware Compatibility Guide como se muestra arriba en esta entrada de blog. En el ejemplo actual, debemos seleccionar ESXi 5.5, Intel Xeon Serie 31xx e Intel Xeon Serie 34xx. Tras hacer clic en el botón CPU/EVC Matrix, puede ver en la captura de pantalla que debe seleccionarse Intel Penryn Generation en los ajustes del modo EVC.
Vuelva a la pestaña de su navegador web con vSphere Web Client y abra los ajustes del modo EVC para el clúster. Haga clic en Enable EVC for Intel Hosts. En el menú desplegable de VMware EVC Mode, debemos seleccionar Intel Penryn Generation. En la parte inferior de la ventana, debería ver Validation succeeded en la sección Compatibilidad. Ahora puedes pulsar OK para guardar los ajustes del modo EVC.
A continuación, en la sección VMware EVC, se muestra la información de que VMware EVC está activado. Haga clic en Current CPUID Details para ampliar la sección con detalles sobre los registros y los valores de máscara.
El modo EVC también puede habilitarse durante la creación de un nuevo clúster; VMware promueve esta posibilidad como práctica recomendada. La activación del modo EVC durante la creación de un nuevo clúster evita que se produzcan problemas relacionados con el apagado y la migración de máquinas virtuales encendidas en el clúster (como recordará, normalmente es necesario apagar y encender una máquina virtual para aplicar los nuevos ajustes de EVC).
Enmascaramiento CPUID
Además del modo EVC global que se aplica a todas las VM y hosts ESXi de todo el clúster, vCenter Server permite configurar manualmente los indicadores de CPUID para una VM personalizada. vCenter compara los parámetros de CPUID configurados para la VM con los parámetros de CPUID disponibles en el host ESXi de destino. Si estos parámetros son los mismos, se permite la migración de VM con vMotion. La función de enmascaramiento de CPUID es más antigua que la función de modo EVC.
Para configurar máscaras CPUID para una VM, realice las siguientes acciones:
Seleccione la VM necesaria, haga clic con el botón derecho en la VM y seleccione Edit Settings. En la ventana abierta Editar ajustes, abra Virtual Hardware > CPU, seleccione CPUID mask y haga clic en Advanced.
En la ventana Máscara de identificación de la CPU, seleccione la cadena de registro necesaria y haga clic en el valor para editar la máscara a nivel de bits. Pulse el botón Legend para ver el significado de cada carácter utilizado para ajustar la máscara.
Atención Por favor, no edite las máscaras antes de haberse familiarizado con la base de conocimientos de VMware o con las instrucciones de soporte de VMware. La edición manual de las máscaras de compatibilidad de CPU puede provocar una configuración de máquina virtual no compatible. Por ejemplo, las máquinas virtuales de Windows pueden fallar con BSOD.
Comprobación de la configuración del modo EVC en PowerCLI
Puede comprobar la configuración del modo EVC para todo el clúster y para las VM personalizadas en VMware PowerCLI mediante el comando:
Get-VM | Select Name,HardwareVersion,
@{Name='VM_EVC_Mode';Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},
@{Name='Cluster_Name';Expression={$_.VMHost.Parent}},
@{Name='Cluster_EVC_Mode';Expression={$_.VMHost.Parent.EVCMode}} | ft
También puede comprobar el nivel máximo de EVC admitido para todos los hosts de su clúster después de ejecutar el comando:
Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode
Modo EVC por VM
El modo EVC considerado anteriormente es una opción a nivel de clúster. VMware vSphere 6.7 ofrece la posibilidad de establecer un modo EVC por máquina virtual que puede ser útil para la migración de máquinas virtuales a través de diferentes clústeres o servidores vCenter y le ofrece una mayor granularidad. Un modo EVC por VM se establece como un atributo de los ajustes de la máquina virtual y añade más flexibilidad para gestionar las VM que deben migrar con vMotion. La compatibilidad del hardware de la máquina virtual debe ser de la versión 14 o superior. La configuración del modo EVC por VM se guarda en el archivo de configuración VMX de la VM como líneas que contienen la cadena featMask.vm.cpuid. Cuando se migra una VM con el modo EVC configurado por VM, su configuración EVC almacenada en el archivo VMX se migra con la VM. Los ajustes del modo EVC por VM pueden cambiarse cuando una VM está apagada (apague y encienda la VM para aplicar los ajustes modificados del modo EVC por VM).
Si habilita un modo EVC por VM para una VM que reside en el clúster que ya tiene configurado el modo EVC global, el modo EVC por VM puede ser igual o inferior al modo EVC configurado en todo el clúster. Por lo tanto, es posible configurar el modo EVC global y por VM al mismo tiempo. Después de clonar una VM, los ajustes EVC por VM se clonan con la VM.
Para configurar el modo EVC por VM, abra el cliente VMware vSphere HTML5, vaya a Hosts y Clusters y, a continuación, seleccione la VM necesaria. Abra la pestaña Configure, seleccione More > VMware EVC y pulse Edit.
Cómo activar el modo EVC en el clúster sin tiempo de inactividad
En algunos casos, puede activar el modo EVC en todo el clúster sin necesidad de que la máquina virtual esté inactiva (por lo general, las máquinas virtuales deben apagarse y encenderse para aplicar los ajustes del modo EVC del clúster). Esto es posible si se cumplen los siguientes requisitos:
- Las máquinas virtuales en ejecución residen en el host ESXi con el procesador más antiguo.
- El modo EVC en el clúster está configurado para utilizar los conjuntos de instrucciones de CPU que coinciden con la generación del procesador más antiguo
Activación del modo EVC para la máquina virtual vCenter
Es posible que experimente la siguiente situación que es común en entornos VMware vSphere:
vCenter Server se está ejecutando como una VM en un host ESXi que debe agregarse a un clúster para el que está habilitado el modo EVC.
El problema es que un host ESXi con máquinas virtuales en ejecución (incluida la máquina virtual que ejecuta vCenter) no se puede agregar al clúster después de habilitar EVC hasta que se apaguen todas las máquinas virtuales. Por otro lado, la VM que ejecuta vCenter es necesaria para gestionar el clúster, y no podemos apagar la VM de vCenter porque está en uso en este momento. Este problema es especialmente grave cuando la máquina virtual vCenter se ejecuta en el host ESXi con un procesador más reciente.
Nota: En este caso, se recomienda utilizar un vSwitch estándar (no un vSwitch distribuido) para conectar la máquina virtual que ejecuta vCenter a la red.
Una posible solución. Considere el algoritmo que puede ayudarle a resolver el problema para VMware vSphere 5.5:
- Mueva otro servidor ESXi (que no esté ejecutando una VM de vCenter) al clúster si todavía no hay servidores ESXi en el clúster. Las máquinas virtuales del servidor ESXi que se traslada al clúster deben estar apagadas.
- Apague la máquina virtual que ejecuta vCenter Server. Conéctese al host ESXi en el que reside la VM de vCenter mediante VMware Host Client para anular el registro de la VM o conéctese con un cliente SSH para copiar archivos. En VMware Host Client, haga clic con el botón derecho en la VM de vCenter y pulse Unregister. Copie manualmente todos los archivos de la VM de vCenter al almacén de datos conectado al servidor ESXi que ya ha movido al clúster en el paso 1. Si ambos hosts ESXi utilizan un almacenamiento compartido NFS o iSCSI, no es necesario copiar los archivos de la máquina virtual a otra ubicación.
Nota: Es posible que tenga que configurar manualmente la dirección MAC del adaptador de red virtual de la máquina virtual que ejecuta vCenter Server antes de trasladar la máquina virtual de un host ESxi a otro.
- Registre la VM de vCenter en el host ESXi que se ha trasladado al clúster (conéctese al host ESXi con VMware Host Client, abra el almacén de datos, localice los archivos de la VM de vCenter, seleccione el archivo VMX, haga clic con el botón derecho en el archivo y pulse Registrar VM). Ejecute la VM de vCenter en este host ESXi del clúster. Inicie sesión en vCenter con VMware vSphere Client para asegurarse de que puede gestionar su entorno vSphere con vCenter. Es posible que tenga que desactivar temporalmente el Control de Admisión.
- Mueva el host ESXi de origen en el que funcionaba originalmente la VM de vCenter al clúster. Apague otras máquinas virtuales en ese host ESXi si es necesario antes de mover el host.
Conclusión
Enhanced vMotion Capability (EVC) es una útil función de VMware vSphere que mantiene su clúster escalable y le permite añadir nodos con procesadores de diferentes generaciones al clúster para realizar la migración en vivo de VM entre hosts ESXi con vMotion. El modo EVC enmascara las funciones de los procesadores de nueva generación para hacer una línea de base unificada que coincida con las funciones de la generación de procesadores más antigua utilizada por los hosts ESXi del clúster. Como resultado, se obtiene un entorno homogéneo en el que todos los procesadores utilizan los mismos conjuntos de instrucciones y las máquinas virtuales en ejecución pueden migrar con vMotion. Un elevado número de clientes de VMware que utilizan clusters utilizan el modo EVC. Se recomienda activar el modo EVC en la fase de creación del clúster para evitar posibles problemas relacionados con la adición de hosts ESXi y la migración de las VM en ejecución, incluida la VM que ejecuta vCenter Server.
Independientemente de si utiliza un clúster o no, no olvide hacer backup de las máquinas virtuales VMware. NAKIVO Backup & Replication es una solución de protección de datos rápida, fiable y asequible que puede proteger sus máquinas virtuales de VMware incluso si esas máquinas virtuales están migrando a través de hosts ESXi en clústeres.