Выбор уровня RAID — это попытка сбалансировать множество факторов, включая стоимость, надежность, емкость и производительность. Производительность RAID может быть сложной для понимания, главным образом потому, что разные уровни RAID используют разные методы и на практике ведут себя несколько по-разному.
В этой статье мы рассмотрим стандартные уровни RAID 0, 5, 6 и 10, чтобы увидеть, чем отличается их производительность. В этой статье предполагается, что RAID 1 является подмножеством RAID 10. Проще говоря, RAID 1 аналогичен массиву RAID 10, за исключением того, что он включает только один элемент зеркальной пары. Поскольку RAID 1 на самом деле представляет собой однопарный RAID 10 и ведет себя соответствующим образом, это прекрасно помогает упростить понимание производительности RAID. Это просто соответствует кривой производительности RAID 10.
Чтение и запись RAID
Существует два типа производительности, на которые следует обратить внимание при использовании любого хранилища: чтение и запись.
Что касается RAID, чтение является простым, а запись довольно сложной. Производительность чтения практически стабильна для всех типов. Запись, однако, нет.
Чтобы упростить обсуждение производительности, нам нужно определить несколько терминов, поскольку мы будем работать с некоторыми уравнениями.
В наших обсуждениях мы будем использовать «N» для обозначения общего количества дисков нашего массива, часто называемых шпинделями. Мы будем использовать «X» для обозначения производительности каждого диска в отдельности. Это позволяет говорить об относительной производительности как факторе производительности накопителя.
Мы можем абстрагировать RAID-массив, не думая о чистом IOPS (операциях ввода-вывода в секунду). Это важно, поскольку IOPS часто очень сложно определить. Но мы можем осмысленно сравнить производительность, рассматривая ее по отношению к отдельным дискам в массиве.
Также важно помнить, что мы говорим только о производительности массива, а не всей подсистемы хранения данных. Такие артефакты, как кэши памяти и твердотельные кэши, могут удивительным образом повлиять на общую производительность подсистемы хранения. Но они не изменят фундаментальную производительность массива.
Не существует простой формулы для определения того, как различные параметры кэша повлияют на общую производительность. Достаточно сказать, что это может быть очень драматично и сильно зависит от выбора кэша и рабочей нагрузки. Даже самые большие, быстрые и надежные варианты кэша не могут повлиять на долгосрочную и устойчивую производительность массива. RAID – это сложный процесс, и на конечную производительность влияют многие факторы. Одним из них является реализация самой системы.
Плохая реализация может привести к задержке. Или он может не использовать доступные шпиндели (например, массив RAID 1 читается только с одного диска, а не с обоих одновременно). Не существует простого способа учесть недостатки в конкретных реализациях. Мы должны предположить, что все работают в пределах спецификации. Любая корпоративная RAID-система сделает это. В этом аспекте терпят неудачу в первую очередь любительские и потребительские RAID-системы.
Роль ЦП в производительности RAID
Некоторые типы RAID также сопряжены с огромными вычислительными затратами, а другие — нет. Прежде всего, уровни RAID с четностью требуют интенсивной обработки для обработки операций записи, при этом разные уровни требуют разного объема вычислений, необходимых для каждой операции. Это приводит к задержке, но не снижает пропускную способность. Однако эта задержка будет варьироваться в зависимости от реализации уровня RAID, а также от вычислительных возможностей системы. Для решения этой задачи в аппаратном RAID будет использоваться процессор общего назначения (часто процессор Power или ARM RISC) или специальная ASIC. ASIC могут быть очень быстрыми, но их производство дорого. Программный RAID передает эту функцию процессору сервера. Обычно процессор сервера здесь работает быстрее, но потребляет системные ресурсы.
Эта задержка влияет на производительность хранилища, но ее очень трудно предсказать, и она может варьироваться от номинальной до значительной. Поэтому я упомяну влияние относительной задержки на каждом уровне RAID, но не буду пытаться его измерить. В большинстве расчетов производительности RAID эта задержка игнорируется. Однако оно все еще присутствует. В зависимости от конфигурации массива это может оказать заметное влияние на рабочую нагрузку. Следует отметить, что операции чтения оказывают небольшое влияние на производительность из-за эффективности размещения данных на самом диске.
Для контроля четности на дисках требуются данные, которые бесполезны во время операции чтения, но не могут быть использованы для ее ускорения. Это приводит к тому, что он работает немного медленнее. Но это влияние минимально и обычно не измеряется, поэтому его можно игнорировать. Разумеется, такие факторы, как размер полосы, также влияют на производительность. Но поскольку это настраиваемый параметр, а не внутренний артефакт на каком-либо уровне, мы здесь его проигнорируем. Это не фактор при выборе самого уровня RAID, а только при его настройке.
Соотношение чтения/записи для хранилища
Последний фактор, который мы хотим упомянуть, — это соотношение операций чтения и записи при операциях хранения. Некоторые RAID-массивы будут использоваться почти исключительно для операций чтения, некоторые — для операций записи. Большинство из них будут использовать смесь этих двух устройств, вероятно, около 80 процентов читают и 20 процентов пишут. Это соотношение имеет решающее значение для понимания производительности, которую вы получите от вашего конкретного массива, и понимания того, как каждый уровень RAID повлияет на вас. Мы называем это смесью чтения/записи. Мы измеряем производительность хранилища в первую очередь в IOPS. IOPS означает количество операций ввода/вывода в секунду. Мы используем термины RIOPS для чтения IOPS, WIOPS для Write IOPS и BIOPS для смешанного IOPS, которые имеют соотношение, например, 80/20. Многие говорят о производительности хранилища с помощью одного числа операций ввода-вывода в секунду. Когда это делается, обычно имеется в виду смешанный IOPS 50/50.
Однако любая рабочая нагрузка редко выполняется с соотношением 50/50, поэтому эта цифра может вводить в заблуждение. Чтобы понять производительность, нам нужны два числа: RIOPS и WIOPS. Мы можем использовать эти два значения вместе, чтобы найти любое необходимое сочетание IOPS. Например, смесь 50/50 представляет собой простую формулу (RIOPS * .5) + (WIOPS * .5). Более распространенной смесью 80/20 будет (RIOPS * .8) + (WIOPS * .2).
Теперь, когда мы установили некоторые критерии и базовое понимание, мы углубимся в сами уровни RAID и посмотрим, как производительность варьируется в зависимости от них. Для всех уровней RAID мы рассчитываем число операций чтения в секунду с помощью NX. Разумеется, это не касается упомянутых выше номинальных накладных расходов. Это «лучший случай». Но реальные цифры настолько близки, что использовать эту формулу практично. Возьмите количество шпинделей (N) и умножьте на производительность IOPS отдельного диска (X). Имейте в виду, что диски часто имеют разную производительность чтения и записи. Поэтому обязательно используйте показатель IOPS чтения или протестированную скорость диска для расчета IOPS чтения, а показатель IOPS записи или протестированную скорость для расчета IOPS записи.
Производительность RAID 0
RAID 0 — самый простой для понимания уровень, поскольку фактически нет накладных расходов или ресурсов, потребляемых для его питания, и как чтение, так и запись получают все преимущества каждого шпинделя. Итак, для RAID 0 наша формула производительности записи проста: NX.
RAID 0 всегда является самым высоким уровнем производительности. Примером может служить восьмишпиндельный массив RAID 0. Если отдельный диск в массиве обеспечивает 125 операций ввода-вывода в секунду, наш расчет будет выполнен с N = 8 и X = 125, поэтому 8 * 125 дает 1000 операций ввода-вывода в секунду. Операции ввода-вывода в секунду при чтении и записи здесь одинаковы. Итак, это элементарно: мы получаем 1K RIOPS, 1K WIOPS и 1K без какого-либо смешивания. Если бы мы не знали абсолютное количество операций ввода-вывода в секунду для отдельного шпинделя, мы могли бы назвать восьмишпиндельный RAID 0 обеспечивающим 8-кратное смешанное число операций ввода-вывода в секунду.
Производительность RAID 10
RAID 10 — второй по простоте уровень вычислений. Поскольку RAID 10 представляет собой полосу наборов зеркал RAID 0, нам не нужно беспокоиться о накладных расходах полосы, но каждое зеркало должно записывать одни и те же данные дважды, чтобы создать зеркалирование. Это снижает нашу производительность записи вдвое по сравнению с массивом RAID 0 с таким же количеством дисков. Это дает нам простую формулу производительности записи: NX/2 или .5NX. Следует отметить, что это основано на той же емкости, что и RAID 0, а не на том же количестве шпинделей.
RAID 10 имеет такую же производительность записи, как и RAID 0, но в два раза выше производительность чтения, поскольку для обеспечения той же емкости требуется вдвое больше шпинделей. Таким образом, восьмишпиндельный массив RAID 10 будет иметь N = 8 и X = 125, и наш итоговый расчет составит (8 * 125)/2, что составляет 500 WIOPS или 4X WIOPS. Сочетание 50/50 приведет к 750 смешанным операциям ввода-вывода в секунду (1000 операций чтения в секунду *,5 и 500 операций ввода-вывода в секунду при записи*.5). Эта формула одинаково применима к RAID 1, RAID 10, RAID 100 и RAID 01. Необычные варианты, такие как тройной зеркалирование в RAID 10 изменит этот штраф за запись. Например, RAID 10 с тройным зеркалированием будет NX/3.
Производительность RAID 5
RAID 5 устарел и никогда не должен использоваться в новых массивах. Я включил его сюда, потому что это хорошо известный и часто используемый уровень RAID, и необходимо понимать его производительность. RAID 5 — это самый базовый из существующих уровней RAID с четностью. RAID 2, 3 и 4 больше не встречаются в производственных системах, поэтому мы не будем здесь рассматривать их производительность. RAID 5, хотя и не рекомендуется для использования в настоящее время, является основой других современных уровней RAID с четностью.
RAID с контролем четности добавляет несколько усложненную необходимость проверки и перезаписи четности при каждой операции записи на диск. Это означает, что массиву RAID 5 придется читать данные, читать четность, записывать данные и, наконец, записывать четность. Четыре операции на каждую эффективную. Это дает нам штраф за запись в RAID 5, равный четырем. Таким образом, формула производительности записи RAID 5 — NX/4.
Итак, следуя примеру с восемью шпинделями, где количество операций ввода-вывода в секунду при записи для отдельного шпинделя равно 125, мы получим следующий расчет: (8 * 125)/4 или 2X операций ввода-вывода в секунду при записи, что соответствует 250 WIOPS. При сочетании 50/50 это даст 625 смешанных операций ввода-вывода в секунду.
Производительность RAID 6
RAID 6 после RAID 10, вероятно, является наиболее распространенным и полезным уровнем RAID, используемым сегодня. Однако RAID 6 основан на RAID 5 и имеет другой уровень четности. Это делает его значительно безопаснее чем RAID 5, что очень важно, но также налагает значительные штрафы за запись. Каждая операция записи требует, чтобы диски прочитали данные, прочитали первую четность, прочитали вторую четность, записали данные, записали первую четность и затем, наконец, записали вторую четность. Получается штраф за запись в размере шести, что довольно драматично. Наша формула — NX/6.
Продолжая наш пример, мы получаем (8 * 125)/6, что составляет ~167 операций ввода-вывода в секунду или 1,33X. В нашем примере смешивания 50/50 это производительность 583,5 смешанных операций ввода-вывода в секунду. Как видите, запись четности приводит к очень быстрому снижению производительности записи и заметному падению смешанной производительности.
Производительность как фактор мощности
При составлении формул производительности RAID мы думаем об этом с точки зрения количества шпинделей, что невероятно разумно. Это очень полезно при определении производительности предлагаемого массива или даже существующего, где измерение невозможно, и позволяет нам сравнивать относительную производительность между различными предлагаемыми вариантами.
Именно в этих терминах мы повсеместно думаем о производительности RAID. Однако это не всегда хороший подход, поскольку мы обычно рассматриваем RAID как фактор емкости, а не производительности или количества шпинделей. Очень редко, но вполне возможно, что кто-то рассмотрит массив RAID 6 с восемью дисками вместо массива RAID 10 с восемью дисками. Время от времени это происходит из-за ограничений шасси или по какой-либо другой подобной причине. Но обычно мы рассматриваем RAID-массивы с точки зрения общей емкости массива (например, емкости, которую мы можем использовать), а не количества шпинделей, производительности или любого другого фактора.
Поэтому странно, что нам приходится переходить к рассмотрению производительности RAID как функции количества шпинделей. Если мы изменим нашу точку зрения и обратимся к емкости как к общему фактору, при этом полагая, что емкость и производительность отдельного диска (X) остаются постоянными между компараторами, то мы придем к совершенно иной картине производительности. При этом мы видим, например, что RAID 0 больше не является самым производительным уровнем RAID и что производительность чтения резко меняется, а не остается постоянной.
Емкость — вещь непостоянная, но мы можем довести ее до количества шпинделей, необходимого для достижения желаемой мощности. Это значительно упрощает дискуссию. Итак, наш первый шаг — определить количество шпинделей, необходимое для обеспечения сырой мощности. Если нам нужна емкость 10 ТБ и мы используем диски емкостью 1 ТБ, нам понадобится, например, десять шпинделей. Или, если нам нужно 3,2 ТБ и мы используем диски емкостью 600 ГБ, нам понадобится шесть шпинделей.
В отличие от предыдущего, мы будем называть количество шпинделей «R». (Здесь мы используем букву «R», чтобы обозначить, что это исходное значение емкости, а не общее количество шпинделей.) Как и раньше, производительность отдельного диска обозначается как «X». RAID 0 остается простым. Производительность по-прежнему RX, поскольку дополнительных дисков нет. Операции ввода-вывода в секунду при чтении и записи — это просто NX.
RAID 10 имеет IOPS записи RX, но IOPS чтения 2RX. Это драматично. Неожиданно, рассматривая производительность как фактор стабильной емкости, мы обнаруживаем, что RAID 10 имеет вдвое большую производительность чтения по сравнению с RAID 0!
RAID 5 становится немного сложнее. Число операций ввода-вывода в секунду при записи будет выражаться как (R + 1) * X)/4. Число операций ввода-вывода в секунду при чтении выражается как (R +1) * X). RAID 6, как мы и ожидаем, следует шаблону RAID 5. Запись IOPS для RAID 6 равна (R + 2) * X)/6. А операции чтения IOPS выражаются как (R + 2) * X).
Эта точка зрения меняет наше представление о производительности, и, если рассматривать исключительно производительность чтения, RAID 0 становится самым медленным уровнем RAID, а не самым быстрым, а RAID 10 становится самым быстрым как для чтения, так и для записи, независимо от значений R. и Х!
Давайте возьмем реальный пример 10 дисков по 2 ТБ для достижения 20 ТБ полезной емкости, при этом каждый диск имеет производительность 100 операций ввода-вывода в секунду и предположим соотношение 50/50. Результирующим числом операций ввода-вывода в секунду будет: RAID 0 с 1000 смешанных операций ввода-вывода в секунду, RAID 10 с 1500 смешанными операциями ввода-вывода в секунду (2000 RIOPS / 1000 WIOPS), RAID 5 с 687,5 смешанными операциями ввода-вывода в секунду (1100 RIOPS / 275 WIOPS) и RAID 6 с 700 смешанными операциями ввода-вывода в секунду (1200 RIOPS / 200 WIOPS). RAID 10 здесь является явным победителем.
Задержка и влияние на систему при использовании программного RAID
Как мы отмечали ранее, RAID 0 и RAID 10 фактически не требуют системных затрат. По сути, операция зеркального отображения не требует вычислительных усилий и неизмеримо мала во всех смыслах и целях.
RAID с четностью требует вычислительных затрат, что приводит к задержке на уровне хранения и потреблению системных ресурсов. Конечно, эти ресурсы выделяются для RAID-массива, если мы используем аппаратный RAID. У них нет другой функции, кроме как быть потребляемыми в этой роли. Однако, если мы используем программный RAID, это системные ресурсы общего назначения (в основном ЦП), используемые для обработки RAID-массива. Влияние на очень маленькую систему с большим объемом RAID по-прежнему минимально, но его можно измерить и его следует учитывать, хотя бы незначительно. Задержка и влияние на систему напрямую связаны друг с другом. Не существует простого способа определить задержку и влияние на систему на разных уровнях. Вот как это можно выразить:
- RAID 0 и RAID 10 фактически не имеют задержек и влияния на операционную систему.
- RAID 5 имеет некоторую задержку и влияние на операционную систему
- RAID 6 имеет примерно вдвое большую задержку вычислений и влияние на операционную систему, чем RAID 5.
Во многих случаях эта задержка и влияние на систему будут настолько малы, что их невозможно измерить стандартными системными инструментами. По мере того, как современные процессоры становятся все более мощными, задержка и влияние на систему будут продолжать уменьшаться. Примерно с 2001 года влияние считается незначительным для систем RAID 5 и RAID 6, даже на недорогих аппаратных средствах.
В сильно нагруженных системах с большим объемом активности RAID-контроля четности может возникнуть конфликт между подсистемой RAID и другими процессами. требующие системных ресурсов.
Десять лучших практик Arcserve
- Arcserve offline activation - полное руководство
- Защита ИТ-инфраструктуры в обрабатывающей промышленности
- Современные методы хранения и защиты данных
- NIST выпускает обновленную структуру кибербезопасности
- 10 пунктов в плане обеспечения непрерывности бизнеса
- Частное, публичное, гибридное или мультиоблако: в чем разница?
- Пять причин для использования технологии WORM
- Шаблон план аварийного восстановления из 5 шагов
- Кибербезопасность строится на резервном технологии WORM
- 5 распространенных алгоритмов шифрования и взгляд в будущее