В случае нескольких уровней (физические диски -> md -> dm -> lvm), как взаимодействуют планировщики, настройки чтения и другие настройки диска?
Представьте, что у вас есть несколько дисков (/ dev / sda - / dev / sdd), все части программного устройства RAID (/ dev / md0), созданные с помощью mdadm. Каждое устройство (включая физические диски и / dev / md0) имеет свои собственные настройки для планировщика ввода-вывода ( измененные так же ) и readahead ( измененные с помощью blockdev ). Когда вы добавляете такие вещи, как dm (crypto) и LVM, вы добавляете еще больше слоев со своими настройками.
Например, если физическое устройство имеет опережающее чтение на 128 блоков, а RAID имеет опережающее чтение на 64 блока, что будет признано, когда я выполняю чтение из / dev / md0? Драйвер md пытается выполнить чтение из 64 блоков, которое драйвер физического устройства преобразует в чтение из 128 блоков? Или чтение RAID-массива «пропускается» к базовому устройству, что приводит к чтению из 64 блоков?
Такой же вопрос стоит для планировщиков? Должен ли я беспокоиться о нескольких уровнях планировщиков ввода-вывода и о том, как они взаимодействуют, или / dev / md0 эффективно переопределяет базовые планировщики?
В моих попытках ответить на этот вопрос я выкопал некоторые интересные данные о планировщиках и инструментах, которые могут помочь понять это:
/sys/block/md0/queue/scheduler
моих системах, но единственный выбор тамnone
.