¿Ejecutar permanentemente en una instantánea VMWare es malo para el rendimiento?

18

Entiendo que el VMWare KB desaprueba las instantáneas de larga duración debido principalmente a dos cosas (en mi opinión)

  • Tomar toneladas de instantáneas puede llenar el almacén de datos. Las instantáneas son simplemente archivos delta. Digamos que tiene un VMDK de 50 Gig, casi lleno, y toma una instantánea. En su instantánea, voltea cada bit. Su archivo delta también tendrá unos 50 GB. Instantánea de nuevo, voltear los bits, otro archivo delta 50 Gig. Estos pueden salirse de control rápidamente.

  • Cometer grandes instantáneas conlleva riesgos. Al consolidar las instantáneas, está escribiendo los cambios delta en el VMDK original. Esto lleva tiempo y conlleva el riesgo de que si sucede algo, simplemente destruya su VMDK.

Sus advertencias parecen tener sentido lógico.

Dicho esto, ¿es inherentemente malo ejecutar mi máquina permanentemente fuera de una instantánea VMDK? Quiero hacer que mi árbol sea el siguiente:

  • Base
    • Snap1
      • Snap 2
      • Estás aquí

Los Snap 1 y 2 se tomarán inmediatamente después de instalar y aprovisionar el sistema base. Estas son máquinas que planeo actualizar con frecuencia, así que simplemente haré que mi árbol se vea así:

  • Base
    • Snap1
      • Estás aquí
      • Snap 2

Eliminar Snap2 y recrear Snap2.

No puedo ver cómo esto podría tener implicaciones por las siguientes razones:

  • Como simplemente instalé una imagen base y tomé mis deltas inmediatamente después de que no hay forma de que pueda llenar el almacén de datos. Suponiendo que mi imagen base es de solo 10 GB (en un disco de aprovisionamiento delgado de 50 GB), incluso si mi delta se voltea cada bit, el máximo de mi uso total podría ser 60 GB (VMDK base de 10 GB que está bloqueado + 50 GB de delta en el archivo VMDK de instantánea). Esto supone que no creo más instantáneas.

  • Como mi caso de uso no requiere la consolidación de las instantáneas, no corro el riesgo de errores al consolidar mis deltas. Cuando vuelvo a Snap1 y elimino Snap2, todo el delta que residía en Snap2 simplemente se elimina.

  • La carga de almacenamiento es exactamente la misma, por lo que debería recibir los mismos IOPS. Entiendo que algunos archivos (principalmente archivos del sistema) existirán en el VMDK original y otros (todo después de la base) residirán en el delta, pero no veo cómo le importaría a ESXI. Todos los archivos están en el mismo almacén de datos físico, por lo que el rendimiento debe ser equivalente a hacer referencia a todo en el VMDK original sin instantáneas.

¿Alguna idea? ESXI 5.5 con el almacén de datos siendo RAID'd DAS.

No tengo una licencia de vCenter, por lo que la plantilla y la clonación están fuera de la mesa.

RESULTADOS DE LA PRUEBA

Hoy llegué temprano para hacer algunas pruebas. Aquí están los resultados. Hay una penalización de rendimiento, pero no estoy seguro de por qué.

Antes de la instantánea: Antes de las instantáneas

Después de la instantánea: Después de tomar fotos

VM_Storage_Inception
fuente
No es seguro, a medida que pasa el tiempo, las instantáneas divergirán cada vez más. Finalmente, serán copias esencialmente diferentes. Después de que no ahorre mucho disco al capturarlos, convierta la instantánea a un volumen completamente separado. ¿Cómo? Normalmente, uso dd de una tercera VM, pero sobre todo estoy casi crucificado aquí por opiniones tan heréticas, como esta. :-) Pero: funcionará y será efectivo .
peterh - Restablece a Mónica el
@ PeterHorvath - Eso es lo que me encanta escuchar. Soluciones inteligentes, extravagantes, efectivas y básicas. Si no le importa, ¿podría escribirme algo sobre lo que hace en pastebin o algo así? ¿DD DD el VMDK y la instantánea juntos?
VM_Storage_Inception
Si necesitaba hacer eso con más frecuencia, lo hice con un script. Pero no es el caso, y en la mayoría de los casos ni siquiera uso instantáneas, porque son lentas.
peterh - Restablece a Mónica el

Respuestas:

17

Sí, hay implicaciones de rendimiento para las instantáneas de larga duración. Hay implicaciones aún mayores para consolidar VMDK delta de nuevo al archivo de disco original. Esto puede causar falta de respuesta en el sistema operativo de su VM u otro comportamiento indeseable.

VMware tiene una funcionalidad de creación de plantillas y clonación integrada en vCenter. Necesita una licencia de vSphere Essentials de $ 600 para habilitar esto.

Puede crear una VM a su gusto y luego clonarla en una plantilla. Esa plantilla se puede utilizar para generar nuevas máquinas virtuales a partir de una imagen "Golden Master".

ingrese la descripción de la imagen aquí

Esto le permite tener un "estado limpio" pero también crear máquinas virtuales permanentes o de larga duración a partir de esa imagen maestra. No se necesitan instantáneas.

