¿Cuáles son las mejores prácticas para ejecutar SQL Server en una máquina virtual?


21

¿Cuáles son las mejores prácticas para ejecutar SQL Server en una máquina virtual? Mis actividades de transacción en línea son muy bajas, pero hay una gran cantidad de procesamiento de datos con el fin de proporcionar datos de informes a múltiples sitios web.


2
¿Dónde se almacenan los discos? en un disco duro local de 5400 RPM? ¿En una SAN con conexiones de fibra y discos de husillo de 15k? Todas las máquinas virtuales en estos días son sobre IO, la CPU no es casi nada en consideración.
jcolebrand

No, no local. Pero no conozco los detalles de la SAN.
JerryOL

2
No puedo agregar comentarios ya que todavía no tengo suficiente reputación, pero [según Microsoft] [1] en 2008 R2 hay poca diferencia de rendimiento entre los discos virtuales fijos y dinámicos. [1]: blogs.msdn.com/b/tvoellm/archive/2009/08/05/…
Terry Bochaton

@Terry, en el futuro, siéntase libre de marcar dicha respuesta y la convertiremos por usted.
jcolebrand

Respuestas:


18

Al igual que con las máquinas físicas, IO es el rey. Habrá un notable IO hit de la virtualización (cuánto de un hit depende de la tecnología que elija), así que asegúrese de no hacer nada que pueda exacerbar esto y dañar aún más el rendimiento de IO.

  • Siempre utiliza un tamaño fijo, no discos virtuales dinámicos, y asegura que las unidades / matrices subyacentes sean suficientes. Los discos virtuales dinámicos tienen menos rendimiento que los de tamaño fijo.
  • Si los datos en las máquinas virtuales no son de misión crítica, active la capacidad de las soluciones de máquina virtual para almacenar en caché las escrituras (mentir efectivamente al sistema operativo invitado sobre cuándo las cosas se escriben físicamente en el disco) para obtener un rendimiento adicional. Esto es útil para una máquina de desarrollo y prueba en la que los datos se reemplazan fácilmente, o las réplicas de solo lectura locales para el maestro que se pueden recrear si experimentan algún problema, pero se recomienda que tales opciones permanezcan apagadas para los sistemas de producción y respaldo como aumentan la posibilidad de pérdida de datos (o peor, corrupción) si la máquina se apaga inesperadamente.
  • Asegúrese de que cada máquina virtual tenga suficiente RAM dedicada para que el conjunto de trabajo normal de cada base de datos se ajuste a la memoria con una buena cantidad de espacio libre para evitar E / S innecesarias. Además, asegúrese de que el hipervisor no extraiga la memoria RAM de las máquinas virtuales en ningún momento (por ejemplo, la mayoría de los productos VMWare pueden hacer esto, lo que le permite ejecutar un conjunto más grande de máquinas virtuales de lo que de otro modo podría hacer en el mismo hardware, pero la degradación del rendimiento puede ser masivo: hay una opción para ajustar o desactivar este comportamiento).
  • Si el host usa matrices RAID5, considere pasar a RAID10. Esto reducirá el espacio disponible pero eliminará los problemas de rendimiento de escritura que pueden ser evidentes con RAID5 (o 6).
  • Para las máquinas virtuales que es probable que vean mucha actividad de E / S, considere darles su propia unidad o matriz, o solo haga que compartan sus unidades / matrices con datos que ve poca actividad.

Por supuesto, si toda su base de datos (y todo lo demás que está ejecutando la máquina virtual) se ajusta a la RAM asignada a la máquina virtual y ve muy poca actividad de escritura, el rendimiento de E / S puede ser un problema mucho menor.

Editar: algunos puntos más:

  • Si utiliza discos virtuales, asegúrese de utilizar el mejor tipo de controlador para el rendimiento. Algunas soluciones de virtualización ofrecen varios tipos de controladores virtuales para una mejor compatibilidad del huésped y puede encontrar algunos menos eficientes que otros debido a las limitaciones de protocolo en el diseño que están emulando y las limitaciones en los controladores del sistema operativo invitado.
  • Si su solución de virtualización ofrece controladores específicos para el controlador de unidad virtual, asegúrese de que su sistema operativo invitado los esté utilizando; estos pueden acelerar la E / S masiva al reducir la cantidad de copias de memoria a memoria y el contexto de host <-> hipervisor <-> invitado interruptores involucrados en algunas operaciones.
  • Los dos puntos anteriores se aplican si está utilizando almacenamiento de red, como recursos compartidos SMB simples o iSCSI también: asegúrese de estar utilizando el controlador de red virtual más eficiente que se ofrece y que su sistema operativo invitado esté utilizando el controlador recomendado para ello, de lo contrario, ambas latencias y el ancho de banda puede ser más limitado de lo que necesita la capa de virtualización.

1
Pues sí y no. ¡Un volumen SAN montado en la VM a través de un iniciador iSCSI será muy rápido!
Gaius

1
@Gaius: buen punto. He agregado una nota con respecto a las vNIC y los controladores, que probablemente sean la fuente de cuellos de botella adicionales en esos casos.
David Spillett

9

1
~ ¿Hay alguna parte de eso que quieras destacar de los artículos?
jcolebrand

2
No. Dado que la virtualización puede ser un tema complejo, le recomendaría que lo lea todo. Realmente no es tanto. Si el OP está buscando una respuesta rápida, probablemente no sea la respuesta correcta.
Eric Humphrey - lotsahelp

Buscaba las mejores prácticas en general. Después de haber movido SQLServer 2000 Standard a una nueva VM, estoy tratando de resolver problemas con sitios web que llaman a procedimientos almacenados que ahora expiran si no están almacenados en la memoria caché; a pesar de que la memoria asignada física y VM es la misma, 4 GB.
JerryOL

1
@JerryOL: asegúrese de que no se permita paginar la RAM asignada a la VM (de lo contrario, asignar 4 Gb a la VM no es lo mismo que tener 4 GB en la máquina física) y si la solución de virtualización que utiliza ofrece diferentes tipos de controladores virtuales se asegura de que se elija el mejor y que el SO huésped utilice el controlador correcto.
David Spillett
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.