O --write-mostly
, --write-behind
é tratado pelo md
motorista internamente. md
mantém os metadados, como o bitmap de intenção de gravação (que é obrigatório para o recurso de gravação por trás) que basicamente registra quais dados foram gravados ainda e quais ainda estão ausentes. Isso é necessário caso haja um evento de perda de energia, quando os dados ainda não atingiram os dispositivos de gravação. Nesse caso, a área de dados afetada será sincronizada novamente (no seu caso, leia a partir do SSD, grave no HDD).
Mas como isso é armazenado em cache no nível do kernel?
Para o caso write-behind, o driver md basicamente duplica a solicitação de gravação internamente. A solicitação de gravação principal vai para a (s) unidade (s) primária (s) e diz às camadas superiores "OK, eu já fiz isso"; a solicitação de gravação copiada fica em torno do lado de gravação mais atrasada do RAID e pode levar mais tempo para ser concluída, espero que ninguém perceba.
Em seguida, a camada de invasão executa várias etapas para garantir que nenhum dado seja lido do dispositivo de gravação principalmente enquanto ainda houver solicitações de gravação por trás pendentes na fila. Por que os dados seriam lidos a partir de um dispositivo principalmente para gravação? Bem, o SSD pode ter falhado, então é tudo o que resta. É complicado e o write-behind apresenta alguns casos extremos.
Provavelmente é também por isso que ele é suportado apenas no nível RAID-1, e não em nenhum dos outros. Embora possa fazer sentido, em teoria, ter SSDs essencialmente como RAID-0 e dois HDDs com paridade no modo write-behind, não há suporte para um RAID-6 write-behind como esse. É apenas RAID-1 e raramente é usado mesmo lá.
As outras configurações de cache não são afetadas por isso, basicamente o mecanismo geral de cache não se importa nem um pouco com o modo como o md
driver implementou as coisas internamente. O cache faz suas coisas e md faz suas coisas. Portanto, um cache do sistema de arquivos funciona da mesma maneira para um sistema de arquivos em cima do MD versus um sistema de arquivos em cima de uma unidade vazia. (A realidade é um pouco mais complicada do que isso, mas você pode pensar dessa maneira.)