Les plateaux tournants sont plus lents que la RAM. Nous utilisons la mise en cache des lectures / écritures pour "masquer" ce fait.
La chose utile à propos de l’écriture IO est qu’elle n’exige pas que l’E / S de disque se produise immédiatement, contrairement à une lecture, dans laquelle vous ne pouvez pas renvoyer de données à l’utilisateur tant que la lecture n’est pas terminée sur le disque.
Ainsi, les écritures fonctionnent sous une contrainte temporelle souple - tant que notre débit soutenu ne dépasse pas celui de notre disque, nous pouvons masquer une grande partie des inconvénients liés aux performances dans un cache d'écriture.
Et nous avons besoin d'écrire en cache - les disques en rotation sont relativement lents comparativement. Mais ainsi, les types de RAID modernes ont une pénalité importante en termes de fonctionnement.
Un RAID 6 par exemple, pour terminer une entrée / sortie en écriture, il faut:
- Lire le bloc de mise à jour
- lire la parité1
- lire la parité 2
- écrire un nouveau bloc
- écrire la parité 1
- écrire la parité 2
Ainsi, chaque écriture correspond à 6 opérations d'E / S. En particulier, lorsque vous utilisez des disques lents, tels que de gros disques SATA, cela devient extrêmement coûteux.
Mais il existe une solution simple et agréable: écrivez en coalescence. Si vous pouvez créer une écriture «en bande complète» dans une mémoire tampon, vous n'avez pas besoin de lire la parité à partir de votre disque. Vous pouvez la calculer en fonction de ce que vous avez en mémoire.
C'est très souhaitable, car vous n'avez plus d'amplification en écriture. En effet, vous pouvez vous retrouver avec une pénalité en écriture plus faible que RAID 1 + 0.
Considérer:
RAID 6, 8 + 2 - 10 broches.
8 blocs de données consécutifs à écrire - calculez la parité dans le cache et écrivez un bloc sur chaque disque. 10 écritures par 8, signifie une pénalité en écriture de 1,25. 10 disques de RAID 1 + 0 ont toujours une pénalité en écriture de 2 (car vous devez écrire sur chaque sous-miroir). Dans ce scénario, vous pouvez donc améliorer les performances de RAID 6 par rapport à RAID1 + 0. Dans le monde réel, vous obtenez cependant un peu plus d'un profil d'E / S mixte.
La mise en cache d'écriture a donc une grande incidence sur les performances perçues des ensembles RAID: vous pouvez écrire à la vitesse de la mémoire vive et subir une pénalité d'écriture faible, ce qui améliore votre débit soutenu si vous le faites.
Et si vous ne le faites pas, vous souffrez de la lenteur des performances de SATA, mais multipliez-le par 6 et ajoutez un peu de controverse. Votre SATA RAID-6 à 10 voies sans la mise en cache en écriture serait un peu plus rapide qu’un seul lecteur sans RAID ... mais pas de beaucoup.
Comme vous le constatez, vous prenez un risque, mais une panne de courant signifie une perte de données. Vous pouvez résoudre ce problème en effectuant des cycles de vidage du cache, en sauvegardant la batterie sur votre cache ou en utilisant un disque SSD ou un autre cache non volatile.