ewwhite
fuente
Interesante, lo investigaré y veré cómo funciona. Desafortunadamente, no tengo una licencia de vCenter y preferiría que mi org shell no supere los $ 600 si no hay implicaciones de rendimiento para las instantáneas que se utilizan en la forma que describo. Además, la plantilla y la clonación no parecen ser diferentes a tomar un OVA y volver a implementarlo. Eliminar las instantáneas parece mucho más rápido y no puedo ver lógicamente cómo habría implicaciones de rendimiento incluso si no es el "método oficial aprobado por VMWare".
VM_Storage_Inception
Para responder a su edición, ¿podría señalarme un artículo o explicar cuáles serían las implicaciones de rendimiento? No puedo ver cómo podría suponerse que los uso como lo describo. Además, nunca volvería a consolidar las instantáneas en el VMDK original.
VM_Storage_Inception
Supongo que estoy tratando de entender por qué insistes en diseñar alrededor de una función que debe usarse para acceso a corto plazo.
ewwhite
@VM_Storage_Inception: casi suena como si quisieras el enfoque de un hombre pobre sobre el difunto Administrador de Laboratorio de VMWare.
TheCleaner
55
A veces, comprar la solución correcta tiene sentido. Ha invertido más esfuerzo y horas de trabajo preguntando sobre una solución alternativa que simplemente pagando por una licencia de vSphere Essentials ($ 600), lo que le daría una opción de plantilla / clonación compatible.
ewwhite
4

La respuesta de ewwhite es correcta, pero solo para ampliar un poco más o la penalización de rendimiento, considere el siguiente escenario:

Creas una VM. Una lectura virtual de vmdk toma una lectura de disco físico del mismo tamaño. Bastante sencillo.

Ahora imagine que toma una instantánea de la VM. Ahora, por cada lectura virtual, incurrirá en 2 lecturas físicas, una del vmdk base y otra del vmdk delta, porque necesita información de ambas para obtener el estado actual. Ahora tiene el doble de lecturas del disco físico.

Para dos instantáneas, está haciendo tres veces las lecturas, y así sucesivamente. Si tiene muchas instantáneas, puede ver cómo esto puede ser una penalización de rendimiento bastante significativa. No necesariamente se traduce en un rendimiento n veces peor (debido al almacenamiento en caché, secciones que no se han cambiado, etc.), pero no es una buena práctica.

tfrederick74656
fuente
Estoy casi seguro de que las instantáneas usan una tabla de "qué bloque está en qué archivo". Por lo tanto, leer un solo bloque solo dará como resultado la lectura de un bloque del archivo apropiado. Por supuesto, leer varios bloques puede resultar en acceder a varios archivos, lo que significa una penalización por mover los cabezales de disco si no está ejecutando desde un SSD, pero el número total de accesos de bloque de disco no debería cambiar.
Guntram Blohm apoya a Monica el
1
Según tengo entendido, las instantáneas solo almacenan los cambios del disco original. Si almacena el archivo A, tome una instantánea, luego cambie el archivo A nuevamente, solo los cambios en ese archivo se escriben en la instantánea. Por lo tanto, debe leer tanto el VMDK original como la instantánea para obtener el archivo completo. De lo contrario, cada instantánea sería simplemente una copia completa del disco original, que no lo son.
tfrederick74656
eso puede ser correcto, pero la cantidad total de bloques que necesita leer permanece igual (por ejemplo, 10 bloques de la instantánea y 100 del disco base). ESXi primero comprueba las instantáneas existentes para los bloques necesarios hasta que termina en la instantánea correcta (o el disco base). Puede haber una penalización menor porque el sistema probablemente omitirá esa parte del recorrido de la instantánea por completo cuando no haya ninguna instantánea. Además, un archivo de instantánea de larga ejecución probablemente sufrirá una fragmentación severa.
Dirk Trilsbeek
Un sistema de instantánea de disco virtual que hace N lecturas para N instantánea sería una implementación muy estúpida. Dudo que así se implemente en VMWare. Se podrían realizar optimizaciones simples simplemente creando un archivo de índice que almacene en qué archivo de disco se encuentra cada bloque de la unidad emulada. Supongamos que tiene un disco virtual de 512GB con un tamaño de bloque de 4kB, solo necesita un índice de 64 MB para determinar en tiempo constante cuál de hasta 16 archivos de disco virtual contiene un bloque.
Lie Ryan
1
Según las respuestas en serverfault.com/questions/430138, tengo que estar en desacuerdo. Siempre he pensado en las instantáneas como el resultado de la aritmética binaria, no solo como una colección de datos nuevos. Entonces, si tiene bits 01010101 en su VMDK base, toma una instantánea, luego cambia esos bits a 10101010, su delta contendrá 11111111 (lo que indica que cada bit en el archivo original cambió, NO el nuevo valor de 10101010). Por mucho que esté de acuerdo con el comentario anterior, los VMDK son supuestamente archivos sin formato. ¿Dónde se almacenaría el índice? Nunca he visto esto mencionado en ningún pub de tecnología VMWare.
tfrederick74656
0

Las instantáneas de VMware ESX están destinadas para uso a corto plazo.

El uso prolongado y las E / S intensas pueden causar congelaciones de VM. Si tiene un caso cuando escribir IO es más grande / más rápido que la consolidación de instantáneas, ESX congelará la VM para proteger los datos. Con el tiempo, las instantáneas se fragmentan y ESX realiza la consolidación interna, puede experimentar congelaciones periódicas.

Puede realizar plantillas de VM manualmente a través de ssh. Copie la carpeta VM que contiene vmdk, vmx, etc. a una carpeta nueva. En el archivo vmx de la VM recién copiada, cambie el UID y la dirección MAC.

VMware tiene un producto, Linked Clone, que es lo mismo que está intentando hacer. Y dicen que tiene problemas potenciales de rendimiento. En la práctica, remasterizarás las máquinas virtuales después de un tiempo. https://www.vmware.com/support/ws5/doc/ws_clone_typeofclone.html

dario
fuente