RAID 5 против RAID 10 на практике: скорость и риск
Когда под сервер есть четыре одинаковых диска, почти всегда встаёт один и тот же вопрос: собрать RAID 5 и получить максимум полезного объёма, или RAID 10 и получить максимум скорости на запись. На бумаге оба варианта «переживают отказ диска», и разница кажется второстепенной — пока не доходит до реальной нагрузки или до реального ребилда. Разберём оба уровня на одном и том же наборе из 4 дисков, с конкретными цифрами полезного объёма, реальной логикой write penalty и честным сравнением отказоустойчивости.
Содержание
Расчёт полезного объёма на одинаковых 4 дисках
Возьмём типичный набор: 4 диска по 4 ТБ каждый, суммарная сырая ёмкость — 16 ТБ. Вот что вы получите на выходе в каждом из уровней.
RAID 5 распределяет чётность по всем дискам массива, и из N дисков вы теряете под избыточность ровно один — независимо от того, сколько всего дисков в массиве:
Полезный объём RAID 5 = (N − 1) × размер диска
= (4 − 1) × 4 ТБ = 3 × 4 ТБ = 12 ТБ
Из 16 ТБ сырой ёмкости вы получаете 12 ТБ полезных — 75% эффективности.
RAID 10 сначала зеркалирует диски попарно (диск 1 + диск 2 — зеркало, диск 3 + диск 4 — второе зеркало), а затем чередует данные между парами. Полезный объём — ровно половина от суммарной сырой ёмкости, вне зависимости от того, из скольких пар собран массив:
Полезный объём RAID 10 = N/2 × размер диска
= 4/2 × 4 ТБ = 2 × 4 ТБ = 8 ТБ
Из тех же 16 ТБ сырой ёмкости вы получаете 8 ТБ полезных — 50% эффективности.
| Уровень | Формула полезного объёма | На 4×4 ТБ | Эффективность | Дисков «под избыточность» |
|---|---|---|---|---|
| RAID 5 | (N − 1) × диск | 12 ТБ | 75% | 1 |
| RAID 10 | N/2 × диск | 8 ТБ | 50% | 2 |
Разница — ровно 4 ТБ, или треть полезного объёма RAID 5. На четырёх дисках это самое заметное расхождение между уровнями: RAID 10 «съедает» вдвое больше сырой ёмкости под избыточность, чем RAID 5. С ростом числа дисков разрыв в процентах только увеличивается — RAID 5 из 8 дисков даёт 87.5% полезного объёма (7 из 8), а RAID 10 из 8 дисков всё так же ровно 50%, сколько бы дисков вы ни добавили. Именно эта арифметика — главный аргумент в пользу RAID 5, когда бюджет на диски ограничен, а данные не бьются интенсивной случайной записью.
Собираются оба массива на Linux через mdadm одинаково просто:
# RAID 5 из 4 дисков
mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
# RAID 10 из тех же 4 дисков
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
Проверить, что массив реально собрался с ожидаемым уровнем и объёмом:
cat /proc/mdstat
mdadm --detail /dev/md0 | grep -E "Raid Level|Array Size"
Write penalty: почему RAID 10 обгоняет на запись
Разница в скорости записи между RAID 5 и RAID 10 — не маркетинговая абстракция, а прямое следствие того, что должен сделать контроллер (аппаратный или программный mdadm) на каждую операцию записи.
В RAID 10 запись блока данных — это просто параллельная запись в оба диска зеркальной пары. Никаких дополнительных вычислений, никакого чтения старых данных. Одна логическая операция записи — это буквально две физические операции записи, выполняемые одновременно.
В RAID 5 контроллер обязан поддерживать чётность (XOR данных всех дисков в страйпе), а для этого на каждую запись, которая не покрывает весь страйп целиком, требуется:
- прочитать старые данные с диска, который будет перезаписан;
- прочитать старую чётность с диска чётности;
- вычислить новую чётность (XOR старых данных, новых данных и старой чётности);
- записать новые данные;
- записать новую чётность.
Это классический RAID 5 write penalty: одна логическая запись превращается в 2 операции чтения + 2 операции записи — то есть примерно вчетверо больше физических операций ввода-вывода, чем при простой записи на один диск. Для последовательной записи большими блоками, покрывающими весь страйп, контроллер может пропустить шаги чтения и посчитать чётность сразу по новым данным — тогда просадка меньше. Но для случайной записи мелкими блоками (характерно для баз данных, где страница обычно 4-16 КБ) чтение-перед-записью происходит почти на каждую операцию.
RAID 10 не имеет такой проблемы вообще — write penalty у него равен 2 (одна логическая запись = две физические, в обе половины зеркала), против эффективных 4 у RAID 5 на случайной записи. На практике это означает, что при одинаковом числе дисков и одинаковом типе накопителей RAID 10 обычно даёт заметно больше IOPS на запись, особенно при случайном доступе мелкими блоками.
Не берите эти коэффициенты как точный бенчмарк для вашего железа — реальная просадка зависит от контроллера (аппаратный с кэшем и батарейкой BBU сглаживает задержку записи чётности), типа накопителей (NVMe и SSD прячут write penalty за скоростью, HDD — нет) и профиля нагрузки. Перед продакшеном стоит прогнать fio на реальной конфигурации:
fio --name=randwrite --ioengine=libaio --rw=randwrite \
--bs=4k --size=1G --numjobs=4 --runtime=60 \
--direct=1 --filename=/dev/md0
Прогоните один и тот же тест на обоих массивах перед тем, как принимать решение под конкретную нагрузку — цифры на вашем контроллере и ваших дисках могут ощутимо отличаться от общих ориентиров.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверОтказоустойчивость: гарантия против везения
Здесь у RAID 5 и RAID 10 принципиально разная логика — и это второй ключевой критерий выбора после объёма и скорости.
RAID 5 переживает отказ ровно одного любого диска в массиве — без исключений, это гарантия. Но если второй диск откажет до того, как контроллер завершит восстановление (ребилд) после замены первого, массив теряется целиком, и восстановить данные штатными средствами уже нельзя. Не важно, какой именно это второй диск — любой из оставшихся фатален.
RAID 10 переживает отказ любого одного диска тоже без вопросов — это база. Но дальше начинается разница: RAID 10 часто способен пережить и отказ второго диска, если это не диск из той же зеркальной пары, что и первый отказавший. На массиве из 4 дисков (две зеркальные пары) это означает, что теоретически может отказать сразу два диска — по одному из каждой пары — и данные всё равно останутся целы, потому что у каждой пары есть своя рабочая копия.
Наглядно на 4 дисках (диск 1 + диск 2 — пара A, диск 3 + диск 4 — пара B):
| Что отказало | RAID 5 (диски 1-4, один чётности логически) | RAID 10 (пары A и B) |
|---|---|---|
| Один любой диск | Работает в degraded, ждёт замены | Работает, донор — напарник по паре |
| Второй диск — любой оставшийся | Массив потерян | Работает, ЕСЛИ второй диск не из той же пары, что первый |
| Второй диск — «напарник» по паре | — (в RAID 5 нет пар) | Массив потерян (пара A или B полностью выбыла) |
То есть RAID 10 даёт не абсолютную гарантию пережить два отказа, а вероятностное преимущество: на 4 дисках при отказе одного диска вероятность того, что следующий отказавший диск не окажется его напарником, — 2 из 3 (два диска из оставшихся трёх принадлежат другой паре). Это не «RAID 10 непотопляем», а «у RAID 10 есть шанс, которого у RAID 5 нет вообще» при втором одновременном отказе.
Почему именно ребилд — самый рискованный момент
Оба уровня после замены диска запускают восстановление данных, но сама механика ребилда отличается принципиально, и именно она определяет реальный, а не теоретический риск.
Ребилд RAID 10 — это копирование данных с диска-донора (второй половины той же зеркальной пары) на новый диск. Нагрузка ложится на один-единственный диск-донор, остальной массив (другая пара) продолжает работать в обычном режиме. Для SSD/NVMe такой ребилд может занять минуты, для HDD — пару часов.
Ребилд RAID 5 требует прочитать вообще все оставшиеся диски массива, чтобы через XOR восстановить утраченные данные на новом диске. Это создаёт повышенную нагрузку сразу на весь массив, а не на один диск, и именно в этом причина, почему RAID 5 на больших современных дисках (8-16-20 ТБ) считается рискованным: ребилд может растягиваться на много часов или сутки, и всё это время массив работает без избыточности вообще — при отказе любого другого диска (или даже при нечитаемом секторе, URE) массив теряется. Подробно эта механика и то, почему индустрия из-за неё сместилась к RAID 6, разобраны в статье RAID 10 или RAID 6: что выбрать — там же честное сравнение времени ребилда на конкретных объёмах.
Практический вывод: чем крупнее диски в массиве, тем чувствительнее этот риск для RAID 5, и тем сильнее аргумент в пользу RAID 10 (или, если объём важнее скорости, RAID 6) для больших современных накопителей. Сам процесс безопасной замены диска — с проверкой перед изъятием, чтобы не вынуть рабочий диск вместо неисправного, — разобран в статье замена диска без простоя на RAID.
Когда выбирать RAID 5, а когда RAID 10
Выбор почти всегда сводится к одному вопросу: что вам важнее — сэкономить на дисках или не терять в производительности записи и иметь запас на второй отказ.
RAID 5 экономичнее и оправдан, когда:
- бюджет на диски ограничен, а полезный объём важнее скорости;
- нагрузка в основном на чтение или на последовательную запись (файловое хранилище, медиатека, архив с редкой записью);
- вы готовы мириться с write penalty на случайной записи, потому что её в вашем профиле нагрузки немного;
- диски небольшого или среднего объёма (до 2-4 ТБ) — риск долгого ребилда ниже, чем на 16-20 ТБ накопителях.
RAID 10 предпочтителен, когда:
- нагрузка — интенсивная случайная запись: базы данных (PostgreSQL, MySQL, MongoDB), виртуализация с несколькими ВМ, очереди сообщений;
- задержка записи критична для отклика приложения, и вы готовы заплатить бОльшую долю сырого объёма (50% против 75% у RAID 5) за отсутствие write penalty;
- диски крупного объёма — ребилд RAID 10 нагружает только диск-донор, а не весь массив, и завершается заметно быстрее, снижая окно риска второго отказа.
Для нагрузки на СУБД конкретные конфигурации на NVMe с RAID 10 разобраны в статье выделенный сервер для большой базы данных — там показано, как рассчитать число дисков под конкретный объём и IOPS. Общий обзор всех уровней RAID и логика выбора между ними — в статье RAID на сервере: уровни и как выбрать.
Есть и промежуточный вариант — RAID 50 (чередование поверх нескольких групп RAID 5), который частично компенсирует ребилд-риск RAID 5 за счёт разбиения на независимые группы чётности, сохраняя при этом лучший полезный объём, чем RAID 10. Но это более сложная конфигурация, которая имеет смысл в основном на массивах от 8-12 дисков, и заслуживает отдельного разбора.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли собрать RAID 5 или RAID 10 на 3 дисках?
RAID 5 — да, это минимум для этого уровня (полезный объём — 2 диска из 3). RAID 10 требует минимум 4 диска и обязательно чётное их число — на трёх дисках его не собрать.
RAID 5 из 4 дисков быстрее читает, чем RAID 10 из 4 дисков?
На последовательном чтении разница обычно небольшая — оба уровня чередуют данные по нескольким дискам. На случайном чтении RAID 10 чаще выигрывает, потому что может читать с любой половины каждой зеркальной пары, эффективно удваивая источники для параллельных запросов.
Что будет, если в RAID 5 из 4 дисков откажут два диска сразу?
Массив потерян безвозвратно штатными средствами — RAID 5 держит запас ровно в один диск, второй одновременный отказ фатален независимо от того, какой именно диск отказал вторым.
Стоит ли использовать RAID 5 на дисках по 16-20 ТБ?
Общая рекомендация индустрии — нет, слишком долгий и рискованный ребилд на такой ёмкости. Для больших современных дисков разумнее RAID 6 (запас в 2 диска) или RAID 10, если важна ещё и скорость записи.
Заменяет ли RAID 10 резервное копирование?
Нет, ни один уровень RAID не заменяет бэкапы. RAID защищает от отказа диска как физического устройства, но не от случайного удаления, шифровальщика или ошибки в приложении — бэкапы нужны независимо от выбранного уровня RAID.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →