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.