Lors du calcul des IOPS pour les matrices RAID traditionnelles, on pourrait utiliser la formule suivante (empruntée à Obtenir le blocage des IOPS v1.3 sur Symantec Connect):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
Où:
- Ieffective est le nombre effectif d'IOPS
- Isingle est l'IOPS moyen d' un seul disque .
- n est le nombre de disques dans la baie
- READ% est la fraction des lectures issues du profilage de disque
- WRITE% est la fraction des écritures provenant du profilage de disque
F est la pénalité d'écriture RAID :
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
La formule est essentiellement fonction de:
- IOPS pour chaque disque individuel de la baie
- Le nombre de disques. Plus de disques signifie plus d'IOPS
- La pénalité RAID pour chaque opération d'écriture.
- RAID5 et RAID6 nécessitent plus de 4 opérations sur disque pour chaque écriture. Le contrôleur doit lire le bloc, puis lire les données de parité (deux opérations), calculer les nouvelles données de parité, puis mettre à jour le bloc de parité et mettre à jour le bloc de données (deux opérations supplémentaires). RAID6 a deux blocs de parité et nécessite donc trois lectures et trois écritures. Les baies RAID5 et RAID6 sont donc capables de moins d'IOPS que RAID1.
- RAID1 et RAID10 ne nécessitent que 2 écritures, une sur chaque disque dans le miroir.
Et pour être clair, tout cela fournit une estimation des performances théoriques. Divers contrôleurs et méthodes RAID ont des astuces pour accélérer une partie de cela.
L'équivalent ZFS de RAID5 et RAID6 est RAIDZ et RAIDZ2. Lors du calcul des IOPS pour les matrices RAIDZ, puis-je utiliser la même formule que j'utilise pour RAID5 et RAID6, ou ZFS a-t-il des astuces spéciales pour réduire le nombre d'opérations requises pour les opérations d'écriture.
Existe-t-il une formule différente à utiliser lors du calcul des IOPS pour les matrices RAIDZ?