martes, 4 de octubre de 2011

vSphere: Importancia de la alineación de particiones.

El alineamiento de las particiones es un problema conocido en los sistemas de archivos, tanto en servidores fisicos como virtuales. El correcto alineamiento de las particiones en las MVs y de los datastores VMFS, evita la degradación en la performance de I/O, por lo que se considera una buena practica.

Muchos creen que este problema se limita solo al mundo físico, debido a que las VMs no utilizan arreglos RAID sino uno o más discos VMDK, por lo que no requieren de alineamiento de particiones. GRAN ERROR!  A pesar de que las MV no utilicen RAID dentro de su sistema operativo, los archivos VMDK utilizados por las MVs se encuentran montados en LUNs, las cuales SI utilizan RAID.  Recordar que las LUNs en una SAN están formadas por arreglos de discos en RAID.

Importancia del alineamiento de discos en VMware.
Muchos analisis de performance han destacado el hecho de que el apropiado alineamiento de discos para particiones VMFS y sistemas de archivos NTFS mejoran la performance de I/O, asi como reduce la latencia y aumenta el throughput.

VMware reporta que el throughput puede aumentar hasta un 62% (con un promedio de 12%), mientras que la latencia se reduce hasta un 33% (con un promedio de 10%), al contar con un apropiado alineamiento e discos.

En un ambiente SAN, la unidad de hardware más pequeña usada por un Storage SAN para construir una LUN a partir de multiples discos fisicos, es llamado chunk o stripe.  Para optimizar el I/O, los chunks son usualmente mucho más grande que los sectores.  De este modo, una petición de I/O SCSI que intenta leer un sector, en realidad lee un chunk.

Como segunda capa se encuentra el sistema de archivos para máquinas virtuales, o VMFS, el cual está formado de bloques.

Finalmente, la tercera capa es el archivo de discos de la MV (VMDK), y está formado de clusters, debido a que se encuentra formateado con el sistema de archivos NTFS (para el caso de SO Microsoft).

La siguiente figura que tomo prestada desde un articulo de VMware, muestra que una estructura de almacenamiento desalineada puede causar muchas operaciones de I/O adicionales, cuando solo un cluster es leido por el sistema operativo de la MV.


Como la figura muestra, al intentar leer un cluster de disco se podría provocar lecturas en hasta 3 chunks en la LUN de la SAN.

Del mismo modo, la siguiente figura muestra las mejoras en un volumen NTFS alineado apropiadamente con el volumen VMFS y la LUN de la SAN.


Como la figura muestra, al intentar leer un cluster de disco se realizan lecturas en solo 1 chunk en la LUN de la SAN.

Alineamiento de VMFS
Los datastores VMFS estarán siempre alineados si ellos son creados utilizando el vSphere Client.  Por lo anterior, se recomienda evitar el uso del comando vmkfstools para crear un Datastore.

Una partición VMFS alineada utiliza un offset de 128 (64KB) como punto de inicio.  Si se utiliza vmkfstools, la partición utiliza un offset de 63 (por defecto) como punto de inicio, por lo que queda desalineada.

Para verificar la alineación de VMFS, utilizar el comando "fdisk -lu" y asegurar de que el offset efectivamente es 128.



Si desean crear una particion alineada utilizando vmkfstools, o se desea alinear una partición VMFS desalineada, utilizar los pasos detallados en el siguiente LINK, en la sección "Align VMFS to LUN".


Alineamiento de MV
En el sistema de archivos NTFS, la unidad de datos más pequeña es una unidad de asignación o clúster.  Para los discos de datos es posible cambiar el tamaño del clúster, sin embargo, para el volumen de sistema el tamaño del cluster debe ser de 4KB para que el sistema bootee apropiadamente.

Sistemas operativos en arquitecturas x86 crean particiones con un MBR (master boot record) que consume 63 sectores de offset.  Esto se debe al antiguo codigo de las BIOS de los PCs que usaban cilindros, cabezales y sectores para el direccionamiento, en vez de utilizar LBA (logical block addressing).

