¿Agregar montones de unidades a una incursión 0 aumenta el rendimiento?

10

¿Agregar montones de unidades a una incursión 0 aumenta el rendimiento? Sé que dos unidades en una banda rayada generalmente serán más rápidas que una sola unidad, pero ¿notaré una diferencia en el rendimiento entre, por ejemplo, 2 unidades en una banda rayada y 8? ¿Existe un límite general para la cantidad de unidades en la redada antes de que realmente no obtenga más beneficios?

una pregunta similar se ha hecho aquí

¿Agregar más unidades a una matriz RAID 10 aumenta el rendimiento?

pero realmente estoy preguntando si agregar muchas unidades a una incursión 0 tiene mejoras sobre solo agregar, digamos 2 o 4. ¿El rendimiento sigue aumentando?

Peter Cullen
fuente

Respuestas:

11

En teoría, sí, más unidades en una incursión0 conducirían a un mayor rendimiento porque la carga se comparte entre más unidades. Sin embargo, en la práctica, estaría limitado por el ancho de banda del controlador RAID, el rendimiento de la CPU y la memoria y similares. El aumento del rendimiento no sería lineal, es decir, 4 discos no es exactamente el doble de rápido que 2 discos.

En cualquier sistema razonablemente moderno con un controlador de incursión, o incluso usando una incursión de software con linux 'mdadm, el uso de 8 unidades será más rápido que el uso de 2 y no debe ser frenado por el resto del rendimiento del sistema. La CPU, raid y / o controlador de disco, memoria, todo debería poder manejarlo. Es posible que vea un mayor uso de los recursos del sistema a medida que agregue más unidades. Especialmente si usa el controlador SATA integrado en una combinación softraid. Pero nada que realmente obstaculizaría la usabilidad general. Si usa Linux, es posible que desee usar un kernel que se haya configurado sin "prioridad" para que las tareas orientadas al servidor tengan preferencia sobre la capacidad de respuesta del usuario.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

Por supuesto, cuantas más unidades agregues, mayor será la probabilidad de que una de ellas falle y se destruya toda tu incursión. Espero que una raid0 de 8 unidades no dure más de un año o dos, si tienes suerte. Una raid0 de 16 unidades estaría pidiendo problemas y luego consideraría una raid10, todavía sería lo suficientemente rápido y tendrá menos de qué preocuparse.

En cuanto a cuántas unidades maximizarían los recursos de un sistema, no lo sabría a menos que tuviera especificaciones detalladas del sistema. Creo que estarías más limitado por la tasa de fallas, si superas unos 16 discos (prefiero no pensar en eso).

Naturalmente, solo usaría el raid0 para datos que se pueden perder en cualquier momento sin problemas. Funcionaría muy bien para cosas como un servidor de compilación, o espacio de almacenamiento para grandes cálculos científicos. De hecho, en esos escenarios es para lo que solía usar un raid0 y es una excelente manera de exprimir un poco más la vida de un montón de discos más viejos, de menor capacidad y de bajo costo que de otro modo hubieran estado acumulando polvo. Incluso puedes mezclar tamaños, al menos con mdadm.

Si usa mdadm, puede valer la pena considerar usar un raid10 ya que en ciertas configuraciones puede acercarse al rendimiento de un raid0, es decir, el rendimiento de lectura de un raid0 y el rendimiento de escritura mejorado sobre otros niveles de raid (excepto raid0). Obtendrá una mayor redundancia que otros niveles de incursión, con solo una ligera penalización de velocidad en comparación con una incursión0. Eso sería lo mejor de ambos mundos, no lo encuentras tan a menudo.

https://en.wikipedia.org/wiki/RAID#Non-standard_levels

Linux MD RAID 10 proporciona un controlador RAID general que en su diseño "casi" predeterminado es un RAID 1 estándar con dos unidades y un RAID 1 + 0 estándar con cuatro unidades; sin embargo, puede incluir cualquier número de unidades, incluidos números impares. Con su diseño "lejano", MD RAID 10 puede ejecutarse tanto en rayas como en espejo, incluso con solo dos unidades en diseño f2; esto ejecuta la duplicación con lecturas segmentadas, lo que proporciona el rendimiento de lectura de RAID 0. RAID 1 normal, como lo proporciona el software RAID de Linux, no divide las lecturas en bandas, pero puede realizar lecturas en paralelo.

Como se sugiere en los comentarios, mezclar tamaños con mdadm no dará un aumento de velocidad si utiliza todo el espacio en disco en lugar de permitir que el disco más pequeño defina el tamaño de la matriz.

Además, el tiempo de búsqueda no mejorará en una incursión0 e incluso puede volverse un poco más lento. Para una incursión basada en SSD0, el tiempo de búsqueda sería tan pequeño (entre 0.08 y 0.16 ms https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ) no importaría mucho, espero.

aseq
fuente
Si desea mezclar tamaños, no puede aplicar RAID0, al menos para usar todo el espacio que tienen esos discos. Tienes que usar JBOD, que no aumenta el rendimiento.
Tero Kilkanen
Puede mezclar tamaños usando mdadm, es muy flexible, mdadm incluso le permite configurar una incursión de 3 discos10. No esperaría que pueda mezclar tamaños en controladores de banda, son menos flexibles, pero más rápidos.
aseq
1
Verifiqué esto, y si quieres RAID0, entonces el dispositivo más pequeño de la matriz define el tamaño de la matriz completa. Es decir, si tiene unidades de 100 GB, 200 GB y 300 GB, obtendrá una matriz RAID0 de 300 GB y espacio libre de 100 GB y 200 GB para otros fines. En el modo lineal, obtiene la capacidad completa de todos los dispositivos, pero no el rendimiento paralelo.
Tero Kilkanen
1
Eso suena bien, sí.
aseq
2
Con los medios rotativos, ¿no existe también un problema de tiempo de búsqueda versus tiempo de transferencia? Agregar más discos distribuye la cantidad que se lee / escribe en más platos (cada uno tiene que hacer menos == más rápido) pero todos aún tienen que realizar una operación de búsqueda (no se reduce agregando más unidades). Por lo tanto, dependiendo del tipo de operaciones que esté realizando (es decir, pérdida de lecturas pequeñas frente a algunas lecturas grandes), aumentar la velocidad de transferencia (al agregar más unidades) podría marcar una pequeña o gran diferencia.
Molomby
1

Depende de la carga de trabajo, pero en mi humilde opinión, sí, agregar 2 discos adicionales a la matriz de 2 discos existente debería proporcionar un mejor rendimiento general.

Debe darse cuenta de dónde están los cuellos de botella:

  • CPU: cuánto flujo de datos puede manejar la CPU,
  • bus / controlador: cuántos datos puede transportar,
  • SSD / HDD: cuántos datos puede dar / tomar.

Supongamos que hay un RAID de software de Linux, luego agregar dos discos adicionales PUEDE resultar en:

  • ~ tiempo de acceso dos veces más corto a un bloque de datos lo suficientemente grande, lo que resulta en;
  • ~ doble IOPS,
  • ~ doble rendimiento, suponiendo que el controlador tiene suficiente bus y CPU puede manejar el tráfico.

* ~ esto nunca es dos veces mayor en los siguientes factores, siempre menos 10-20%. Parece más o menos lineal. Por favor, no lo trate como una respuesta autorizada, no hice ningún estudio al respecto.

Michal Sokolowski
fuente