Last updated on Saturday 19th of March 2022 01:02:15 PM

©Errores de instantáneas de ESXi y soluciones.

Qué son las instantáneas, cómo usarlas, problemas y procedimiento de reparación.


Esta publicación era bastante antigua y necesitaba alguna revisión. Sin embargo, los mismos principios básicos todavía se aplican a las instantáneas, no han cambiado desde un punto de vista conceptual.

Una de las fuentes más comunes de solicitudes de soporte de parte de nuestros usuarios registrados son los problemas que tiene que ver con instantáneas: creación, eliminación, quiescing, etc...

• No se puede crear una instantánea
• No se puede eliminar la instantánea
• Cómo solucionar problemas relacionados con las instantáneas

¿Qué es una instantánea?

El concepto existe asociado a múltiples sistemas de abstracción de almacenamiento, como: LVM, LVM2, ©ESXi, ZFS File System, etc...

CESXi Snaphosts: vista general Su funcionamiento varía en función de la tecnología utilizada, aunque el concepto siempre implica algún tipo de discontinuidad en los datos almacenados que permite algún tipo de manipulación de nivel superior por parte del administrador del sistema.

En esta publicación, cubriremos las instantáneas en un entorno ©ESXi.

En ©VMWare ©ESXi Hypervisor, las instantáneas son subconjuntos temporales de bloques generados a partir de algún momento en el tiempo (el momento en que toma la instantánea) que se almacenan en archivos de disco virtual separados. Se pueden leer por los datos que contienen. y se pueden escribir si la máquina virtual está funcionando sobre uno. Más tarde puede decidir si desea eliminar o descartar esos datos. Son la mejor manera de lograr una copia de seguridad de ©VMWare consistente en caliente, ya que El mecanismo de instantánea o snapshot ya incluye la lógica para generar una discontinuidad consistente en el flujo de E/S.

Eliminar una instantánea en la jerga de ©ESXi significa enviar esos datos al disco base (donde residen los datos del disco virtual permanente) cuando está posicionado en algún punto después del punto del archivo de instantáneas en la cadena de instantáneas. Por otro lado, cuando eliminas un instantánea que existe más allá del punto en el que se encuentra posicionado en la cadena, los datos de la instantánea se descartan.

Eliminar una instantánea
Debe visualizar esto desde la vista del administrador de instantáneas.

Cuando "restauras" alguna instantánea, reviertes tu VM a algún estado, es decir: viajas a algún punto en el tiempo en el historial de tu VM cuando generó ese archivo de instantánea. Una vez más, la terminología relacionada con la instantánea contradice la semántica implícita.

Puedes encadenar instantáneas, hasta 128 de ellas (si no recuerdo mal), aunque lo más probable es que nunca llegues a ese teórico límite, ya que las máquinas virtuales se ralentizan a medida que agrega más, y en la mayoría del hardware, solo unas pocas harán que la máquina virtual sea prácticamente inutilizable.

Una instantánea dada depende de las anteriores, ya que los datos almacenados en un lapso de tiempo por sí solo no tienen sentido. Puedes Si quieres tomarte un tiempo para pensar en ese hecho, encontrarás que es obvio.

Las instantáneas son una abstracción conceptual que permite acumular subconjuntos temporales de datos. Cualquiera que sea el uso que le des, depende de ti. Existen algunos usos predefinidos comunes que les dan significado el 99% de las veces.

¿Para qué son útiles las instantáneas de ©ESXi?

El uso más común de las instantáneas es poder revertir alguna VM dada a un estado anterior. Esto es muy útil en escenarios de prueba, por ejemplo, cuando desea probar una nueva versión de algo o instalar alguna actualización de software, pero desea asegurarse de poder revertir al huésped al estado anterior si algo sale mal.

En un escenario de copia de seguridad y recuperación de ©ESXi, las instantáneas en una máquina virtual de la que se ha realizado una copia de seguridad se pueden usar para revertir la copia de seguridad a cualquiera de los parámetros de restauración. puntos que ofrecen las instantáneas.

Problemas con las instantáneas de copia de seguridad

Puede encontrar diferentes errores relacionados con la creación y eliminación de instantáneas, sin embargo, se pueden resumir en:

