Las opiniones reflejadas en este Blog son personales. La información se proporciona "como está" sin garantías de ninguna clase, y no otorga ningún derecho.
Hola
El diseño del almacenamiento para soluciones de virtualización es un tema ciertamente importante, y muy a menudo recibimos consultas acerca de cómo llevar a cabo el diseño de los “datastores” que albergarán máquinas virtuales, y en particular sobre los Cluster Shared Volumes. Tratamos el tema del funcionamiento y otras consideraciones de los CSVs en este post:
y esta es una buena guía al respecto:
Recapitulando algunos puntos de estos artículos, y añadiendo algunos otros:
Límites
Rendimiento
¿Cuales son los parámetros que pueden afectar al rendimiento de un CSV?. Pues básicamente los mismos que afectan a cualquier volumen que usemos para almacenar datos, sea DAS, NAS o SAN, pero con la peculiaridad adicional de que cada una de las máquinas virtuales almacenadas en el mismo contribuirá con su propio patrón de IO. Este problema no es en realidad específico de los CSVs, sino de cualquier otro volumen que almacene varias máquinas virtuales. Sin embargo, en el caso de los CSVs, serán varios hosts los que estarán generando carga de trabajo sobre el sistema de almacenamiento subyacente de manera simultánea.
Resumiendo, estas son cosas que afectan al rendimiento de un CSV.
http://msdn.microsoft.com/en-us/library/cc767961.aspx Choosing a cluster size. Choose a volume's cluster size based on the average type and size of file that the volume will store. Ideally, the volume cluster size is evenly divisible by the average file size (rounded to the nearest kilobyte). This ideal cluster size minimizes disk I/O transaction overhead and wasted disk space. For example, suppose you're creating a new NTFS volume that will store several files of about 6KB each in size. Format the volume with a 2KB cluster size, because the average file will fit evenly into three clusters. What if the average file size is about 16KB? In that case, a 4KB cluster size will provide the best performance, because it's evenly divisible into 16KB and requires only half the cluster allocations that the same file would require using 2KB clusters. Why not take this process one step further and use an 8KB or 16KB cluster size? These values are valid alternatives and might yield additional performance benefits; however, using cluster sizes greater than 4KB has several potentially negative side effects. For example, when you use cluster sizes larger than 4KB, disk-defragmentation utilities can't defragment the volume, you can't use NTFS file compression on the volume, and the amount of wasted disk space increases because user data files stored on the volume don't end evenly on cluster boundaries.
http://msdn.microsoft.com/en-us/library/cc767961.aspx
Choosing a cluster size. Choose a volume's cluster size based on the average type and size of file that the volume will store. Ideally, the volume cluster size is evenly divisible by the average file size (rounded to the nearest kilobyte). This ideal cluster size minimizes disk I/O transaction overhead and wasted disk space. For example, suppose you're creating a new NTFS volume that will store several files of about 6KB each in size. Format the volume with a 2KB cluster size, because the average file will fit evenly into three clusters. What if the average file size is about 16KB? In that case, a 4KB cluster size will provide the best performance, because it's evenly divisible into 16KB and requires only half the cluster allocations that the same file would require using 2KB clusters. Why not take this process one step further and use an 8KB or 16KB cluster size? These values are valid alternatives and might yield additional performance benefits; however, using cluster sizes greater than 4KB has several potentially negative side effects. For example, when you use cluster sizes larger than 4KB, disk-defragmentation utilities can't defragment the volume, you can't use NTFS file compression on the volume, and the amount of wasted disk space increases because user data files stored on the volume don't end evenly on cluster boundaries.
Como regla general, debemos de pensar que la controladora del host va a leer o escribir los datos en el sistema de almacenamiento en bloques iguales al tamaño del Stripe Size subyacente, independientemente de lo que ocupe el dato. Por otro lado, en entornos virtualizados, con los tipos de datos que manejamos hoy en día, y en virtud del párrafo anterior, parece que tiene sentido formatear nuestros datastores y discos virtuales de datos con tamaños de bloque grandes. Por defecto, un volumen normal del orden de decenas de GB se formatea a 4KB en lugar de a 64K, que es el máximo en NTFS a fecha de hoy.
¿Cuantos CSVs por cluster, y cuantas VMs por CSV?
Pues a la vista de todo lo anterior solo cabe una respuesta. Depende. Personalmente, creo que la respuesta acertada pasa por la estandarización, que nos obliga por necesidad a conocer y manejar los parámetros mencionados anteriormente. Esto, obviamente, deja la libertad de diseñar algo “ad-hoc” si la una solución específica lo requiere.
Una vez establecido este catálogo, iremos presentando CSVs al cluster y llenándolos de máquinas virtuales bajo demanda. De esta forma lograremos trabajar con el almacenamiento de la manera más predecible y ordenada posible. Por ejemplo:
Por supuesto, hay otra manera de abordar el problema. Te dan una LUN de un cierto tamaño, conviertes el volumen en CSV y lo vas llenando hasta que reviente. Si usas discos de crecimiento dinámico, ten por seguro que te enterarás de cuando sucede eso, porque todas las VMs que tengan discos en ese CSV se habrán quedado en estado pausado. No hay problema, porque los CSVs se pueden agrandar en caliente, y siempre puedes hacerlo crecer (ampliando la LUN en la cabina, te vas al nodo que es el owner del CSV y extiendes el volumen con el Disk manager o Diskpart). Pero llegará el momento en que dará miedo ver una cesta tan rebosante, pediremos crear una nueva LUN, y vuelta a empezar. Y luego resultará que “todo va lento”, entre otras calamidades.
Saludos
David Cervigón
Puedo agregar una LUN de un almacenamiento compartido que ya venía siendo utilizada (la LUN) con máquinas virtuales o con otros datos, eso sí, la LUN con formato NTFS a un CSV? Lun con datos pre-existentes?
Hola Fernando
Si, sin problemas. Los otros datos no los podrás usar, ya que los CSVs solo valen para máquinas virtuales. Para usar esas máquinas virtuales luego sería conveniente exportarlas previamente. Posteare en el blog proximamente un par de metodos con sus scripts para hacer esto fácil
Buenísimo, especialmente el último párrafo :D