¿Calcular IOPS para ZFS RAIDZ es diferente de calcular IOPS para RAID5 y RAID6?

13

Al calcular IOPS para las matrices RAID tradicionales, se podría usar la siguiente fórmula (Prestada de Cómo colgar IOPS v1.3 en Symantec Connect):

Ieffective = (n * Isingle) / (READ% + (F * WRITE%))

Dónde:

  • Ieffectivo es el número efectivo de IOPS
  • Isingle es el IOPS promedio de una sola unidad .
  • n es el número de discos en la matriz
  • READ% es la fracción de lecturas tomadas del perfil de disco
  • WRITE% es la fracción de escrituras tomadas del perfil del disco
  • F es la penalización de escritura RAID :

    RAID Level      Write Penalty
    RAID-0          1
    RAID-1          2
    RAID-5          4
    RAID-6          6
    RAID-10         2
    RAID-DP         2
    

La fórmula es esencialmente una función de:

  • IOPS para cada unidad individual en la matriz
  • El número de discos. Más discos significa más IOPS
  • La penalización RAID para cada operación de escritura.
    • RAID5 y RAID6 requieren más de 4 operaciones de disco para cada escritura. El controlador debe leer el bloque y luego leer los datos de paridad (dos operaciones), calcular los nuevos datos de paridad y luego actualizar el bloque de paridad y actualizar el bloque de datos (Dos operaciones más). RAID6 tiene dos bloques de paridad y, por lo tanto, requiere tres lecturas y tres escrituras. Las matrices RAID5 y RAID6 son, por lo tanto, capaces de tener menos IOPS que RAID1.
    • RAID1 y RAID10 solo requieren 2 escrituras, una para cada disco en el espejo.

Y para ser claros, todo esto proporciona una estimación del rendimiento teórico. Varios controladores y métodos RAID tienen trucos para acelerar algo de esto.

El equivalente de ZFS de RAID5 y RAID6 es RAIDZ y RAIDZ2. Al calcular IOPS para matrices RAIDZ, ¿puedo usar la misma fórmula que utilizo para RAID5 y RAID6, o ZFS tiene trucos especiales para reducir el número de operaciones requeridas para las operaciones de escritura?

¿Hay una fórmula diferente para usar al calcular IOPS para matrices RAIDZ?

Stefan Lasiewski
fuente
1
Gran pregunta Tengo
muchas
1
iops son míticos, pero este documento puede proporcionar una idea. info.nexenta.com/rs/nexenta/images/…
tony roth
IOPS puede ser teórico, pero puede proporcionar una explicación de por qué una matriz RAID10 generalmente superará a una matriz RAID5, dadas las mismas unidades.
Stefan Lasiewski
Una cita notable del documento de Nexenta: "En una configuración RAIDZ-2, un solo IO que ingresa al VDEV debe dividirse y escribirse en todos los discos de datos. Luego debe calcularse la paridad y escribirse en el disco antes de IO podría completarse. Si todos los discos tienen la misma latencia, todas las operaciones a los discos se completarán al mismo tiempo, completando así el IO al VDEV a la velocidad de un disco . Si hay un disco lento con alta latencia en el RAIDZ-2 VDEV, el IO al VDEV no se completa hasta que se completa el IO en la unidad más lenta ".
Stefan Lasiewski

Respuestas:

13

Esto es más fácil de responder ...

Todo se resume aquí: recomendaciones RAID de ZFS: espacio, rendimiento y MTTDL y una mirada más cercana a ZFS, Vdevs y rendimiento

  • RAIDZ con una unidad de paridad le proporcionará el rendimiento de IOPS de un solo disco, pero n-1 veces el ancho de banda agregado de un solo disco.

Entonces, si necesita escalar, escale con el número de vdevs RAIDZ ... Por ejemplo, con 16 discos, 4 grupos de RAIDZ de 4 discos tendrían un mayor potencial de IOPS que 2 grupos de RAIDZ de 8 discos.

Sorprendente, ¿verdad?

Normalmente voy con espejos rayados (RAID 1 + 0) en mis instalaciones de ZFS. Se aplica el mismo concepto. Más pares reflejados == mejor rendimiento.

En ZFS, solo puede expandirse en unidades de un vdev completo. Entonces, si bien la expansión de un conjunto RAID 1 + 0 significa agregar más pares, hacer lo mismo para los conjuntos RAIDZ significa agregar más grupos RAIDZ de igual composición.

ewwhite
fuente
Buen artículo, pero es tan antiguo que la comparación de enlaces de ZFS RAID1 versus RAID5 ("Resultados del modelo de paridad simple" y "Resultados del modelo de paridad doble" faltan). Ratas!
Stefan Lasiewski
RAIDZ con una unidad de paridad le dará el rendimiento de IOPS de un solo disco. Esto es interesante, ¿es un valor constante independientemente de los porcentajes de lectura frente a escritura? Por ejemplo, el rendimiento de RAID5 varía ampliamente según el porcentaje de lectura de versos y escritura. Una matriz de 3 discos de 15K puede variar entre 130IOPS y 500IOPS según la relación de lectura / escritura. Las lecturas del 50% y las escrituras del 50% darán como resultado un rendimiento de IOPS superior al de un solo disco. El uso de más de 3 husillos mejora el rendimiento frente a 1 husillo, ¿correcto?
Stefan Lasiewski
Solo pienso en la escala de vdev y que el rendimiento en las escrituras es igual a 1 disco, independientemente de la composición de ese vdev; espejo, RAIDZ, RAIDZ2, etc. Los discos dentro de los vdevs están ahí para aumentar su capacidad. El número de vdevs se utiliza para construir su rendimiento de trazado de bandas. Las lecturas de vdevs se escalarán con el número de unidades.
ewwhite
1
Tengo mucha experiencia con esto, y puedo confirmar que en la mayoría de las situaciones, RAIDZ NO superará la misma cantidad de discos lanzados en una matriz equivalente RAID5 / 6 tradicional. La mayoría de los arreglos RAID5 / 6 tradicionales obtienen rendimiento IOPS (el que a casi todo el mundo le importa, incluso cuando no creen que lo hagan) a medida que agrega husillos al conjunto RAID, mientras que ZFS no lo hará. A cambio, ZFS no perderá sus datos y no sufrirá el problema del 'agujero de escritura RAID'. Además de todas las instantáneas, clones, compresión, etc. Y el ARC. Y ... entiendes la idea.
Nex7
2
Solo quiero ser claro: ZFS, por su diseño, no va a ganar ninguna guerra de rendimiento. Puede encontrar sistemas de archivos alternativos y administradores de volumen (o combinaciones) que pueden superar a ZFS en el mismo hardware (ext4 y una tarjeta RAID Adaptec, por ejemplo). La única excepción a esto que conozco proviene de las lecturas que se almacenan fácilmente en la memoria caché, donde el ARC a menudo le da a ZFS una ventaja sobre la mayoría de las alternativas. Pero cuando se trata de escribir? No. El esfuerzo que ZFS dedica a la integridad de los datos y a cómo maneja las escrituras casi nunca va a ganar concursos de velocidad. Las compensaciones son integridad y conjunto de características.
Nex7