Muchos de los que administramos infraestructura, nos enfrentamos al problema y degradación del performance de nuestros servidores. En estos casos debemos realizar un análisis minucioso de nuestros servidores para poder identificar los cuellos de botella.

Existen varias herramientas que junto con el performon de Windows nos permite analizar estos datos para identificar si parte de nuestros problemas están siendo ocasionados por los dispositivos de almacenamiento.

1. ARREGLO DE DISCOS

En términos de arreglos de discos lo recomendado para ambientes de producción de alta disponibilidad y transaccionalidad, lo mejor es contar con un RAID 10.

RAID 1+0

Diagrama de una configuración RAID 10.
Un RAID 1+0, a veces llamado RAID 10, es parecido a un RAID 0+1 con la excepción de que los niveles RAID que lo forman se invierte: el RAID 10 es una división de espejos.2
En cada división RAID 1 pueden fallar todos los discos salvo uno sin que se pierdan datos. Sin embargo, si los discos que han fallado no se reemplazan, el restante pasa a ser un punto único de fallo para todo el conjunto. Si ese disco falla entonces, se perderán todos los datos del conjunto completo. Como en el caso del RAID 0+1, si un disco que ha fallado no se reemplaza, entonces un solo error de medio irrecuperable que ocurra en el disco espejado resultaría en pérdida de datos.
El RAID 10 es a menudo la mejor elección para bases de datos de altas prestaciones, debido a que la ausencia de cálculos de paridad proporciona mayor velocidad de escritura.
En términos de performance debemos tener nuestras bases de datos en arreglos de RAID independientes y diferentes para las Data Bases de SQL así:

2. ALINEAMIENTO Y OFFSET DE PARTICIÓN, PARA QUE EVITEMOS DOBLE LECTURA:

Este es un problema que todos los equipos que tiene versiones de Windows anteriores al Windows Vista / Server 2008, sufren.
El offset de partición, representa el sector del disco donde empieza la partición, y su correspondiente incidencia en el resto de los bloques de almacenamiento, y su consecuente efecto en el alineamiento de la partición.
La manera de determinar si el offset hizo que mi particion este o no correctamente alineada a los sectores del disco, es simple.
Se ingresa al “command prompt” del Windows, desde el menú Inicio -> Ejecutar -> cmd
En el se escribe lo siguiente, y luego se presiona Enter:
C:\Windows\System32\wmic partition get BlockSize, StartingOffset, Name, Index
Esto, nos retornara como resultado, los datos del tamaño de bloques, offset, nombre de partición e indice de la misma en el disco.
Lo que se hace a continuación, es dividir el valor devuelto bajo la columna StartingOffset entre 1024. Si el nro. de resultado, es entero, la partición está alineada, de lo contrario, el offset hace que nuestra partición no este alineada con los sectores del disco duro.
Veamos un par de ejemplos.


Tomando como ejemplo, el valor 1048576 de esta captura realizada en un Windows Server 2008, si lo dividimos por 1024 nos da como resultado 1024. Esto quiere decir que la partición está alineada a los sectores del disco duro.
Ahora veamos esta otra captura realizada en un Windows Server 2003.





En este caso, al dividir 32256 entre 1024, tenemos como resultado 31,5. Por esto podemos deducir que la partición en este otro equipo, está desalineada.
¿Cómo influye este problema?

Al no tener la partición alineada, para acceder a la información, en vez de leer el bloque correspondiente, se debe leer además el bloque extra que estamos ocupando en una pequeña porción. Esto no tiene que ver con lógica de acceso a datos ni nada, sino al movimiento físico del cabezal de lectura al sector en el plato del disco duro. Para acceder a una información dentro de este disco desalineado que ocupe 1 bloque lógico, el cabezal debera hacer 2 lecturas porque en realidad consume 2 bloques físicos, mientras que en el caso anterior, solo debera realizar 1 lectura.

En analisis realizados sobre este problema, se encuentran valores bastante altos sobre perdida de performance, y haciendo la comparación:

Disco Alineado = 100%

Disco Desalineado = 60~70% del rendimiento, en comparación a si mismo, si estuviera alineado.

Hablamos de una perdida de rendimiento próxima al 40%.

¿Cómo solucionamos este problema?

Como nos dijeron en ese momento, “fácil, eliminas y creas de nuevo la partición con alguna herramienta en la que puedas determinarle el sector de inicio de la partición”.

Como podrán imaginarse, la solución no es exactamente la más agradable, porque hablamos de sistemas con información delicada, o que necesitan disponibilidad las 24 horas, y rehacer sus discos, normalmente no es una opción. No obstante, si se va a agregar un nuevo servidor al grupo de servidores de su empresa (o un nuevo juego de discos al servidor o al storage), es recomendable que cuide este detalle, antes de empezar a configurarlo correctamente para ponerlo en producción.

Si desean interiorizarse más sobre este problema en particular, no deje de leer la siguiente publicación, que explica en forma bastante amplia los detalles sobre este problema.

3. DATA FILES, TRANSACTION LOG:

Quien no ha creado una base de datos, y ha dejado el transaction log en la misma ubicacion que el archivo de datos? Aquel que este libre de ese hecho, que tire la primera piedra.

Desde el punto de vista de ambientes de producción, ese es un error, principalmente por las características de ambos archivos, ya que lo más recomendable es que los tengamos en almacenamientos separados (sean estos discos o arreglos de discos).

¿Por qué esto?

Los Data Files o archivos de datos MDF, son archivos que sufren de grandes cantidades de lecturas y escrituras aleatorias, en cambio el Transaction Log o log de transacciones LDF, no recibe más que lecturas y escrituras secuenciales.

Es por ello que es recomendable tener los Data Files MDF en un arreglo de discos separado al que contiene el Transaction Log. Para el arreglo de discos que almacene los Transaction Log no es necesario un arreglo complejo, al contrario, un RAID 1 de 2 Discos normalmente bastaría ya que no todas las operaciones en los Data Files son de insert/update/delete que vayan a hacer uso del Log, y en general las ráfagas de lecturas y escrituras secuenciales de los discos son bastante altas.

Obs: al ser RAID 1, la configuración hace que los 2 discos trabajen como 1 solo, no obstante, la velocidad de transferencia sera siempre la más baja de los 2 discos del arreglo, pero esta a la vez, suele ser bastante alta en cualquier disco SAS de la actualidad. (Mayor a los 100 Mb/s).

Leave a Comment