2

Я искал через Google, но не нашел никакой информации об алгоритме балансировки чтения для MD raid1.

Несколько лет назад я, возможно, где-то читал, что он использует hashing the process id чтобы определить, какое устройство он использует, но я не уверен.

У меня виртуализация KVM + LVM поверх raid1, и я неоднократно был свидетелем того, как чтение с нескольких виртуальных машин идет на один и тот же диск, загружается на 100%, а другой диск в raid1 не используется. (через iostat -x)

РЕДАКТИРОВАТЬ: вопрос также о нескольких процессах внутри ВМ. Произойдет ли балансировка чтения, даже если внутри ВМ?

Чтения сбалансированы? Если да, то по какому алгоритму?

Причина, по которой я спрашиваю, заключается в том, что в настоящее время я посвящаю между двумя вариантами

  1. LUKS поверх одного MD устройства
  2. MD поверх двух устройств LUKS

Второй вариант использует больше ресурсов процессора, но это не проблема.

1 ответ1

1

Реализация RAID1 в Linux ускоряет операции чтения с диска, если одновременно выполняются две отдельные операции чтения с диска. Это означает, что чтение одного файла не будет быстрее на RAID1, чем на одном диске, но чтение двух отдельных файлов одновременно будет быстрее.

Тест чтения выполнен с DD и отключен кэш чтения:

Test single file:
1048576000 copied @ 224MB/s

Test same file 2 transfers:
Test single file:
1048576000 copied @ 116MB/s
1048576000 copied @ 104MB/s

Test 2 files 2 transfers:
1048576000 copied @ 212MB/s
1048576000 copied @ 217MB/s

Что касается опций, LUKS поверх одного MD-устройства звучит более логично.

Проблема с вашими чтениями, которые происходят с одного и того же диска, может быть изменена с параметрами best_dist_disk и best_pending_disk . Вы можете увидеть полный пример здесь .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .