RAID-1 vs RAID-6 в мире розовых пони и вакуума

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Хорошо известно

Хорошо известно, что RAID-6[3] значительно медленнее RAID-1. Многие сейчас вдумчиво покачали головами, мол да, разумеется, в шестом пенальти на запись равно шести, а в десятом двум, это же в три раза меньше IOPSов. Некоторые даже вспомнят, что расчет двух четностей - задача нетривиальная, требующая сложных и "дорогостоящих" вычислений.

"По сравнению с RAID 10 и RAID 5 технология RAID 6 представляет собой уровень RAID с самой низкой производительностью. Хотя при нормальных условиях скорость чтения для всех этих уровней примерно одинакова, продолжительность записи сильно отличается."

"...повысив надежность, данный массив существенно потерял в производительности настолько, что многие поставщики не рекомендуют его использование кроме как для хранения холодных данных."

Ну да. Такое.

Ожидания

"Что делает RAID-контроллер, когда RAID-контроллер делает запись"

© Х.Мураками

А делает контроллер вот что:

Write Penalty

RAID-0

RAID-1

RAID-5

RAID-6

1

Записать данные

Записать данные

Считать данные

Считать данные

2

Записать данные еще раз

Считать четность

Считать четность №1

3

Записать данные

Считать четность №2

4

Записать четность

Записать данные

5

Записать четность №1

6

Записать четность №2

NB: Четность №1 != Четность №2

Если второй блок четности будет копией первого, то RAID-6 не сможет пережить отказ двух дисков. Ведь потеряв два бита данных невозможно восстановить их с помощью одного бита четности, пусть и продублированного. Поэтому в RAID-6 четность считается довольно хитрым образом.

Understanding RAID-6 With Junior High Math (oracle.com)
тут описан P+Q, один из возможных методов реализации RAID-6, но есть и другие, такие как двойная четность, например

Запись в RAID идет блоками фиксированного размера, стрипами[4]. Стрипы одной RAID-группы образуют страйп. Стрипы в страйпе "складываются" специальным образом, что дает в результате блок четности. Изменение стрипа порождает необходимость перерасчета четности. А для этого нужно считать старую четность, считать старые данные, "вычесть" старые данные из старой четности, "прибавить" к ней новые данные, и записать измененные блоки обратно.

Вот вам и шесть операций вместо одной.

Про стрипы и страйпы

Оба слова, стрип (strip) и страйп (stripe), переводятся на русский как "полоска". Но есть нюанс. Полосы на флаге России - это страйпы. Если же флаг порезать на три цветные части, то страйпы станут стрипами.

УК РФ ст. 329, Надругательство над Государственным гербом Российской Федерации или Государственным флагом Российской Федерации наказывается ограничением свободы на срок до одного года, либо принудительными работами на тот же срок, либо арестом на срок от трех до шести месяцев, либо лишением свободы на срок до одного года.

Честно, это знание никак не облегчает понимание терминологии RAID, даже для носителей языка. Особенно тяжело китайцам.

-- У нас есть 14 несовместимых между собой стандартов, нужно изобрести один универсальный!
(через некоторое время)
-- У нас есть 15 несовместимых между собой стандартов!

HP
(до 2011 года)

HP/HPE
(c 2011 года)

DELL/EMC

Huawei

Блок

stripe

strip

strip

data block

Размер блока

stripe size

strip size

strip size

stripe depth

Набор блоков

full stripe

stripe

stripe

stripe

Количество блоков в наборе
(включая блоки четности)

set size

set size

-

configuration

Количество блоков в наборе
(исключая блоки четности)

-

-

stripe width

-

Получается, что при заметной доли операций записи RAID-6 будет всегда медленнее своих конкурентов. Ощутимо медленнее. Логично? Логично.

Реальность

В реальности производительность RAID1, RAID5 и RAID6 на одном и том же наборе дисков зачастую оказывается довольно близкой, и вот по каким причинам[5]:

  • Операции чтения и записи в массиве происходят параллельно (данные и четность);

  • Операции записи могут быть отложены (хост получает подтверждение уже после попадания данных в кэш);

  • Кэширование, откладывание записи и параллелизация операций (и/или просто удачное совпадение размеров блока) дают возможность работать "полным страйпом";

  • Технологии "распределенного RAID" позволяют лучше распределять ввод-вывод по дискам.

В качестве примера рассмотрим что-то полезное в быту. Например, имитацию операции Merge в Veeam B&R на одном и том же наборе дисков, но с разным уровнем RAID.

Параметры теста

IO pattern:

  • random 50/50;

  • block size 512KB, full random fill;

  • alignment 4KB;

Backend:

  • 24x6TB NL-SAS

Название массива говорить не буду, этo не рекламный пост, сравнимые цифры можно получить на любой entry-level железке от нормального вендора.

Формулы[7] обещают, что RAID1 будет на 28% быстрее (что само по себе не особо и круто) и это даже без учета сложностей расчета четности:

Functional IOPS = (Raw IOPS * Write % / RAID Penalty) + (Raw IOPS * Read %)

Raw IOPS = Disk Speed IOPS * Number of disks

R - Ratio, X -Raw IOPS. Особая благодарность Wolfram Alfa за потакание моей лени.
R - Ratio, X -Raw IOPS. Особая благодарность Wolfram Alfa за потакание моей лени.

А на практике разница исчезающе мала, всего около 5%[6] (нагрузка в обоих случаях уперлась в производительность backend, т.е. единичных дисков):

RAID10

RAID6

IOPS

39

37

Bandwidth (MB/s)

20

19

Latency (ms)

25

27

Про окно бэкапа

Отсюда следует, что при восьмичасовом окне мерджинга (рабочий день, когда задания резервного копирования точно не выполняются) и с описанным массивом в роли точки хранения резервных копий, можно позволить себе минимум (без учета сжатия/дедупликации) 500ГБ новых данных в сутки.

Выводы делайте сами.

Оговорки

  1. Я знаю, что такое worst case. Я даже видел вживую один массив, честно собранный в расчете на worst case. В нем было три слоя: SSD, SAS и NL-SAS, а так же лицензия на автотиринг. И, когда этот автотиринг включили, обнаружилось, что данные НИКОГДА не покидают слой NL-SAS. Им и так хорошо. Вот это по настоящему worst case был.

  2. Я знаю, что RAID10 всё равно быстрее. И иногда критично быстрее.

  3. Везде в тексте статьи под RAID1 и RAID6 подразумевается их расширение до RAID10 и RAID6+ в том или ином виде.

  4. В тексте используется терминология, принятая в DELL и HPE.

  5. Вопрос скорости восстановления тут не затрагивается, хотя и он решается, благодаря распределенному RAID (когда spare-диск физически отсутствует, а его ёмкость распределяется по всем дискам в пуле).

  6. При произвольной 100% записи блоком 64к разница заметнее, но и там преимущество RAID10 составило всего 20% против расчетных 300%.

  7. Возможно корректнее было бы сделать расчет для каждой RAID-6 группы в массиве и сложить результаты вместе, но так никто не делает.

Источник: https://habr.com/ru/post/576362/


Интересные статьи

Интересные статьи

В мире не существует "национальных черт характера", но точно существуют национальные ориентиры, национальные герои, образцы для подражания, с которых учат брать пример. В большинстве стран это герои и...
Биологи долгое время считали, что акулы чувствуют магнитное поле Земли и ориентируются благодаря ему. Сейчас, наконец, нашелся ученый, который это доказал Каждый год большие белые ак...
Ранее в одном из наших КП добавление задач обрабатывалось бизнес-процессами, сейчас задач стало столько, что бизнес-процессы стали неуместны, и понадобился инструмент для массовой заливки задач на КП.
В 1С Битрикс есть специальные сущности под названием “Информационные блоки, сокращенно (инфоблоки)“, я думаю каждый с ними знаком, но не каждый понимает, что это такое и для чего они нужны
Изображение: Unsplash Современный фондовый рынок – это масштабная и довольно сложная область знаний. Сходу разобраться в том, «как здесь все устроено» бывает непросто. И несмотря на развит...