- No se puede crear una instantánea.
- No se puede eliminar la instantánea.

Esto puede parecer una explicación demasiado simplificada, pero ya es suficiente.

Quiero romper una lanza a favor de ©VMWare en este caso, ya que la función de instantáneas funciona muy bien. Cuando te encuentras con algún problema tiene que ver con las instantáneas, generalmente está relacionado con algo que no funciona bien: una falla de hardware, el disco está lleno o con algo que usted no está haciendo lo correcto: versiones mixtas de HW o VMFS, archivos faltantes o servicios mal configurados en caso de instantáneas inactivas.

No se puede crear una instantánea

Cuando no se puede crear una instantánea, generalmente se debe a que algo impide que suceda. Debería acostumbrarse a escanear los archivos de registro de VM y también los archivos de registro de nivel de host en /scratch/log en busca de pistas. Las situaciones más comunes son:

- Falta de espacio en los volúmenes del disco virtual.
- Falta de espacio en el directorio principal /tmp
- Falta de espacio en la partición /scratch
- El servicio en el sistema operativo invitado se niega a permanecer inactivo y genera un error de ©VMWare Tools

Los siguientes comandos mostrarán cualquier error que se encuentre en el directorio de registro general del host en /scratch/log y en los registros de VM.

gato /scratch/log/*.log | grep -i "error"

cat /vmfs/volumes/datastore1/YourVM/*.log | grep -i "error"


Estos otros comandos detectarán si alguna partición o el uso del sistema de archivos virtual está por encima del 90%. tenga en cuenta que solo aquellos que estén más cerca del 100 % de utilización representarán un problema real.

df-h | cola +2 | awk '{sub("%", "");if($5 > 90){imprimir $0}}'

vdf-h | grep -iv "^disco ram" | awk '{sub("%", "");if($5 > 90){imprimir $0}}'


Lo anterior te permitirá saber si te falta espacio en algún volumen o sistema de archivos. Si su problema no está relacionado con poca disponibilidad de espacio, entonces es más probable que se deba a intentar desactivar el sistema operativo invitado.

Si ese fuera el caso, ya debería haber encontrado algunos errores relacionados en sus registros. Tienes diferentes formas de abordar el problema cuando se trata de realizar un quiescing a su sistema virtualizado. En primer lugar, determine si realmente necesita quiescing.

¿Qué es quiescing?

Para comprender las instantáneas, debe pensar en cómo funciona la Entrada/Salida de datos en un sistema operativo determinado. No necesitamos entrar en los detalles esenciales de cómo funciona el sistema operativo y el sistema de archivos, simplemente comprender que es un sistema complejo con muchas partes involucradas y que no es lo mismo un servidor de archivos que un servidor que aloja servicios que constantemente escriben datos en los discos del invitado, como algún servidor de base de datos.

Un servidor de archivos es fácil de manejar, el propio sistema de archivos se encarga de escribir archivos de manera consistente. No obstante, cuando mantienes un sistema de base de datos, correo electrónico o un tipo de servicio similar, las operaciones de E/S pendientes deben escribirse en el disco antes de que la instantánea pueda ser realmente tomada. Si eso no sucediera, los archivos de la base de datos podrían corromperse con datos parcialmente escritos.

Este es, hasta cierto punto, un escenario similar al de un ciclo de reinicio, en el que el servicio de la base de datos debe cerrarse de forma controlada, para de esta manera asegurar de que los datos se escriben de forma coherente antes de cerrar el servicio.

La principal diferencia es que una operación de quiescing detendrá el servicio solo el tiempo necesario para tomar la instantánea, que generalmente provocará un breve fallo en el funcionamiento del servicio. Si el proceso de quiescing va bien, los usuarios solo notarán un breve retraso de uno o dos segundos en las respuestas, generalmente es muy breve.

©VMWare Tools

©VMWare Tools actúa como un servicio intermediario que solicita la operación de quiescing y la confirma al hipervisor. Por lo tanto, necesitas ©VMWare Tools instaladas, así como cualquier otro servicio auxiliar adicional que pueda ser necesario para realizar la parada controlada.

Tenga en cuenta que los servidores ©Windows que ejecutan SQL Server necesitarán, no solo ©VMWare Tools, sino también Disco Virtual Servicio VSS más algunos componentes adicionales según la versión que esté ejecutando.

Algunos otros servidores de bases de datos, especialmente algunas versiones anteriores, pueden no disponer de mecanismos automáticos de quiescing. En estos casos hay algunas soluciones que vamos a comentar más adelante.

No se puede eliminar una instantánea

Antes de decir nada más sobre este tema, así como la operación opuesta (crear una instantánea), debe trazar claramente una línea divisoria en su mente. con respecto a las instantáneas para diferenciar claramente entre instantáneas con quiescing e instantáneas sin quiescing.

Tratamos problemas específicos de quiescing al final de esta publicación. Por ahora estamos abordando problemas que afectan a las instantáneas en general.

Tiene dos niveles para diferenciar al tratar con problemas de instantáneas: aquellos que afectan a todas las instantáneas, que deben considerarse problemas graves que generalmente tienen tiene que ver con la falta de espacio o alguna configuración incorrecta y problemas que afectan a las instantáneas con quiescing, que normalmente tienen que ver con servicios activos como bases de datos y la necesidad para pausarlos de forma controlada antes de tomar la instantánea.

Esto es algo diferente a no poder crear una instantánea. Algunas de las causas también podrían estar relacionadas con la falta de espacio. no comentaremos eso más, ya que el procedimiento para detectar esa situación es el mismo que el anterior.

Como también se comentó anteriormente, eliminar una instantánea consiste en integrar los datos en el disco base o descartarlos definitivamente. El disco base puede ser un archivo -flat.vmdk u otra instantánea, dependiendo de cuántas hayas acumulado.
Las posibles causas de que una o más instantáneas no puedan eliminarse son:

- Falta de espacio en alguno de los volúmenes o FS virtuales mencionados anteriormente.
- Incompatibilidad entre VMFS o VM Versiones de hardware
- Archivos asociados perdidos o dañados.
- Otros problemas, posibles bugs de ©ESXi.


Problemas de incompatibilidad

Para que esta operación sea posible, necesita que las instantáneas de la cadena sean compatibles. Por ejemplo, cuando mueve algunos datos diferenciales entre Los servidores ©ESXi, como en el caso de las instantáneas OneDiff, necesita que el hardware virtual de las máquinas virtuales y las versiones de VMFS sean iguales o, como mínimo, las versiones de VMFS deben coincidir y la versión de hardware de la VM de origen debe ser compatible con el servidor de destino, a saber: puede copiar alguna VM de ©ESXi 5.5 a 6.5 y hacer que funcione, pero no al revés si la versión HW del La máquina virtual que se ejecuta en ©ESXi 6.5 no es compatible con 5.5; de lo contrario, recibirá un error.

Archivos perdidos o dañados

Una instantánea o snapshotestá compuesta por varios archivos. El archivo .vmsd contiene información sobre cuántas instantáneas se adjuntan a una máquina virtual y cómo se relacionan con entre sí, a saber: la jerarquía y el orden de relación en la cadena de instantáneas. Cuando este archivo se daña ©ESXi no puede averiguar cómo integrar los datos en los discos base, la VM podría incluso estar funcionando bien, aún así la eliminación de la instantánea falla.

Eliminar el archivo .vmsd roto y crear una nueva instantánea genera un nuevo archivo .vmsd, que se puede usar para reparar algunas cadenas rotas de instantáneas cuando el archivo .vmsd contiene información incorrecta.

Cuando está dañado, otro enfoque para recuperar los datos podría ser simplemente clonar la máquina virtual desde el archivo de instantánea deseado .vmdk usando vmkfstools, esto sería generar un archivo -flat.vmdk consolidado con todos los datos combinados en un único disco virtual.

Otros problemas

Ocurrió un error general del sistema

Hay un problema que surge cada cierto tiempo en un determinado sistema, no se pueden crear snapshots, ni borrar cualquier preexistente, el registro de eventos muestra Se produjo un error general del sistema. A veces este problema persiste incluso después de descartar los archivos de datos de instantáneas manualmente como se explica en el punto número 6, incluso después de reconstruir datos a partir de una cadena de instantáneas como se explica en el siguiente párrafo. Esto vuelve locos a los usuarios y parece imposible de arreglar.

Hemos podido reproducir este problema, que debe considerarse un error de ©ESXi, en sistemas 5.X y 6.X. Por algún motivo desconocido, la máquina virtual regenera un archivo .vmsd con información no válida, incluso después de eliminando todos los archivos de instantáneas manualmente, incluido el propio archivo .vmsd. El archivo .vmsd incorrecto que se reproduce en sí mismo sin razón aparente, contiene información sobre una instantánea que ya no existe.

No importa cuántas veces apague la VM y elimine el archivo .vmsd, vuelve a aparecer la información incorrecta una y otra vez. Incluso si clona la máquina virtual desde la instantánea superior, se sigue arrojando información incorrecta en el archivo .vmsd.

Claramente, no es algo en el host ESXi en sí, ya que anular el registro de la VM y volver a registrarla con un identificación diferente no soluciona el problema. Por lo tanto, tiene que ser algo relacionado con un bug no resuelto.

Solución:

Descubrimos que eliminar el archivo .vmsd una vez que se encendió la VM y el .vmsd incorrecto el archivo ha sido recreado, permite crear una nueva instantánea. A partir de este punto, el problema parece volverse resuelto.

Como algunos de los archivos descriptores de instantáneas pueden dañarse si este problema le afecta, la mejor manera de dar El remedio para esto es clonar desde la instantánea superior, encender la VM recién creada, eliminar el archivo .vmsd y tomar una nueva instantánea.

Cómo solucionar problemas relacionados con las instantáneas

Consolidar instantáneas Limitaremos este párrafo a explicar cómo arreglar una cadena rota de instantáneas, ya que no se puede crear una se limita a identificar la causa, pero no hay nada que se deba deshacer.

En caso de una cadena rota de instantáneas ya existentes, no solo necesita encontrar la causa y solucionarla, sino que también necesita una forma de consolidar sus datos nuevamente en los discos base, ya sean algunos archivos -flat.vmdk o alguna otra instantánea.

En primer lugar: identifique el problema, consulte sus registros en busca de pistas. Compruebe si existe alguna incoherencia que impida la eliminación de la instantánea, como alguna operación diferencial anterior de Onediff o que la máquina virtual haya sido movido de un anfitrión a otro.


• Apague la máquina virtual e intente consolidar la cadena de instantáneas.
• Elimine el archivo .vmsd e intente crear una nueva instantánea encima de las anteriores. El archivo .vmsd debe regenerarse
• Anule el registro de la máquina virtual y vuelva a registrarla.
• Reinicie el servicio del host o reinicie el host, esto último siempre es más decisivo.


Si el problema persiste, deberá decidir si descartar la información en los archivos de instantáneas o intentar consolidar los datos en un nuevo disco -flat.vmdk ejecutando una operación de clonación vmkfstools.

Reconstruya los datos de la máquina virtual a partir de la cadena de instantáneas

Si tiene suerte, la consolidación funcionará y podrá enviar esas instantáneas a la base. archivos vmdk. Si no es así, deberá reconstruir todo en un archivo vmdk base consolidado, o un conjunto de ellos. Si tiene más de un disco virtual en esa VM determinada. Al hacer eso, perderá sus instantáneas o snapshots, pero conservará sus datos. Esto significa que no podrá volver a un estado anterior de la VM, pero al menos conservarás tus valiosos datos. En este punto debería considerarse afortunado de haber podido hacerlo con algunas molestias menores.

Si su conjunto de instantáneas está en buen estado, entonces puede decidir el instantánea a partir de la cual consolidará la máquina virtual rota y, por lo tanto, el punto en el tiempo al que volverá eso. En cualquier caso, este procedimiento es mucho más complejo que una consolidación total más sencilla a partir de la instantánea superior, especialmente si desea conservar las instantáneas restantes en la cadena. En esta publicación cubrirá el escenario más simple y recuperará la VM desde la instantánea superior presente. Si quieres recuperarse de uno anterior, solo siga el mismo procedimiento, pero de una instantánea anterior en la cadena, y descartar el resto de los datos.

El procedimiento estándar para remediar esto es clonar los archivos .vmdk uno por uno desde el más alto actual instantánea disponible. Para hacer eso, deberá usar vmkfstools de la siguiente manera: encuentre la instantánea superior .vmdk, serán algo así como yourVM-00000N.vmdk, encontrará un archivo 00000N.vmdk por disco en la VM, si solo tiene un disco, solo habrá un conjunto de archivos .vmdk de instantáneas. Localízalos todos y clona cada uno de ellos (desde el N más alto presente) usando vmkfstools de esta manera:

vmkfstools -i suVM-00000N.vmdk /vmfs/volumes/datastore2/yourVM/yourVM.vmdk -d thin

Esto creará un nuevo archivo .vmdk que contiene toda la información consolidada del disco base más todos los Instantáneas en la cadena. El siguiente paso es copiar el archivo .vmx al directorio de destino "/vmfs/volumes/datastore2/yourVM" en el ejemplo) y edítelo usando el editor vi para reflejar las nuevas rutas a cada disco. Eso es todo, puedes cambiar tu VM encendida, y si todos los pasos se tomaron adecuadamente, tendrá una nueva VM desinfectada.

Descartar la información en los archivos de instantáneas

Este es el último recurso y consiste en renunciar a la información contenida en las instantáneas y revertir la VM. al estado en que se encontraba antes de tomarlos.

No hace falta decir que el procedimiento anterior se aplica a cualquier instantánea en una cadena, es decir: puede clonar una VM desde cualquiera de sus instantánea .vmdk archivos. Así puede intentar recuperar los datos de cualquiera de los puntos intermedios antes de llegar al archivo -flat.vmdk.

Descartar manualmente una instantánea consiste en editar el archivo .vmx y apuntar los discos virtuales a la instantánea anterior en una cadena En caso de que solo tenga una instantánea o desee descartar todos los archivos de instantáneas, apunte el archivo .vmx a la base .vmdk disco, es decir: el que no contiene ninguna cadena -00000N en su nombre y tiene una contrapartida -flat.vmdk.

Algunas notas útiles sobre el procedimiento de quiescing

Los problemas de quiescing siempre están relacionados con el sistema operativo invitado, la versión del mismo, los servicios en ejecución y muchas otras circunstancias. Aún así, lo más importante es comprender qué es y cómo tratarlo. Hemos cubierto esto en muchas publicaciones y artículos antes, ofreceré un extracto aquí:

Algunos servicios como las bases de datos, especialmente si son sistemas con mucho tráfico, requieren que sus páginas se escriban completamente en el disco para que sean 100% consistentes. Digamos que tiene una serie de declaraciones SQL que agregan algunos datos a su base de datos. Si la instantánea se toma en medio de alguna operación de E/S en el disco, es posible que el punto de corte no incluya las declaraciones finales y los bytes de cierre de la transacción. Esto provocaría que la restauración de la copia de seguridad de la VM devolviera algún mensaje indicando que la base de datos se ha corrompido de parte del sistema de base de datos.

No entre en pánico. Cuando alguien usa la palabra "corrupción", la gente tiende a pensar en datos completamente corruptos de principio a fin. En el caso de instantáneas sin quiescing, lo que tiene es una página sin cerrar escrita en la base de datos. Arreglarlo es fácil, solo requiere ejecutar alguna herramienta de reparación estándar que elimine los datos parcialmente escritos. Aún así, eso es una molestia y, en el caso de grandes bases de datos, puede llevar un tiempo valioso.

Aquí es donde el procedimiento de quiescing resulta útil. Quiescing es un concepto, puede involucrar varios componentes diferentes de software según el sistema operativo y el sistema de base de datos que esté utilizando. En los sistemas operativos de Microsoft es, en general, más difícil realizar quiescing que en Linux. Por lo general, necesitará el servicio de disco virtual en ejecución más el servicio de instantáneas de volumen en modo automático y, por supuesto, la última versión de VMWare Tools instalada correctamente.

La siguiente lista de verificación lo hará la mayoría de las veces:

El servicio de disco virtual se inicia y el tipo de inicio es Automático. El servicio del proveedor de instantáneas de VMware está detenido y deshabilitado. Los servicios de VMware Tools se están ejecutando. Asegúrese de que el tipo de inicio del servicio Volume Shadow Copy sea Automático

Existen servicios auxiliares adicionales para MS SQL Server y Exchange que pueden ser necesarios en caso de clusters o sistemas distribudos más complejos.

No obstante los anteriores son los pasos a seguir para que ©VMWare ©ESXi lleve a cabo el quiescing de su sistema sin errores. Necesita comprender lo que hay detrás de esto, que al final es muy simple y fácil de entender.

Lo que hacen los diferentes mecanismos de quiescing es poner el sistema de base de datos en modo de solo lectura, vaciar cualquier búfer de E/S de base de datos pendiente (es decir, escribir cualquier dato pendiente en el disco) y tomar la instantánea. Cuando finalmente se toma la instantánea, el sistema DB vuelve al modo RW. Esto generalmente requiere solo unos segundos para completar 1-5 segundos según nuestra propia experiencia. Durante ese tiempo, el sistema de base de datos aún está disponible para lectura, por lo tanto, solo hay una pequeña falla para las escrituras que se pueden abordar fácilmente desde la capa de la aplicación simplemente retrasando algunas escrituras cuando recibe un mensaje RO del servidor de la base de datos (continuará). ..

Ahora, la cuestión es cómo lograr lo anterior para cada sistema de base de datos y sistema operativo.

Como se dijo, existen algunos servicios de ayuda que lo harán por usted y pueden llevar a cabo una lógica más sofisticada que minimizará el tiempo de quiescing, pero siempre habrá un tiempo de quiescing mínimo. Como se indicó, esto se puede abordar desde la capa de aplicación.

¿Qué sucede si tengo un sistema de base de datos que no ofrece ningún servicio auxiliar para lograr la pausa controlada del servicio?: puede hacerlo por su cuenta con la ayuda de un script a través de ©VMWare Tools. Este script manejará tres eventos: FREEZE (congelado), THAW (descongelado o deshielo) y FREEZEFAIL (fallo en congelado)

Versión de script para Windows:

Cree el directorio: C:\Program Files\VMware\VMware Tools\backupScripts.d

Cree un archivo dentro de él y ejecute el código a continuación adaptado a su propio sistema de base de datos, estamos usando un código adecuado para usar con MariaDB o MySQL. Los scripts en el directorio anterior se ejecutarán en orden alfabético.

FREEZE es el evento que se ejecutará justo antes de tomar la instantánea
THAW es el evento que se ejecutará al terminar de tomar la instantánea
FREEZEFAIL es el evento que se ejecutará cuando no se pueda tomar la instantánea.

@echo off if "%~1" == "" goto USAGE if %1 == freeze goto FREEZE if %1 == freezeFail goto FREEZEFAIL if %1 == thaw goto THAW :USAGE echo "Usage: %~nx0 [ freeze | freezeFail | thaw ]" goto END :FREEZE set PATH=C:\Program Files\MariaDB 10.6\bin\ mysql -uroot -p"yourpassword" -e "FLUSH TABLES WITH READ LOCK;SET GLOBAL read_only = 1;" goto END :FREEZEFAIL set PATH=C:\Program Files\MariaDB 10.6\bin\ mysql -uroot -p"yourpassword" -e "SET GLOBAL read_only = 0;UNLOCK TABLES;" goto END :THAW set PATH=C:\Program Files\MariaDB 10.6\bin\ mysql -uroot -p"yourpassword" -e "SET GLOBAL read_only = 0;UNLOCK TABLES;" goto END :END


Lo que se explica aquí es básicamente el mismo concepto que se aplica para hacer una copia de seguridad coherente de un servidor de base de datos en ejecución.
Existen algunos comandos SQL compuestos como FLUSH TABLES FOR EXPORT que básicamente consisten el realizar FLUSH + SET en un commando más corto. En el ejemplo hemos mantenido los dos comandos diferenciados para hacer la lógica más fácil de entender.

Daniel J. García Fidalgo
33HOPS