El --write-mostly
, --write-behind
es manejado por el md
conductor interno. md
mantiene los metadatos, como el mapa de bits con intención de escritura (que es obligatorio para la función de escritura diferida) que básicamente registra qué datos se han escrito aún y qué datos aún faltan. Esto es necesario en caso de que haya un evento de pérdida de energía, cuando los datos aún no han llegado a los dispositivos de escritura principal. En ese caso, el área de datos afectada se volverá a sincronizar (en su caso, lea desde SSD, escriba en HDD).
Pero, ¿cómo se almacena en caché a nivel del núcleo?
Para el caso de escritura subyacente, el controlador md básicamente duplica la solicitud de escritura internamente. La solicitud de escritura maestra va a la (s) unidad (es) primaria (s) y le dice a las capas superiores "OK, ya he hecho esto"; la solicitud de escritura copiada se queda para el lado de la mayoría de la escritura de RAID y puede tardar más en completarse, con suerte sin que nadie lo note.
Luego, la capa de incursión toma muchos pasos para asegurarse de que no se leerán datos del dispositivo de escritura, mientras que todavía hay solicitudes de escritura pendiente en la cola. ¿Por qué se leerían los datos de un dispositivo de escritura principalmente? Bueno, el SSD podría haber fallado, así que es todo lo que queda. Es complicado, y la escritura por detrás presenta algunos casos de esquina.
Probablemente por eso solo es compatible con el nivel RAID-1, no con ninguno de los otros. Aunque podría tener sentido en teoría tener SSD esencialmente como RAID-0 y dos HDD de paridad en modo de escritura rezagada, no hay soporte para una RAID-6 de escritura reversa como esa. Es solo RAID-1 y rara vez se usa incluso allí.
Esto no afecta a las otras configuraciones de caché, básicamente al mecanismo de almacenamiento en caché general no le importa en lo más mínimo cómo el md
controlador ha implementado las cosas internamente. El caché hace lo suyo y md hace lo suyo. Por lo tanto, una memoria caché del sistema de archivos funciona igual para un sistema de archivos en la parte superior de md frente a un sistema de archivos en la parte superior de una unidad simple. (La realidad es un poco más complicada que eso, pero puedes pensarlo de esta manera).