Увеличивает ли RAID1 производительность с Linux mdadm?

Увеличивает ли RAID1 производительность с Linux mdadm?

У меня есть дешевый 2-х отсековый NAS с 2-х ТБ HDD. Чтобы быть более устойчивым к сбоям диска, я думаю купить второй 2-х ТБ HDD и поместить его в RAID1 с Linux mdadm. Файловая система — ext4.

Увеличит или уменьшит ли это производительность NAS? А как насчет производительности только чтения или записи?

В сети существует множество мнений по этому поводу, но единого мнения нет.

Спасибо.

Редактировать:

Итак, у меня уже есть три разных ответа: «чуть быстрее», «вы не заметите» и «скорость снизится, если вообще снизится». (Меня в первую очередь интересует производительность чтения.) Википедия говорит: «производительность чтения может увеличиваться примерно линейно кратно количеству копий». Какой из них?

Редактировать 2:

Я нашел все больше доказательств в поддержку увеличения производительности чтения RAID1, включая страницу руководства MD:

Изменения записываются на все устройства параллельно. Данные считываются с любого устройства. Драйвер пытается распределить запросы на чтение по всем устройствам, чтобы максимизировать производительность.

Я также обнаружил RAID10 от MD с --layout=f2, который обеспечивает избыточность RAID1 с производительностью чтения RAID0 и может использоваться всего с двумя дисками. Однако производительность записи снижается, поскольку последовательная запись включает в себя поиск обоих дисков вперед и назад между удаленными частями диска. man mdдля получения подробной информации.

решение1

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

Чтобы продемонстрировать это, просто прочитайте некоторые данные с помощью dd. Перед выполнением чего-либо очистите кэш чтения с диска с помощью sync && echo 3 > /proc/sys/vm/drop_caches. В противном случае hdparmбудет заявлять о сверхбыстром чтении.

Отдельный файл:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Два файла:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

Чтение 10 ГБ данных заняло 65 секунд, тогда как чтение 10 ГБ + 10 ГБ = 20 ГБ данных заняло в общей сложности 68,7 секунд, что означаетМногодисковое чтение значительно выигрывает от RAID1на Linux. skip=$COUNTчасть очень важна. Второй процесс считывает 10 ГБ данных со смещения 10 ГБ.

Ответ Джареда и комментарии ssh относительноhttp://www.unicom.com/node/459неверны. Тест оттуда доказывает, что чтение с диска не выигрывает от RAID1. Однако тест был выполнен с помощью инструмента bonnie++ benchmarking, который не выполняет два отдельных чтения одновременно. Автор прямо заявляет, что bonnie++ не может использоваться для бенчмаркинга RAID-массивов (обратитесь к файлу readme).

решение2

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

Таким образом, теоретически, если RAID-контроллер выполняет свою работу правильно, можно получить ускорение O(n).

решение3

Нет, вы не получите никаких преимуществ при чтении из mdadm RAID1. Я спрашивал себя об этом некоторое время назад.

dstatпоказывает использование дисков, также bwm-ngочень помогает, особенно в этом случае, так как он может показывать использование чтения/записи на отдельных членах RAID mdadm. Просто нажмите n(далее) несколько раз, он переключится со статистики интерфейса на статистику диска. Затем переключитесь на максимальные значения с помощью , tчтобы увидеть максимальное количество чтения/записи с каждого диска. Вы увидите следующее:

При записи на том RAID1 bwm-ng показывает 2 записи, одновременно записывая на 2 диска. При чтении с тома RAID1 bwm-ng показывает чтение с одного диска (члена массива).

решение4

ДАи НЕТ одновременно. По умолчанию параметр RAID 1 "read ahead" слишком мал, чтобы заметить преимущество при передаче одного файла, однако все, что вам нужно сделать, это настроить его.

Чтобы проверить значение, введите:

# blockdev --getra /dev/md0
256

Теперь вы можете задать опережающее чтение (в секторах по 512 байт) на каждое устройство raid. Синтаксис:

## Set read-ahead to 32 MiB ##
# blockdev --setra 65536 /dev/md0

В большинстве случаев простая установка этого параметра удвоит скорость чтения одного файла (при условии, что оба диска одинаковы).

Примечание: это применимо ко всем конфигурациям рейда.

Связанный контент