Чи підвищує RAID1 продуктивність з Linux mdadm?


26

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

Чи збільшиться це чи зменшить ефективність роботи NAS? А як із просто виконанням читання чи запису?

Здається, існує багато думок щодо цього в Інтернеті, але єдиної думки немає.

Спасибі.

Редагувати:

Тому вже у мене є три різні відповіді: "справедливо трохи швидше", "ви не помітите" і "знизить продуктивність, якщо що-небудь". (Мене цікавить насамперед ефективність читання.) У Вікіпедії сказано, що "читання може збільшитися приблизно як лінійна кратна кількість копій". Який це?

Редагувати 2:

Я знайшов вагомі докази на підтримку RAID1, що збільшує ефективність читання, включаючи вказівку сторінки МД:

Зміни записуються на всі пристрої паралельно. Дані зчитуються з будь-якого одного пристрою. Драйвер намагається розподілити запити на читання на всіх пристроях, щоб досягти максимальної продуктивності.

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


2
пише; трохи повільніше читає; ярмарок трохи швидше. З того, що я розумію, різниця в записі майже дорівнює нулю, і прочитане досить помітно.
Sirex

Тільки те, що говорить сирекс .. ти не будеш помічати різницю в продуктивності неозброєним оком. Не сподівайся подвоїти його або навіть наполовину.
Пьотр Кула


1
Я пропускаю одну частину: як швидкий доступ до NAS. Якщо один диск вже заповнив мережеве з'єднання, то більша внутрішня швидкість не дуже допоможе вам.
Геннес

Відповіді:


39

Так, реалізація 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 ++, який не виконує одночасно два окремих читання. Автор чітко заявляє, що bonnie ++ не застосовується для тестування RAID-масивів ( див. Readme ).


5

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

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


5
mdadm - це програмний RAID, тому насправді немає "RAID-контролера", але він забезпечить хороший прискорений читання, коли паралельно читання мультиплікацій не паралельно. У цьому випадку я вважаю, що до NAS-коду рідко можна отримати доступ. Детальніше дивіться тут: freebsdwiki.net/index.php/…
Шадок,

1
На практиці продуктивність знижується для читання з рейду Linux Software MD. Див. Unicom.com/node/459 (У цьому тесті швидкість читання знизилася з 77 Мб / с до 74 Мб / с).
ssh

2
@ssh unicom.com/node/459 абсолютно неправильно. bonnie ++ не використовується для тестування дзеркал RAID, що прямо вказано в readme. Дивіться мою відповідь для отримання більш детальної інформації. superuser.com/a/757264/68978
Nowaker

4
  • man 4 mdзазначає: "... Зауважте, що балансування зчитування, виконане драйвером , не робить профіль продуктивності RAID1 таким же, як для RAID0 ; один потік вводу не буде прискореним (наприклад, один dd), а декількома послідовними потоками або випадковим Навантаження буде використовувати більше одного шпинделя. Теоретично наявність RAID1 N-диска дозволить N послідовним потокам читати з усіх дисків ... "

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


3

Ні, ви не отримаєте жодних переваг під час читання з mdadm RAID1. Я про це запитував деякий час тому.

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

Виконуючи запис на RAID1 об'єм bwm-ng показує 2 x записи, запис на 2 диски одночасно. Читання з RAID1 обсягу bwm-ng показує зчитування з одного приводу (член масиву).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.