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

26

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

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

Кажется, есть много мнений об этом онлайн, но нет единого мнения.

Спасибо.

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

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

Изменить 2:

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

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

Я также обнаружил MD10 с --layout=f2RAID 10, который обеспечивает избыточность RAID1 с производительностью чтения RAID0 и может использоваться только с двумя дисками. Однако производительность записи снижается, так как последовательная запись включает в себя оба диска, ищущих назад и вперед между удаленными частями диска. man mdдля деталей.

Джесси
источник
2
пишет; немного медленнее. читает; немного быстрее. Из того, что я понимаю, разница в записи почти равна нулю, а чтение довольно заметно.
Sirex
Как раз то, что говорит sirex ... вы не заметите разницу в производительности с невооруженным глазом .. Не ожидайте удвоить или даже вдвое.
Петр Кула
1
Я скучаю по одной части: как быстро работает доступ к NAS. Если один диск уже заполняет сетевое соединение, то большая внутренняя скорость вам не сильно поможет.
Хеннес

Ответы:

39

Да, реализация Linux RAID1 ускоряет операции чтения с диска вдвое, если одновременно выполняются две отдельные операции чтения с диска . Это означает, что чтение одного файла 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 ++, который не выполняет два отдельных чтения одновременно. Автор явно заявляет, что bonnie ++ не подходит для тестирования RAID-массивов ( см. Readme ).

Nowaker
источник
5

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

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

инф
источник
5
mdadm - это программный RAID, так что на самом деле «RAID-контроллера» нет, но он обеспечит хорошее ускорение чтения при параллельном многопоточном чтении, в этом случае, я полагаю, не так много, поскольку к блоку NAS редко обращаются к параллельному доступу. Смотрите здесь для подробностей: freebsdwiki.net/index.php/...
Shadok
1
На практике снижается производительность чтения из Linux Software MD raid. См. Unicom.com/node/459 (в этом тесте скорость чтения снизилась с 77 МБ / с до 74 МБ / с).
SSH
2
@ssh unicom.com/node/459 совершенно не так. bonnie ++ не может использоваться для тестирования зеркал RAID, что явно указано в файле readme. Смотрите мой ответ для более подробной информации. superuser.com/a/757264/68978
Новакер
4
  • man 4 mdгласит: «… Обратите внимание, что балансировка чтения, выполняемая драйвером , не делает профиль производительности RAID1 таким же, как для RAID0 ; один поток ввода не будет ускоряться (например, один дд), но будет несколько последовательных потоков или случайный рабочая нагрузка будет использовать более одного шпинделя. Теоретически , наличие N-диска RAID1 позволит N последовательным потокам читать со всех дисков. … »

  • В завершение - на практике , на основе iostatрезультатов, наблюдаемых на типовой конфигурации RAID с двумя жесткими дисками, балансировка отсутствует . На самом деле это выглядит так, будто mdadmопция --write-mostlyвсегда включена.

poige
источник
3

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

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

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

TooMeeK
источник