Hyper-V 2016 Resilient Change Tracking (RCT) y Modified Region Table (MRT)

Hyper-V 2016 Resilient Change Tracking (RCT) y Modified Region Table (MRT)

Hyper-V 2016 Resilient Change Tracking (RCT) y Modified Region Table (MRT)

Hyper-V no disponía de Change Block Tracking (CBT) de forma nativa hasta la versión 2016. CBT beneficia enormemente la replicación y los backups puesto que guarda un log con los bloques de datos que se han modificado desde la última instantánea, lo que hace que los backups incrementales y las réplicas se hagan de forma mucho más rápida.

Para solventar esto, Microsoft introduce Resilient Change Tracking (RCT) y Modified Region Table (MRT) en Windows 2016.

Cómo funciona Hyper-V 2016 Resilient Change Tracking (RCT) y Modified Region Table (MRT)

Un disco duro virtual consiste en bloques. Cuando haces un Backup completo, todos los bloques son copiados. Cuando vuelves a realizar un Backup no quieres que se vuelva a copiar todo, sino solo los bloques que se han modificado del disco. Si no existe un registro de los bloques cambiados, los programas de Backup, tienen que comparar el Backup del disco duro virtual con el original y generar un hash para cada bloque. Esto conlleva un ahorro considerable de espacio en el Backup pero conlleva un considerable uso de recursos y tiempo.

Con el fin de hacer esto de la manera más eficiente posible y en mínimo tiempo posible, se emplea CBT (Change Block Tracking). CBT crea un mapa de todos los bloques del disco duro virtual y los marca si son cambiados desde el último Backup completo. El programa de Backup solo tiene que recorrerlo y hacer Backup de los marcados como cambiados en los incrementales y marcarlos como no modificados cuando se hace un completo.

Cuando se aplica una solución de terceros de CBT sobre Microsoft, tiene un problema y es que todo esto se almacena en memoria por lo que si algo le pasa a la memoria (Migración de MV en un CLUSTER o fallo de corriente) se pierde y se perderá tiempo en recursos en volver a generarlo.

Para conseguir resolver esto de forma nativa, Microsoft crea tres mapas, uno en memoria y dos en disco.

La de memoria es la misma que la comentada con CBT y es la más granular. Las diferencias empiezan cuando algo le pasa a la memoria. En este caso tendrá dos mapas para elegir. MRT y RCT.

Si instalas Hyper-V 2016 y migras o creas MV vas a notar que han aparecido dos nuevos ficheros con extensiones .MRT y .RCT:

  • Resilient Change Tracking (.RCT): Se emplea en la operaciones controladas como la migración de una MV de nodo. Es más granular que MRT y emplea escrituras normales.
  • Modified Region Table (.MRT): Se emplea en operaciones no controladas como una pérdida de energía. Este fichero emplea técnicas de escritura directa menos granular que RCT y que en caso de pérdida de energía guarda un estado consistente del que tirar.

Para poder aprovechar esta nueva funcionalidad necesitas ejecutar Windows Server 2016 en el HOST de Hyper-V y actualizar la versión de la MV. En caso de tener un CLUSTER de HYPER-V este también debe tener el nivel funcional promocionado.

Actualizar Nivel Funcional del CLUSTER

Lo primero de todo es ver en qué nivel funcional tenemos el CLUSTER. Para ello, desde PowerShell ejecutaremos el siguiente comando:

Get-Cluster | select ClusterFunctionalLevel

La versión 9 representa un Nivel Funcional de CLUSTER Windows Server 2016 mientras que la versión 8 representa la de Windows Server 2012 R2.

Para actualizar el nivel funcional usaremos el siguiente comando:

et-Cluster -Name ClusterName | Update-ClusterFunctionalLevel

Hay que tener en cuenta que la operación, aunque muy simple, no es reversible.

Actualizar Versión de configuración de la MV

Antes de empezar, para ver la versión de todas las MV que corren en el nodo podemos usar el comando:

Get-VM

La versión 8.0 es la que corresponde a Windows 2016.

Para poder emplear las novedades, finalmente deberemos actualizar la versión de configuración de la MV.

El siguiente comando se debe ejecutar desde el nodo que contiene la MV y la MV debe estar apagada previo a ejecutarla.

Update-VMVersion -Name VMName

Una vez ejecutado, se podrán usar las nuevas características.

Share