Explicar cómo optimizar Azure Storage para máquinas virtuales de SQL Server
El rendimiento del almacenamiento es un componente esencial de una aplicación intensiva de E/S, como un motor de base de datos. Azure ofrece una amplia gama de opciones de almacenamiento e incluso puede crear una solución de almacenamiento personalizada para satisfacer los requisitos de sus cargas de trabajo.
Azure Storage es una plataforma de almacenamiento seguro y altamente escalable que ofrece una gran variedad de soluciones para satisfacer las necesidades de muchas aplicaciones. Dado que el tema central de este curso son las bases de datos, conocerá los aspectos del almacenamiento de blobs que se pueden aplicar a las cargas de trabajo de SQL Server, que corresponden al almacenamiento de blobs, de archivos y en disco. Tenga en cuenta que todos los tipos de almacenamiento anteriores admiten el cifrado en reposo con una clave de cifrado administrada por Microsoft o por el usuario.
Almacenamiento de blobs: el almacenamiento de blobs es lo que se conoce como el almacenamiento basado en objetos e incluye los niveles de almacenamiento de archivo, de acceso frecuente y en frío. En un entorno de SQL Server, el almacenamiento de blobs se usará normalmente para las copias de seguridad de bases de datos mediante la funcionalidad de copia de seguridad en una dirección URL de SQL Server.
Almacenamiento de archivos: este almacenamiento es en realidad un recurso compartido de archivos que se puede montar en una máquina virtual sin necesidad de configurar ningún hardware. SQL Server puede usar el almacenamiento de archivos como destino de almacenamiento para una instancia de clúster de conmutación por error.
Almacenamiento en disco: los discos administrados de Azure ofrecen almacenamiento en bloque que se presenta a una máquina virtual. Estos discos se administran de la misma manera que un disco físico en un servidor local con la diferencia de que estos se virtualizan. Hay varios niveles de rendimiento dentro de los discos administrados en función de la carga de trabajo. Este tipo de almacenamiento es el que se usa con más frecuencia para los archivos de datos y de registro de transacciones de SQL Server.
Azure Managed Disks
Los discos administrados de Azure son volúmenes de almacenamiento a nivel de bloque que se presentan a Azure Virtual Machines. El almacenamiento a nivel de bloque hace referencia a volúmenes sin procesar de almacenamiento que se crean y se pueden tratar como una unidad de disco duro individual. Estos dispositivos en bloques pueden administrarse dentro del sistema operativo y en el nivel de almacenamiento no hay constancia del contenido del disco. La alternativa al almacenamiento en bloque es el almacenamiento de objetos, en el que los archivos y sus metadatos se almacenan en el sistema de almacenamiento subyacente. Azure Blob Storage es un ejemplo de modelo de almacenamiento de objetos. Aunque el almacenamiento de objetos funciona bien para muchas soluciones de desarrollo modernas, la mayoría de las cargas de trabajo que se ejecutan en máquinas virtuales usarán almacenamiento en bloque.
La configuración de los discos administrados es importante para el rendimiento de las cargas de trabajo de SQL Server. Si va a realizar una migración desde un entorno local, es importante capturar métricas como el promedio de segundos/lectura y de segundos/escritura en el disco desde el Monitor de rendimiento, tal y como se ha detallado anteriormente. Otra métrica que se debe capturar son las IOPS. Para ello, puede usar los contadores de IOPS de escritura y lectura en disco por segundo del objeto SQL Server: Resource Pool Stats, que le muestran cuántas IOPS atiende SQL Server en su punto máximo. Es importante conocer cuáles son sus cargas de trabajo. Querrá diseñar el almacenamiento y la máquina virtual de manera que satisfagan las necesidades de los picos de esas cargas de trabajo sin incurrir en una latencia significativa. Tenga en cuenta que cada tipo de máquina virtual de Azure tiene un límite de IOPS.
Los discos administrados de Azure pueden ser de cuatro tipos:
Disco Ultra: los discos Ultra admiten cargas de trabajo con muchas operaciones de E/S para las bases de datos críticas con baja latencia.
SSD prémium: estos discos son de alto rendimiento y baja latencia y pueden satisfacer las necesidades de la mayoría de las cargas de trabajo de base de datos que se ejecutan en la nube.
SSD estándar: este tipo de discos se ha diseñado para cargas de trabajo de desarrollo y pruebas o servidores web de uso más reducido que realizan una pequeña cantidad de operaciones de E/S y requieren una latencia predecible.
HDD estándar: son adecuados para copias de seguridad y almacenamiento de archivos a los que se accede con poca frecuencia.
Normalmente, las cargas de trabajo de SQL Server de producción usarán discos Ultra o SSD prémium, o bien una combinación de ambos. Los discos Ultra se suelen utilizar cuando se busca una latencia inferior a un milisegundo en el tiempo de respuesta. Por lo general, los discos SSD prémium tienen un tiempo de respuesta en milisegundos de un dígito, pero tienen costos reducidos y más flexibilidad en el diseño. Los SSD prémium también admiten el almacenamiento en caché de lectura, lo que puede suponer una ventaja para las cargas de trabajo de base de datos con muchas lecturas, ya que reduce el número de recorridos al disco. La memoria caché de lectura se almacena en el SSD local (la unidad D:\ en Windows o /dev/sdb1/ en Linux), que puede ayudar a reducir el número de recorridos de ida y vuelta al disco real.
Fragmentación de discos para obtener el máximo rendimiento
Una de las formas de obtener más rendimiento y volumen de los discos de Azure es fragmentar los datos en varios discos. Esta técnica no se aplica a los discos Ultra, ya que puede escalar las IOPS, el rendimiento y el tamaño máximo de forma independiente en un solo disco. Sin embargo, con las SSD prémium, puede ser beneficioso escalar tanto las IOPS como el volumen de almacenamiento. Para fragmentar discos en Windows, solo tiene que agregar el número de discos que le gustaría a la máquina virtual y, a continuación, crear un grupo mediante Espacios de almacenamiento en Windows. No configure ninguna redundancia para el grupo (lo que limitaría el rendimiento), ya que el marco de trabajo de Azure proporciona la redundancia, que mantiene tres copias de todos los discos en la replicación sincrónica para protegerse frente a un error de disco. Al crear un grupo, este tiene la suma de IOPS y del volumen de todos los discos del grupo. Por ejemplo, si ha usado 10 discos P30 de 1 TB cada uno y hay 5000 IOPS por disco, tendrá un volumen de 10 TB con 50 000 IOPS disponibles.
Procedimientos recomendados para la configuración del almacenamiento de SQL Server
Se le recomienda realizar lo siguiente para SQL Server en máquinas virtuales de Azure y para la configuración del almacenamiento:
Cree un volumen independiente para los archivos de datos y de registro de transacciones.
Habilite el almacenamiento en caché de lectura en el volumen de archivos de datos.
No habilite ningún almacenamiento en caché en el volumen del archivo de registro.
Planee un 20 % adicional de IOPS y de rendimiento cuando cree el almacenamiento de la máquina virtual para controlar los picos de carga de trabajo.
Use la unidad D: (el SSD conectado localmente) para los archivos de tempdb, ya que esta base de datos se vuelve a crear al reiniciar el servidor, para que no haya ningún riesgo de pérdida de datos.
Habilite la inicialización instantánea de archivos para reducir el impacto de las actividades de crecimiento de archivos.
Mueva los directorios de registro de errores y archivos de seguimiento a discos de datos.
En el caso de las cargas de trabajo que requieran una latencia de almacenamiento inferior a un milisegundo, considere la posibilidad de usar discos Ultra en lugar de SSD prémium.
Proveedor de recursos de máquina virtual de Azure
Una manera de reducir la complejidad de la creación de almacenamiento para SQL Server en una máquina virtual de Azure es usar las plantillas de SQL Server de Azure Marketplace, que le permiten configurar el almacenamiento como parte de la implementación, tal y como se muestra a continuación. Puede configurar las IOPS según sea necesario y la plantilla realizará el trabajo de creación de los grupos de espacios de almacenamiento en Windows.
Este proveedor de recursos también admite agregar tempdb a la unidad del SSD local y crea una tarea programada para crear la carpeta al iniciarse.