21

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

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

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

Благодарю.

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

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

Изменить 2:

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

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

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

4 ответа4

33

Да, реализация 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).

5

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

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

4
  • man 4 md заявляет: «… Обратите внимание, что балансировка чтения, выполняемая драйвером , не делает профиль производительности RAID1 таким же, как для RAID0 ; один поток ввода не будет ускоряться (например, один dd), но несколько последовательных потоков или случайная рабочая нагрузка будет использовать более одного шпинделя. Теоретически, наличие N-диска RAID1 позволит N последовательным потокам читать со всех дисков. ...»

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

3

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

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

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

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