Está en la página 1de 4

Alineamiento de particiones, en discos para bases de datos SQL Server

Son muchos los factores que entran en juego, a la hora de conseguir buenos rendimientos, en la entrada y salida de los discos: factores como el nmero, tamao y velocidad de los discos, tamao de la unidad, si los discos estn dedicados, compartidos, o son virtuales, los niveles de RAID, la velocidad del bus, almacenamiento (SAN) as como las configuracin de adaptadores (HBA), versiones de los controladores, carga de trabajo, un punto importante que frecuentemente se pasa por alto es la alineacin en las particiones de disco. La mala o errnea configuracin del almacenamiento, para el software de Microsoft SQL Server, produce penalizacin en los tiempos de I/O (entradas y salidas en disco). El no realizar una alineacin de particin correcta puede causar una degradacin del rendimiento. La alineacin de la particin del disco es un requisito para las particiones/discos/volumenes que exigen un alto rendimiento, para los que se crearon dispositivos de disco en RAID en versiones anteriores a Windows Server 2008, donde era necesario aplicar dicho alineamiento. Hoy da, gracias a Windows Server 2008, se crea un desplazamiento inicial en las particiones con un tamao suficiente (1024kb) para que queden alineados, casi con toda probabilidad (esto se tocar en detalle mas adelante) En ocasiones se piensa errneamente que el alineamiento es til slo para Microsoft Exchange Server. De hecho, la alineacin de particin es importante para todos los servidores de los cuales se espera un alto rendimiento, especialmente de SQL Server.

Datos necesarios para una correcta alineacin


La unidad fundamental del almacenamiento de los datos en SQL Server es la pgina. El espacio en disco asignado a un archivo de datos (.mdf o .ndf) de una base de datos se divide lgicamente en pginas numeradas de forma contigua de 0 a n. Las operaciones de E/S de disco se realizan a nivel de pgina. Es decir, SQL Server lee o escribe pginas de datos enteras. El tamao de pgina es de 8 KB. Esto significa que las bases de datos de SQL Server tienen 128 pginas por megabyte.

Starting Partition Offset


Starting Partition Offset, es el desplazamiento inicial en la particin del volumen, que garantice la omisin de asignacin de pginas de datos en n sectores ocultos (creados por el hardware de almacenamiento) al principio de los volmenes. El valor de Starting Partition Offset, nos da el tamao exacto o superior de la Partition Offset, esta cifra representa el tamao de los sectores ocultos (creados por el hardware de almacenamiento) al principio de la particin, donde se alberga informaciones tales como, la tabla de particiones que localizan la ubicacin fsica de los diferentes volmenes, la famosa firma del disco y el cdigo mquina que se encarga de recibir el control de la BIOS tras el POST e invoca el cdigo del Boot Sector de la particin que est activa, que ser quien comience a cargar los binarios del sistema operativo. La primera particin, donde albergar las pginas de datos no comienza inmediatamente despus, en el segundo

sector, sino que se suele desplazar un nmero.

Es necesario conocer el valor de recomendacin de Starting partition Offset a la hora de alinear las particiones. El hardware reporta un nmero de sectores ocultos iniciales (en muchos casos 63) que hace que sistemas Windows Server 2003 alineen incorrectamente la particin basndose en este dato. Si vuestro proveedor de hardware no tiene ninguna recomendacin sera deseable conocer el tamao de estos sectores ocultos (hidden sectors) para tomar una decisin. Por este motivo, se ha creado para las particiones un desplazamiento inicial, para sistemas Windows Server 2008, con un tamao suficiente (1024kb), garantizando la no utilizacin de los sectores ocultos, para que queden alineados los discos que forman esas particiones, casi con toda probabilidad. Para versiones Windows Server 2003 y anteriores, Definir el desplazamiento inicial a 32 KB o incluso a 64 KB, suele ser este ltimo, el mnimo ms comn, vlido para la particin inicial de desplazamiento para SQL Server debido a las correlaciones ms frecuentes de discos. Windows Server 2008 por defecto tiene la alineacin a 1024 KB (es decir, 1.048.576 bytes). Este valor proporciona una solucin normalmente buena. Se correlaciona bien con tamaos tales como 64 KB, 128 KB y 256 KB, as como los valores de uso menos frecuente de 512 KB y 1024 KB. Garantizando la omisin de asignacin de datos a estructuras de sectores ocultos creados por el hardware de almacenamiento.