Como saber si lo discos de la MV están desalineados?  
Recordar en primer lugar que los sistemas x86 utilizan los primeros 63 sectores para el MBR.  Usualmente hay 512 bytes por sector, por lo que 63 sectores corresponde a 32.256 bytes.

Si consideramos que el volumen de sistema en Windows está formateado con un tamaño de cluster de 4KB (4096 bytes) podemos determinar que la partición no se encuentra correctamente alineada, dividiendo los 32.236 bytes contenidos en los 63 sectores, por los 4096 bytes del tamaño del cluster, lo cual NO nos entrega un valor entero (7,875).  La partición no se encontrará alineada con el limite de 4KB a menos que el punto de inicio sea divisible en forma exacta por 4096.

Para alinear la partición, se debiera utilizar un offset de 64KB (65.536 bytes) como punto de inicio, lo cual al dividirlo por el tamaño del cluster (4096 bytes), nos da un valor entero indicando que la partición se encuentra alineada.  Este offset de 64KB coincide además con el offset utilizado en las particiones VMFS al crearlas utilizando el cliente vSphere.

A pesar de que  Windows escribe datos en el disco en clusters de 4KB, Windows XP, 2000 y 2003, en forma incorrecta, comienzan a escribir datos a partir del sector 63 debido a la arquitectura de la MBR (Master Boot Record).  Esto significa, que al momento de escribir datos, parte de estos son escritos en un bloque del datastore VMFS, y los restantes  son escritos en el siguiente bloque.  Esto implica que en cada operación de lectura y escritura, se deben acceder a dos bloques en vez de solo uno, afectando fuertemente la performance.  Esto afecta a cualquier volumen creado en dichos sistemas operativos, a menos que se configure adecuadamente con diskpart.

Se debe destacar que en sistemas operativos Windows Server 2008 y superior, las particiones se encuentran alineadas correctamente por defecto, lo cual no ocurre en versiones anteriores como Windows Server 2003.

En Windows 2008 se utiliza un offset de 1024KB como punto de inicio de una partición de 4GB a 2TB.  Para discos más pequeños, el offset utilizado es de 64KB.  Con esto podemos estar seguros que una partición en Windows 2008 siempre estará alineada. (LINK)

Antes de Windows 2008, las particiones NTFS necesitaban ser alineadas manualmente utilizando la utilidad diskpart.  Aunque el procedimiento es simple, el alineamiento debe ser hecho al momento de crear la partición, antes de que esta sea formateada.  Al intentar ajustar la alineación de particiones posteriormente, toda la data existente en el disco será destruida.

Para sistemas operativos que no se encuentran alineados por defecto, se recomienda trabajar con un Template de una MV cuyas particiones hayan sido alineadas previamente, lo cual permite ahorrar tiempo de implementación de nuevas MVs.

Se debe destacar que alinear el volumen de booteo dentro de una MV, no es recomendado ni requerido.  Esto se debe a que en general, las aplicaciones que tienen un uso de I/O intensivo, son ubicadas en un disco dedicado para esos datos, y no en el disco de booteo, por lo que solo se requiere alinear los discos de datos.

Recomendaciones
Se recomienda alinear los discos de las MVs en las siguientes circunstancias:

  • Al usar Templates de MVs.  Las particiones de Datos debieran estar siempre alineadas
  • Particiones de MVs que tengan un uso intensivo de I/O como FileServers, Bases de Datos, o almacenes de Exchange.

Del mismo modo, no se recomienda alinear los discos en las siguientes circunstancias:

  • Discos de sistema (boot) de una MV, a menos que haya una buena razón para hacerlo.
  • Alinear todas las MV solo por hacerlo.  Se recomienda analizar si existirá una real mejora en la performance luego de alinear los discos, de lo contrario, puede que el esfuerzo involucrado en el proceso no valga la pena.



Links de interes



0 comentarios:

Publicar un comentario