Il --write-mostly
, --write-behind
è gestito dall'autista md
internamente. md
mantiene i metadati, come la bitmap con intento di scrittura (che è obbligatoria per la funzione write-behind) che sostanzialmente registra quali dati sono stati ancora scritti e quali dati mancano ancora. Ciò è necessario nel caso in cui si verifichi un evento di perdita di potenza, quando i dati non hanno ancora raggiunto i dispositivi per lo più in scrittura. In tal caso, l'area dei dati interessati verrà risincronizzata (nel tuo caso, leggi da SSD, scrivi su HDD).
Ma come viene memorizzato nella cache a livello di kernel?
Per il caso write-behind, il driver md fondamentalmente duplica la richiesta di scrittura internamente. La richiesta di scrittura principale va alle unità primarie e dice ai livelli superiori "OK, l'ho già fatto"; la richiesta di scrittura copiata rimane quindi per il lato di scrittura per lo più dietro il RAID e potrebbe richiedere più tempo per il completamento, si spera senza che nessuno se ne accorga.
Quindi il livello raid prende molti passaggi per assicurarsi che nessun dato venga letto dal dispositivo per lo più in scrittura mentre ci sono ancora richieste di scrittura in sospeso in coda. Perché i dati dovrebbero essere letti da un dispositivo per lo più in scrittura? Bene, l'SSD potrebbe aver fallito, quindi è tutto ciò che rimane. È complicato e write-behind introduce alcuni casi angolari.
Questo è probabilmente anche il motivo per cui è supportato solo per il livello RAID-1, non per nessuno degli altri. Anche se in teoria potrebbe avere senso avere SSD essenzialmente come RAID-0 e due HDD di parità in modalità write-behind, non c'è supporto per un RAID-6 write-behind simile. È solo RAID-1 e raramente viene utilizzato anche lì.
Le altre impostazioni della cache non ne sono influenzate, in pratica il meccanismo di memorizzazione nella cache generale non si preoccupa minimamente di come il md
driver ha implementato le cose internamente. La cache fa le sue cose e md fa le sue cose. Quindi una cache del filesystem funziona allo stesso modo per un filesystem su md rispetto a un filesystem su un disco nudo. (La realtà è un po 'più complicata di così, ma puoi pensarla in questo modo.)