Le --write-mostly
, --write-behind
est géré par le md
conducteur en interne. md
conserve les métadonnées, comme le bitmap à intention d'écriture (qui est obligatoire pour la fonction d'écriture différée) qui enregistre essentiellement les données qui ont été écrites et celles qui manquent encore. Cela est nécessaire en cas d'événement de coupure de courant, lorsque les données n'ont pas encore atteint les périphériques d'écriture. Dans ce cas, la zone de données affectée sera resynchronisée (dans votre cas, lisez à partir du SSD, écrivez sur le disque dur).
Mais comment est-ce mis en cache au niveau du noyau?
Pour le cas d'écriture différée, le pilote md duplique essentiellement la demande d'écriture en interne. La demande d'écriture principale va au (x) lecteur (s) principal (aux) et indique aux couches supérieures "OK, je l'ai déjà fait"; la demande d'écriture copiée reste alors pour le côté d'écriture le plus souvent en arrière du RAID et peut prendre plus de temps pour se terminer, sans que personne ne s'en aperçoive.
Ensuite, la couche de raid prend beaucoup de mesures pour s'assurer qu'aucune donnée ne sera lue à partir du périphérique d'écriture principalement pendant qu'il y a encore des demandes d'écriture en attente dans la file d'attente. Pourquoi les données seraient-elles lues à partir d'un périphérique d'écriture principalement? Eh bien, le SSD a peut-être échoué, c'est donc tout ce qu'il reste. C'est compliqué, et l'écriture différée introduit quelques cas d'angle.
C'est probablement aussi pourquoi il n'est pris en charge que pour le niveau RAID-1, pas pour les autres. Bien qu'il puisse être logique en théorie d'avoir des SSD essentiellement en RAID-0 et deux disques durs à parité en mode écriture différée, il n'y a pas de support pour un RAID-6 écriture différée comme ça. C'est RAID-1 uniquement et rarement utilisé même là-bas.
Les autres paramètres de cache restent inchangés, le mécanisme global de mise en cache ne se soucie pas du tout de la façon dont le md
pilote a implémenté les choses en interne. Le cache fait son truc et md fait son truc. Ainsi, un cache de système de fichiers fonctionne de la même manière pour un système de fichiers au-dessus de md par rapport à un système de fichiers au-dessus d'un lecteur nu. (La réalité est un peu plus compliquée que cela, mais vous pouvez y penser de cette façon.)