--write-mostly
, --write-behind
Опрацьовується md
драйвером внутрішньо. md
зберігає метадані, як растрова карта наміру (яка є обов'язковою для функції запису), яка в основному реєструє, які дані були записані, а які дані ще відсутні. Це необхідно в тому випадку, якщо є подія втрати електроенергії, коли дані ще не досягли пристроїв, що в основному записують. У такому випадку область даних буде повторно синхронізована (у вашому випадку читайте з SSD, записуйте на жорсткий диск).
Але як це кешоване на рівні ядра?
Для випадку запису, драйвер md в основному дублює запит запису внутрішньо. Запит на запис на головний запис переходить до основного накопичувача та повідомляє верхнім шарам "ОК, я це вже зробив"; після цього скопійований запит на запит залишається на стороні RAID, що знаходиться в основному позаду, і може зайняти більше часу, сподіваємось, не помічаючи нікого.
Тоді рівень рейду виконує багато кроків, щоб переконатися, що з пристрою запису не буде прочитано жодних даних, поки в черзі ще є очікувані запити на запис. Чому дані зчитуються з пристрою, що в основному записує? Ну, SSD, можливо, не вдався, тому все, що залишилося. Це складно, і записування вводить деякі кутові випадки.
Це, мабуть, і тому, що він підтримується лише для рівня RAID-1, а не для інших. Хоча теоретично може мати сенс мати SSD по суті як RAID-0 та два жорстких жорстких диска в режимі запису, проте немає підтримки для RAID-6, що записується. Це лише RAID-1 і рідко використовується навіть там.
На це не впливають інші налаштування кешу, в основному загальний механізм кешування не має жодної уваги щодо того, як md
драйвер реалізував речі всередині країни. Кеш робить свою справу і md робить свою справу. Таким чином кеш файлової системи працює однаково для файлової системи поверх md порівняно з файловою системою на голому диску. (Реальність - це складніше, ніж це, але ви можете думати про це таким чином.)