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?