Máquinas virtuales y gran carga de trabajo de E / S, ¿alguna vez es sensata?

14

He visto en numerosos servicios de virtualización (Azure) y productos (vmware, kvm, hyperv) E / S y paradas del sistema bajo una gran carga de trabajo de E / S.

Mis preguntas son:

  • ¿Alguna vez es sensato usar una solución virtualizada al realizar cargas de trabajo pesadas de E / S?
  • ¿Cuáles son las mejores prácticas en torno a este tipo de cosas?
  • ¿Qué causa estos problemas? ¿Hay cuellos de botella bien conocidos en el sistema o es solo una cuestión de contención excesiva?
bryan hunt
fuente
Documento de investigación relevante de IBM . También consideraría el uso de contenedores, por ejemplo, Docker. Del documento: "Los contenedores también pueden eliminar la distinción entre IaaS y los servidores no virtualizados" bare metal "[...] ya que ofrecen el control y aislamiento de las máquinas virtuales con el rendimiento de bare metal".
oleksii
1
1. ¿Qué investigación has hecho? Esperamos que haga una gran cantidad de investigación antes de preguntar. Mostrar su investigación ayuda a otros, y ayuda a las personas a darle mejores respuestas. Consulte serverfault.com/help/how-to-ask y el centro de ayuda . 2. Esta pregunta es bastante amplia, posiblemente demasiado amplia para este sitio. El consejo estándar es: una pregunta por pregunta. 3. Este sitio no es adecuado para preguntas que requieren opinión. ¿Puedes preguntar algo más específico y más objetivamente responsable que las "mejores prácticas en torno a este tipo de cosas"?
DW
1. 10 años ejecutando varias máquinas virtuales, kvn, xen, virtualbox, amazon, azure, hyperv. He encontrado que el rendimiento es generalmente desastroso, pero hay tanta exageración y capital de riesgo flotando alrededor de esa ortodoxia actual de TI que todo debe ser virtualizado. Preguntándome si era solo yo, o si otros profesionales de operaciones también sienten cierto escepticismo.
Bryan Hunt
2
Si descubrió que el rendimiento es GENERALMENTE desastroso, luego de 10 años de trabajar con la virtualización, es hora de aceptar la derrota como administrador y buscar algo que pueda hacer, cuando el resto del mundo no tiene problemas para hacerlo. En serio, creo que dramatizas aquí. O nunca se da cuenta de que la virtualización necesita comprar un subsistema IO decente. Siempre me parece horrible cuando las personas cargan más de 10 máquinas virtuales, en un disco de escritorio y se quejan de la velocidad de E / S.
TomTom
Es más una observación. No siempre tengo algo que decir en la solución elegida. Soy ops. Solo mantengo todo lo que me arrojan en funcionamiento.
Bryan Hunt

Respuestas:

19

¿Alguna vez es sensato usar una solución virtualizada al realizar cargas de trabajo pesadas de E / S?

Sí, muy sensato, de hecho, para la mayoría de las organizaciones ahora lo virtual es lo predeterminado y hacer cosas en cajas físicas es la excepción. Tenemos más de 100k máquinas virtuales de todas las formas y muchas de ellas son> 40k IOPS sin ningún problema.

¿Cuáles son las mejores prácticas en torno a este tipo de cosas?

La clave aquí no es si está virtualizado o no: es comprender bien sus necesidades de E / S y combinar los recursos de almacenamiento virtual. Es así de simple, si sabes lo que necesitas / quieres y tienes el presupuesto para combinarlo con tus sistemas de almacenamiento, entonces la capa de virtualización realmente juega muy poco o nada, a menos que REALMENTE estés presionando cosas por supuesto (estoy hablando decenas / cientos de millones de PIO).

¿Qué causa estos problemas? ¿Hay cuellos de botella bien conocidos en el sistema o es solo una cuestión de contención excesiva?

La falta de comprensión o de tratar de hacer demasiado con muy pocos recursos de almacenamiento, eso es lo que normalmente causa problemas a las personas.

Chopper3
fuente
10

¿Alguna vez es sensato usar una solución virtualizada al realizar cargas de trabajo pesadas de E / S?

¿Un servidor de base de datos extrae regularmente IO aleatorio de 1 gb / segundo? Ten uno aquí.

O un servidor de archivos virtual que entrega hasta 600mb / segundo a un clúster HPC. Ese se está ejecutando 8 Velicoraptors en un Raid 10, dedicado.

¿Cuáles son las mejores prácticas en torno a este tipo de cosas?

Proporcione mucha IO. Creo que esta máquina virtual SQL tiene alrededor de 8 o 10 SSD dedicadas.

¿Qué causa estos problemas? ¿Hay cuellos de botella bien conocidos en el sistema?

La gente no hace matemática básica. Si el subsistema IO no es capaz de manejar la carga, tampoco lo hará bajo virtualización. Necesita MUCHA E / S, luego proporcione un subsistema de almacenamiento dedicado del tamaño adecuado.

TomTom
fuente
10
"Proporcione una gran cantidad de IU" - probablemente quiso decir IO
oleksii
2

Además del concepto básico de matemática y de que aún necesita las mismas E / S que no virtualizadas, también hay QOS / priorización. La mayoría de las plataformas de virtualización ofrecen al menos un soporte básico para esto, ayudará mucho para evitar que la máquina virtual de desarrollo que se porta mal se detenga en su base de datos de producción.

Milo de Vries
fuente
1
Si. Necesita 5000IOPS, entonces un disco duro con 350 no lo cortará. Cargue más vms en el mismo disco y no, no funcionará mágicamente. Siempre me sorprende la cantidad de personas que ignoran las matemáticas básicas.
TomTom