При использовании программного обеспечения RAID и LVM в Linux, какие настройки планировщика ввода-вывода и чтения ожидаются?

28

В случае нескольких уровней (физические диски -> 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 эффективно переопределяет базовые планировщики?

В моих попытках ответить на этот вопрос я выкопал некоторые интересные данные о планировщиках и инструментах, которые могут помочь понять это:

andrew311
источник

Ответы:

7

Если вы делаете чтение из md0, тогда используется чтение для md0. Если вы выполняете чтение из sda, который является компонентом md0, тогда он будет использовать настройку sda. Устройство отображения просто разбивает ввод-вывод на несколько операций чтения и записи для выполнения RAID, но это все ниже уровня кеша блоков, где происходит чтение. Стек хранения выглядит так:

файловая система - обходит кеш при открытии с помощью O_DIRECT

кеш блоков - чтение, запись в кеш, планировщик

устройство-маппер - dm, lvm, программный RAID, снимок и т. д.

sd - драйвер диска

SCSI - обработка ошибок, маршрутизация устройства

Аппаратный драйвер - SCSI-карта, FC-карта, Ethernet

Обратите внимание, что когда вы делаете

dd if=/dev/sda of=foo

вы читаете sda как файл, поэтому вы проходите через кеш блоков. Чтобы перейти прямо на диск, сделайте

dd if=/dev/sda of=foo iflag=direct

Что касается планировщиков лифта ввода / вывода, они существуют только в драйвере диска (sd). В / sys / block / md или / sys / block / dm нет каталога очередей. Вы проходите сортировку дисков только один раз.

застывший
источник
2
Есть в /sys/block/md0/queue/schedulerмоих системах, но единственный выбор там none.
Питер Айзентраут