Stripe_Unit_Size
Stripe_Unit_Size es la unidad mnima de asignacin en la escritura en banda (En el caso de una Cabina, donde se asignan varios discos o porciones de varios discos a un Volumen, se balancea la escritura/lectura en una serie de discos, cada escritura/lectura por disco tiene un tamao mnimo, ese es el dato que necesitamos conocer. Los tcnicos dedicados al almacenamiento o proveedor del mismo, pueden proporcionar este dato. Debera ser mltiplo de 8, ya que 8 Kb es el tamao de pgina, y de esta forma asegurar la inclusin de pginas completas, en la unidad mnima de asignacin en la escritura en banda (Stripe_Unit_Size). De esta forma, se intenta garantizar pginas de datos completas, dentro de un mismo posicionamiento de la cabeza lectora en disco, sin que la ltima pgina quede fragmentada al final y al principio de dos posicionamientos, evitando de esta forma, el segundo posicionamiento si no fuera necesaria la lectura de mas pginas de datos.

Partition Offset, File Allocation Unit Size, and Stripe Unit Size
Hay dos reglas, que se cumplen para una correcta alineacin de discos. Los resultados de los clculos siguientes han de dar un valor entero:

Partition_Offset Stripe_Unit_Size Stripe_Unit_Size File_Allocation_Unit_Size

De las dos reglas anteriores, la primera es mucho ms importante para conseguir un rendimiento ptimo. Como nota, comentar que el File_Allocation_Unit_Size, se puede especificar explcitamente a la hora de formatear, un tamao de 64 KB, valor mximo permitido en NTFS (64 KB), que se recomienda por ejemplo para los volmenes que vayan a almacenar bases de datos de Exchange o SQL.

Ejemplo de escenario con desalineacin en los discos


Dada una particin con desplazamiento inicial Starting Partition Offset de 32.256 bytes (31,5Kb) y con un tamao de escritura en banda Stripe Unit Size de 65.536 bytes (64 Kb), el resultado de Partition_Offset Stripe_Unit_Size es de 0.4921875, no es un nmero entero, por lo que se consideran que los discos no estn alineados.

Ejemplo de escenario con alineacin en los discos

Dada una particin con desplazamiento inicial Starting Partition Offset de 1048576 bytes (1Kb) y con un tamao de escritura en banda Stripe Unit Size de 65.536 bytes (64 Kb), el resultado de Partition_Offset Stripe_Unit_Size es exactamente 8, un numero entero exacto, lo cual se puede decir que la alineacin es correcta. A modo de ejemplo en estudios realizados, sobre rendimiento con accesos a I/O en bases de datos de SAP sobre SQL Server, usando servidores de 8-cores y 16GB de memoria y sobre cabinas de almacenamiento EMC Symetrix SAN, ajustando el Stripe_Unit_Size se han obtenido mejoras de rendimiento de: Con Stripe_Unit_Size a 8 KB se obtienen mejoras del 18% Con Stripe_Unit_Size a 64 KB se obtienen mejoras del 26% Con Stripe_Unit_Size a 256 KB se obtienen mejoras del 23%. Frente a Volmenes de discos, no alineados.

Consultar el estado de los actuales discos


La sintaxis del comando WMIC mas utilizada para sacar todos los datos del disco es la siguiente: wmic partition get BlockSize, BootPartition, DeviceID, DiskIndex, HiddenSectors, NumberOfBlocks, StartingOffset, Name, Index Pero se puede sacar ms datos con la multitud de sintaxis que tiene el comando, mirndole la

ayuda con: wmic partition get /? Se puede sacar mucho mas. Y para profundizar en sacar ms datos detallados de los discos lo podemos hacer con l: fsutil fsinfo ntfsinfo letra de unidad D: por ejemplo.

Crear particiones alineadas en nuevos discos asignados.


Cuando creamos una particin sobre una LUN con Windows Server 2008, Windows Vista o posteriores, ya se incluye por defecto un offset de 1 MB (1048576 bytes). Esto produce un alineamiento automtico para casi todos los Stripe Sizes presentes en los sistemas de almacenamiento, ya que 1 MB es un mltiplo de 64 KB, 128 KB, 256 KB y 512 KB. No obstante siempre es posible afinar o incrementar dicho valor exactamente igual que lo haremos en Windows Server 2003, o incluso podemos configurndolo desde el registro. En Windows Server 2000 y Windows Server 2003 usaremos las herramientas DISKPAR y DISKPART. Puede actualizar la versin de diskpar en su Windows Server 2003, desde: http://support.microsoft.com/kb/923076/en-us y para alinear particiones puede usar diskpar.exe: http://technet.microsoft.com/en-us/library/bb643097(EXCHG.80).aspx y http://technet.microsoft.com/en-us/library/bb643096(EXCHG.80).aspx Ejemplo para alinear una particin de discos utilizando 64 KB de E/s Usando el comando Diskpart: Aling = N es el nmero de kilobytes (KB) desde el principio del disco al inicio de alineacin Starting Partition Offset. Size = N se especifica en megabytes (MB). Si no se especifica ningn tamao, la particin se extender para todo su tamao. Por ejemplo, "align = 64 size = 1000" es igual una alineacin de 64 KB de E/s para un tamao de particin de 1000 MB (1 GB). Posibles ejemplos: Diskpart Select disk 0 Create partition primary align=64 size=10000 Create partition primary align=64 size=40000 Create partition primary align=64

También podría gustarte