Стандартные уровни RAID

редактировать
Любая из набора стандартных конфигураций избыточных массивов независимых дисков

В компьютерном хранилище, стандартные уровни RAID составляют базовый набор конфигураций RAID (избыточный массив независимых дисков), в которых используются методы чередования, зеркалирования. или четность для создания больших надежных хранилищ данных с нескольких компьютеров общего назначения жестких дисков (HDD). Наиболее распространенными типами являются RAID 0 (чередование), RAID 1 (зеркалирование) и его варианты, RAID 5 (распределенная четность) и RAID 6 (двойная четность). Уровни RAID и связанные с ними форматы данных стандартизированы Промышленной ассоциацией сетей хранения данных (SNIA) в стандарте Common RAID Disk Drive Format (DDF). Числовые значения служат только в качестве идентификаторов и не обозначают производительность, надежность, генерацию или какой-либо другой показатель.

Хотя большинство уровней RAID могут обеспечить хорошую защиту и восстановление после аппаратных дефектов или дефектных секторов / ошибок чтения (серьезных ошибок), они не обеспечивают никакой защиты от потери данных из-за катастрофических сбоев. (пожар, вода) или программные ошибки, такие как ошибка пользователя, сбой программного обеспечения или заражение вредоносным ПО. Для ценных данных RAID - это только один из строительных блоков более крупной схемы предотвращения потери данных и восстановления - он не может заменить план резервного копирования.

Содержание
  • 1 RAID 0
    • 1.1 Производительность
  • 2 RAID 1
    • 2.1 Производительность
  • 3 RAID 2
  • 4 RAID 3
  • 5 RAID 4
  • 6 RAID 5
  • 7 RAID 6
    • 7.1 Производительность
    • 7.2 Пример упрощенного контроля четности
    • 7.3 Общая система контроля четности
  • 8 Сравнение
  • 9 Системные последствия
  • 10 Вложенный RAID
  • 11 Нестандартные варианты
  • 12 Примечания
  • 13 Ссылки
  • 14 Дополнительная литература
  • 15 Внешние ссылки
RAID 0
Схема настройки RAID 0

RAID 0 (также известная как полоса набор или чередующийся том) разделяет («полосы ») данные равномерно по двум или более дискам, без информации четности, избыточности или отказоустойчивости. Поскольку RAID 0 не обеспечивает отказоустойчивости или избыточности, отказ одного диска приведет к отказу всего массива; в результате чередования данных по всем дискам сбой приведет к полной потере данных. Эта конфигурация обычно реализуется с заданной скоростью. RAID 0 обычно используется для повышения производительности, хотя его также можно использовать как способ создания большого логического тома из двух или более физических дисков.

Можно настроить RAID 0. создается с дисками разного размера, но пространство для хранения, добавляемое к массиву каждым диском, ограничено размером самого маленького диска. Например, если диск на 120 ГБ чередуется с диском на 320 ГБ, размер массива будет 120 ГБ × 2 = 240 ГБ. Однако некоторые реализации RAID позволяют использовать оставшиеся 200 ГБ для других целей.

На схеме в этом разделе показано, как данные распределяются по полосам Ax на двух дисках, с A1: A2 в качестве первой полосы, A3: A4 в качестве второй и т. Д. После определения размера полосы во время создание массива RAID 0, его необходимо поддерживать постоянно. Поскольку доступ к полосам осуществляется параллельно, массив RAID 0 с n дисками выглядит как один большой диск со скоростью передачи данных, в n раз превышающей скорость одного диска.

Производительность

Массив RAID 0 из n дисков обеспечивает скорость чтения и записи данных, в n раз превышающую скорость отдельных дисков, но без избыточности данных. В результате RAID 0 в основном используется в приложениях, требующих высокой производительности и допускающих более низкую надежность, например, в научных вычислениях или компьютерных играх.

Некоторые тесты настольных приложений показывают RAID 0 будет немного лучше, чем у одного диска. В другой статье были рассмотрены эти утверждения и сделан вывод о том, что «чередование не всегда увеличивает производительность (в определенных ситуациях оно фактически будет медленнее, чем настройка без RAID), но в большинстве случаев это приведет к значительному повышению производительности». Синтетические тесты показывают различные уровни повышения производительности при использовании нескольких жестких дисков или твердотельных накопителей в конфигурации RAID 0 по сравнению с производительностью одного диска. Однако некоторые синтетические тесты также показывают падение производительности для того же сравнения.

RAID 1
Схема настройки RAID 1

RAID 1 состоит из точной копии (или зеркало ) набора данных на двух или более дисках; Классическая зеркальная пара RAID 1 состоит из двух дисков. Эта конфигурация не предлагает четности, чередования или распределения дискового пространства на нескольких дисках, поскольку данные зеркально отражаются на всех дисках, принадлежащих массиву, а размер массива может быть равен размеру самого маленького диска-члена. Этот макет полезен, когда производительность или надежность чтения более важны, чем производительность записи или результирующая емкость хранилища данных.

Массив будет продолжать работать, пока работает хотя бы один диск-член.

Производительность

Любой запрос на чтение может обслуживаться и обрабатываться любым диском в массиве; таким образом, в зависимости от характера нагрузки ввода-вывода, производительность произвольного чтения массива RAID 1 может равняться сумме производительности каждого члена, в то время как производительность записи остается на уровне одного диска. Однако, если в массиве RAID 1 используются диски с разной скоростью, общая производительность записи равна скорости самого медленного диска.

Синтетические тесты показывают различные уровни повышения производительности при использовании нескольких жестких дисков или твердотельных накопителей. конфигурация RAID 1 по сравнению с производительностью одного диска. Однако некоторые синтетические тесты также показывают падение производительности для того же сравнения.

RAID 2
Схема настройки RAID 2

RAID 2, который редко используется на практике, разбивает данные на бит (а не блочный) уровень и использует код Хэмминга для исправления ошибок. Диски синхронизируются контроллером для вращения с одинаковой угловой ориентацией (они достигают индекса одновременно), поэтому обычно он не может обслуживать несколько запросов одновременно. Однако, в зависимости от высокой скорости кода Хэмминга, многие шпиндели будут работать параллельно для одновременной передачи данных, так что возможны «очень высокие скорости передачи данных», как, например, в DataVault, где Одновременно передавалось 32 бита данных.

Поскольку на всех жестких дисках реализована внутренняя коррекция ошибок, сложность внешнего кода Хэмминга не давала большого преимущества перед контролем четности, поэтому RAID 2 применялся редко; это единственный исходный уровень RAID, который в настоящее время не используется.

RAID 3
Схема настройки RAID 3 из шестибайтовых блоков и двух байтов четности, показаны два блока данных разного цвета.

RAID 3, который редко используется на практике, состоит из чередования уровней байтов с выделенным диском четности. Одной из характеристик RAID 3 является то, что он, как правило, не может обслуживать несколько запросов одновременно, что происходит из-за того, что любой отдельный блок данных по определению будет распределен по всем членам набора и будет находиться в одном и том же физическом месте на каждом диске. Следовательно, любая операция ввода-вывода требует активности на каждом диске и обычно требует синхронизированных шпинделей.

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

Требование, чтобы все диски вращались синхронно (в шаге блокировки ), добавляло конструктивных соображений, которые обеспечивали нет существенных преимуществ перед другими уровнями RAID. И RAID 3, и RAID 4 были быстро заменены на RAID 5. RAID 3 обычно реализовывался аппаратно, и проблемы с производительностью решались за счет использования больших дисковых кешей.

RAID 4
Диаграмма 1: Настройка RAID 4 с выделенными четность диск, каждый цвет которого представляет группу блоков в соответствующем блоке четность (полоса)

RAID 4 состоит из блока -уровня чередование с выделенным диском четности. Благодаря своей структуре RAID 4 обеспечивает хорошую производительность случайного чтения, в то время как производительность случайной записи низка из-за необходимости записи всех данных четности на один диск.

На диаграмме 1 чтение запрос блока A1 будет обслуживаться диском 0. Одновременный запрос чтения для блока B1 должен ждать, но запрос чтения для B2 может одновременно обслуживаться диском 1.

RAID 5
Схема RAID 5 настройка с распределенной четностью , где каждый цвет представляет группу блоков в соответствующем блоке четности (полоса). Эта диаграмма показывает левый асимметричный алгоритм

RAID 5, состоящий из чередования на уровне блоков с распределенной четностью. В отличие от RAID 4, информация о четности распределяется между дисками. Для работы требуется наличие всех приводов, кроме одного. При выходе из строя одного диска последующие чтения могут быть рассчитаны на основе распределенной четности, так что данные не будут потеряны. Для RAID 5 требуется как минимум три диска.

По сравнению с RAID 4 распределенная четность в RAID 5 выравнивает нагрузку на выделенный диск четности среди всех участников RAID. Кроме того, производительность записи увеличивается, поскольку все члены RAID участвуют в обслуживании запросов на запись. Хотя это будет не так эффективно, как установка с чередованием (RAID 0), поскольку четность все еще должна быть записана, это больше не является узким местом.

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

RAID 6
Схема настройки RAID 6, которая идентична RAID 5, за исключением добавления второго блока четности

RAID 6 расширяет RAID 5, добавляя еще один четность блок; таким образом, он использует чередование уровней блоков с двумя блоками четности, распределенными по всем дискам-участникам.

Согласно Ассоциации сетей хранения данных (SNIA), определение RAID 6: «Любой форма RAID, которая может продолжать выполнять запросы чтения и записи ко всем виртуальным дискам RAID-массива при наличии любых двух одновременных сбоев дисков. Несколько методов, включая вычисления данных двойной проверки (четность и Рид-Соломон ), данные двойной ортогональной проверки на четность и диагональную четность, были использованы для реализации RAID уровня 6. "

Производительность

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

Когда используется диагональный или ортогональный двойной контроль четности, для операций записи необходимо второе вычисление четности. Это вдвое увеличивает накладные расходы ЦП для записи RAID-6 по сравнению с уровнями RAID с одинарной четностью. Когда используется код Рида-Соломона, вычисление второй четности не требуется. Преимущество Reed Solomon заключается в том, что вся информация избыточности может содержаться в пределах заданной полосы.

Упрощенный пример четности

Предположим, мы хотим распределить наши данные по n {\ displaystyle n}nблокам. Наша цель - определить два значения четности P {\ displaystyle \ mathbf {P}}\ mathbf {P} и Q {\ displaystyle \ mathbf {Q}}\ mathbf {Q} , известных как синдромы, приводящие к системе из n + 2 {\ displaystyle n + 2}n + 2 физических дисков, устойчивой к потере любых двух из них. Чтобы сгенерировать более одного независимого синдрома, нам нужно будет выполнить наши вычисления четности для блоков данных размером k>1. {\ displaystyle k>1.}{\displaystyle k>1.} На практике типичным выбором является размер блока k = 8 {\ displaystyle k = 8}{ \ displaystyle k = 8} , то есть разбивка данных по байтам. Мы будем обозначать основание -2 представление блока данных D {\ displaystyle D}Dкак d 0 d 1... dk - 1 {\ displaystyle d_ {0} d_ {1}... d_ {k-1}}{\ displaystyle d_ {0} d_ {1}... d_ {k-1}} , где каждый di {\ displaystyle d_ {i}}d_ {i} равен 0 или 1.

Если мы используем небольшое количество фрагментов n ≤ k {\ displaystyle n \ leq k}{\ displaystyle n \ leq k} , мы можем использовать простое вычисление четности, которое поможет мотивировать использование системы Рида-Соломона в общем случае. Для нашего первого значения четности P {\ displaystyle \ mathbf {P}}\ mathbf {P} мы вычисляем простой XOR данных по полосам, как в случае с RAID 5. Это записывается

P = D 0 ⊕ D 1 ⊕ D 2 ⊕... ⊕ D n - 1 {\ displaystyle \ mathbf {P} = D_ {0} \; \ oplus \; D_ {1} \; \ oplus \; D_ {2} \; \ oplus \;... \; \ oplus \; D_ {n-1}}{\ displaystyle \ mathbf {P} = D_ {0} \; \ oplus \; D_ {1} \; \ oplus \; D_ {2} \; \ oplus \;... \; \ oplus \; D_ {n-1}} где ⊕ {\ displaystyle \ oplus}\ oplus обозначает оператор XOR. Второе значение четности аналогично, но с битовым сдвигом каждого блока данных на разную величину. Запись s h i f t (D) = d 1... dk - 1 d 0 {\ displaystyle \ mathrm {shift} (D) = d_ {1}... d_ {k-1} d_ {0}}{\ displaystyle \ mathrm {shift} (D) = d_ {1}... d_ {k- 1} d_ {0}} , мы определяем Q = D 0 ⊕ сдвиг (D 1) ⊕ сдвиг 2 (D 2) ⊕... ⊕ shiftn - 1 (D n - 1) {\ displaystyle \ mathbf {Q} = D_ {0} \ oplus \ mathrm {shift} (D_ {1}) \ oplus \ mathrm {shift} ^ {2} (D_ { 2}) \ oplus... \ oplus \ mathrm {shift} ^ {n-1} (D_ {n-1})}{\ displaystyle \ mathbf {Q} = D_ {0} \ oplus \ mathrm {shift} (D_ {1}) \ oplus \ mathrm {shift} ^ {2} (D_ {2}) \ oplus... \ oplus \ mathrm {shift} ^ {n-1} (D_ {n-1})} В случае отказа одного диска данные могут быть пересчитаны из P {\ displaystyle \ mathbf {P}}\ mathbf {P} точно так же, как в случае с RAID 5. Мы покажем, что мы также можем восстановить после одновременного отказа 2 дисков. Если мы потеряем блок данных и P {\ displaystyle \ mathbf {P}}\ mathbf {P} , мы сможем восстановить Q {\ displaystyle \ mathbf {Q}}\ mathbf {Q} а остальные данные с использованием того факта, что D ⊕ D = 0 {\ displaystyle D \ oplus D = 0}{\ displaystyle D \ oplus D = 0} . Предположим, что в системе из n = 4 {\ displaystyle n = 4}n = 4 фрагментов диск, содержащий фрагмент D 3 {\ displaystyle D_ {3}}D_ {3} , имеет не удалось. Мы можем вычислить Q ⊕ D 0 ⊕ shift (D 1) ⊕ shift 2 (D 2) = shift 3 (D 3) {\ displaystyle \ mathbf {Q} \ oplus D_ {0} \ oplus \ mathrm {shift } (D_ {1}) \ oplus \ mathrm {shift} ^ {2} (D_ {2}) = \ mathrm {shift} ^ {3} (D_ {3})}{\ displaystyle \ mathbf {Q} \ oplus D_ {0} \ oplus \ mathrm {shift} (D_ {1}) \ oplus \ mathrm {shift} ^ {2} (D_ {2}) = \ mathrm {shift} ^ {3} (D_ {3})}

и восстановить потерянные данные D 3 {\ displaystyle D_ {3}}D_ {3} , отменив битовый сдвиг. Мы также можем восстановиться после сбоя двух дисков с данными, вычислив XOR для P {\ displaystyle \ mathbf {P}}\ mathbf {P} и Q {\ displaystyle \ mathbf {Q}}\ mathbf {Q} с оставшимися данными. Если бы в предыдущем примере блок D 0 {\ displaystyle D_ {0}}D_ {0} также был потерян, мы бы вычислили

A = P ⊕ D 1 ⊕ D 2 = D 0 ⊕ D 3 {\ displaystyle A = \ mathbf {P} \ oplus D_ {1} \ oplus D_ {2} = D_ {0} \ oplus D_ {3}}{\ displaystyle A = \ mathbf { P} \ oplus D_ {1} \ oplus D_ {2} = D_ {0} \ oplus D_ {3}} B = Q ⊕ сдвиг (D 1) ⊕ сдвиг 2 (D 2) = D 0 ⊕ сдвиг 3 (D 3) {\ Displaystyle B = \ mathbf {Q} \ oplus \ mathrm {shift} (D_ {1}) \ oplus \ mathrm {shift} ^ {2} (D_ {2}) = D_ {0} \ oplus \ mathrm {shift} ^ {3} (D_ {3})}{\ displaystyle B = \ mathbf {Q} \ oplus \ mathrm {shift} (D_ {1}) \ oplus \ mathrm {shift} ^ {2} (D_ {2}) = D_ {0} \ oplus \ mathrm {shift} ^ {3} (D_ {3})} На поразрядном уровне это представляет систему 2 k {\ displaystyle 2k}2kуравнений в 2 k {\ displaystyle 2k}2kнеизвестных, которые однозначно определяют потерянные данные.

Эта система больше не будет работать при использовании большего количества дисков n>k {\ displaystyle n>k}{\displaystyle n>k} . Это потому, что если мы многократно применяем оператор сдвига k {\ displaystyle k}k раз для фрагмента длиной k {\ displaystyle k}k , мы вернемся к тому месту, где начали. Если мы попытаемся применить описанный выше алгоритм к системе, содержащей k {\ displaystyle k}k диски данных, правая часть второго уравнения будет иметь вид D 0 ⊕ shiftk (D k) = D 0 ⊕ D k {\ displaystyle D_ {0} \ oplus \ mathrm {shift} ^ {k} (D_ {k}) = D_ {0} \ oplus D_ {k}}{\ displaystyl е D_ {0} \ oplus \ mathrm {shift} ^ {k} (D_ {k}) = D_ {0} \ oplus D_ {k}} , что совпадает с первым набором уравнений. Это приведет только к вдвое меньше уравнений, чем необходимо для решения недостающих значений.

Общая система контроля четности

Можно поддерживать гораздо большее количество дисков, выбрав четность действовать более осторожно. Проблема, с которой мы сталкиваемся, заключается в том, чтобы гарантировать, что система уравнений над конечным полем Z 2 {\ displaystyle \ mathbb {Z} _ {2}}\ mathbb {Z} _ {2} имеет уникальное решение, поэтому мы обратимся к теория полиномиальных уравнений. Рассмотрим поле Галуа GF (m) {\ displaystyle GF (m)}GF (m) с m = 2 k {\ displaystyle m = 2 ^ {k}}m=2^{k}. Это поле изоморфно полиномиальному полю F 2 [x] / (p (x)) {\ displaystyle F_ {2} [x] / (p (x))}{\ displaystyle F_ {2} [x] / (p (x))} для подходящего неприводимый многочлен p (x) {\ displaystyle p (x)}p (x) степени k {\ displaystyle k}k над Z 2 {\ Displaystyle \ mathbb {Z} _ {2}}\ mathbb {Z} _ {2} . Мы представим элементы данных D {\ displaystyle D}Dкак многочлены D = d k - 1 x k - 1 + d k - 2 x k - 2 +... + d 1 Икс + d 0 {\ Displaystyle \ mathbf {D} = d_ {k-1} x ^ {k-1} + d_ {k-2} x ^ {k-2} +... + d_ { 1} x + d_ {0}}{\ displaystyle \ mathbf {D} = d_ {k-1} x ^ {k-1} + d_ {k-2} x ^ { k-2} +... + d_ {1} x + d_ {0}} в поле Галуа. Пусть D 0,..., D n - 1 ∈ GF (m) {\ displaystyle \ mathbf {D} _ {0},..., \ mathbf {D} _ {n-1} \ in GF (m)}{\ displaystyle \ mathbf {D} _ {0},..., \ mathbf {D} _ {n-1} \ in GF (m)} соответствуют полосам данных на жестких дисках, закодированных таким образом как элементы поля. Мы будем использовать ⊕ {\ displaystyle \ oplus}\ oplus для обозначения сложения в поле и конкатенацию для обозначения умножения. Повторное использование ⊕ {\ displaystyle \ oplus}\ oplus является преднамеренным: это потому, что добавление в конечное поле Z 2 {\ displaystyle \ mathbb {Z} _ {2}}\ mathbb {Z} _ {2} представляет собой оператор XOR, поэтому вычисление суммы двух элементов эквивалентно вычислению XOR над полиномиальными коэффициентами.

A генератор поля - это такой элемент поля, что g i {\ displaystyle g ^ {i}}г ^ {i} отличается для каждого неотрицательного i < m − 1 {\displaystyle i{\ displaystyle i <m-1} . Это означает, что каждый элемент поля, кроме значения 0 {\ displaystyle 0}{\ displaystyle 0} , может быть записан как степень g. {\ displaystyle g.}g.У конечного поля гарантированно есть хотя бы один генератор. Выберите один такой генератор g {\ displaystyle g}g и определите P {\ displaystyle \ mathbf {P}}\ mathbf {P} и Q {\ displaystyle \ mathbf {Q}}\ mathbf {Q} следующим образом:

P = ⨁ i D i = D 0 ⊕ D 1 ⊕ D 2 ⊕... ⊕ D N - 1 {\ displaystyle \ mathbf {P} = \ bigoplus _ {i} {\ mathbf {D} _ {i}} = \ mathbf {D} _ {0} \; \ oplus \; \ mathbf { D} _ {1} \; \ oplus \; \ mathbf {D} _ {2} \; \ oplus \;... \; \ oplus \; \ mathbf {D} _ {n-1}}{\ displaystyle \ mathbf {P} = \ bigoplus _ {i} {\ mathbf {D} _ {i}} = \ mathbf {D} _ {0} \; \ oplus \; \ mathbf {D} _ {1} \; \ oplus \; \ mathbf {D} _ {2} \; \ oplus \;... \; \ oplus \; \ mathbf {D} _ {n -1}} Q знак равно ⨁ igi D я знак равно g 0 D 0 ⊕ g 1 D 1 ⊕ g 2 D 2 ⊕... ⊕ gn - 1 D n - 1 {\ displaystyle \ mathbf {Q} = \ bigoplus _ {i} {g ^ {i} \ mathbf {D} _ {i}} = g ^ {0} \ mathbf {D} _ {0} \; \ oplus \; g ^ {1} \ mathbf {D} _ {1} \; \ oplus \; g ^ {2} \ mathbf {D} _ {2} \; \ oplus \;... \; \ oplus \; g ^ {n-1} \ mathbf {D} _ {n-1}}{\ displaystyle \ mathbf {Q} = \ bigoplus _ {i} {g ^ {i} \ mathbf {D} _ {i}} = g ^ {0} \ mathbf {D} _ {0} \; \ oplus \; g ^ {1} \ mathbf {D} _ {1} \; \ oplus \; g ^ {2} \ mathbf {D} _ {2} \; \ oplus \;... \; \ oplus \; g ^ { п-1} \ mathbf {D} _ {n-1}}

Как и раньше, первая контрольная сумма P {\ displaystyle \ mathbf {P}}\ mathbf {P} - это просто операция XOR для каждой полосы, хотя теперь она интерпретируется как полином. Эффект g i {\ displaystyle g ^ {i}}г ^ {i} можно рассматривать как действие тщательно подобранного регистра сдвига с линейной обратной связью на блок данных. В отличие от битового сдвига в упрощенном примере, который можно было применить только k {\ displaystyle k}k раз до начала повторения кодирования, применяя оператор g {\ displaystyle g}g несколько раз гарантированно произведут m = 2 k - 1 {\ displaystyle m = 2 ^ {k} -1}{\ displaystyle m = 2 ^ {k} -1} уникальных обратимых функций, которые позволят получить фрагмент длиной k {\ displaystyle k}k для поддержки до 2 k - 1 {\ displaystyle 2 ^ {k} -1}2^{k}-1частей данных.

Если один блок данных потерян, ситуация аналогична предыдущей. В случае потери двух блоков данных мы можем вычислить формулы восстановления алгебраически. Предположим, что D i {\ displaystyle \ mathbf {D} _ {i}}{\ displaystyle \ mathbf {D} _ {i}} и D j {\ displaystyle \ mathbf {D} _ {j}}{\ displaystyle \ mathbf {D} _ {j}} являются потерянными значениями с i ≠ j {\ displaystyle i \ neq j}i \ neq j , тогда, используя другие значения D {\ displaystyle D}D, мы находим константы A {\ displaystyle A}A и B {\ displaystyle B}B :

A = P ⊕ (⨁ ℓ: ℓ ≠ iand ℓ ≠ j D ℓ) = D я ⊕ D J {\ Displaystyle A = \ mathbf {P} \; \ oplus \; (\ bigoplus _ {\ ell: \; \ ell \ not = i \; \ mathrm {и} \; \ ell \ not = j} {D _ {\ ell}}) = D_ {i} \ oplus D_ {j}}{\ displaystyle A = \ mathbf {P} \; \ oplus \; (\ bigoplus _ {\ ell: \; \ ell \ not = i \; \ mathrm {and} \; \ ell \ not = j} {D _ {\ ell}}) = D_ {i} \ oplus D_ {j}} B = Q ⊕ (⨁ ℓ: ℓ ≠ iand ℓ ≠ jg ℓ D ℓ) = gi D i ⊕ gj D j {\ displaystyle B = \ mathbf {Q} \; \ oplus \; (\ bigoplus _ {\ ell: \; \ ell \ not = i \; \ mathrm {and} \; \ ell \ not = j} { g ^ {\ ell} D _ {\ ell}}) = g ^ {i} D_ {i} \ oplus g ^ {j} D_ {j}}{\ displaystyle B = \ mathbf {Q} \; \ oplus \; ( \ bigoplus _ {\ ell: \; \ ell \ not = i \; \ mathrm {and} \; \ ell \ not = j} {g ^ {\ ell} D _ {\ ell}}) = g ^ {i } D_ {i} \ oplus g ^ {j} D_ {j}}

Мы можем решить для D i {\ displaystyle D_ {i}}D_ {i} во втором уравнении и подставьте его в первое, чтобы найти D j = (gm - i + j 1) - 1 (gm - i B ⊕ A) {\ displaystyle D_ {j} = (g ^ {m-i + j} \ oplus 1) ^ {- 1} (g ^ {mi} B \ oplus A)}{\ displaystyle D_ {j} = (g ^ {m-i + j} \ oplus 1) ^ {- 1 } (g ^ {mi} B \ oplus A)} , а затем D i = A ⊕ D j {\ displaystyle D_ {i} = A \ oplus D_ {j}}{\ displaystyle D_ {i} = A \ oplus D_ {j}} .

В отличие от P, вычисление Q относительно интенсивно загружает процессор, поскольку включает в себя умножение многочленов в F 2 [x] / (p (x)) {\ displaystyle F_ {2} [x] / (p (x))}{\ displaystyle F_ {2} [x] / (p (x))} . Это можно уменьшить с помощью аппаратной реализации или использования FPGA.

Comparison

В следующей таблице представлен обзор некоторых соображений для стандартных уровней RAID. В каждом случае:

  • Эффективность пространства массива выражается в виде числа дисков n; это выражение обозначает дробное значение от нуля до единицы, представляющее доступную для использования долю суммы емкостей дисков. Например, если три диска расположены в RAID 3, это дает эффективность использования пространства массива 1 - 1 / n = 1 - 1/3 = 2/3 ≈ 67%; таким образом, если каждый диск в этом примере имеет емкость 250 ГБ, то общая емкость массива составляет 750 ГБ, но емкость, которую можно использовать для хранения данных, составляет только 500 ГБ.
УровеньОписаниеМинимальное количество дисковЭффективное использование пространстваОтказоустойчивостьСкорость чтенияСкорость записи
как фактор для одного диска
RAID 0блочный уровень чередование без четности или зеркалирование 21Нетnn
RAID 1Зеркальное отображение без четности или чередования21 / nn - 1 отказов дисковn1
RAID 2Чередование битового уровня с кодом Хэмминга для исправления ошибок31 - 1 / n log 2 (n + 1)Сбой одного дискаЗависитЗависит
RAID 3Чередование байтов с выделенной четностью31 - 1 / nОтказ одного дискаn - 1n - 1
RAID 4Чередование на уровне блоков с выделенной четностью31 - 1 / nОтказ одного дискаn - 1n - 1
RAID 5Чередование на уровне блоков с распределенной четностью31 - 1 / nОтказ одного дискаnодин сектор: 1/4. заполнено stripe: n - 1
RAID 6Чередование на уровне блоков с двойной распределенной четностью41-2 / nДва сбоя дискаnодин сектор: 1/6. полная полоса: n - 2
Последствия для системы

При измерении производительности ввода-вывода пяти файловых систем с пятью конфигурациями хранения - один SSD, RAID 0, RAID 1, RAID 10 и RAID 5 это было показано, что F2FS на RAID 0 и RAID 5 с восемью твердотельными накопителями превосходит EXT4 в 5 и 50 раз соответственно. Измерения также показывают, что RAID-контроллер может быть значительным узким местом при создании RAID-системы с высокоскоростными твердотельными накопителями.

Вложенный RAID

Комбинации двух или более стандартных уровней RAID. Они также известны как RAID 0 + 1 или RAID 01, RAID 0 + 3 или RAID 03, RAID 1 + 0 или RAID 10, RAID 5 + 0 или RAID 50, RAID 6 + 0 или RAID 60 и RAID 10 + 0. или RAID 100.

Нестандартные варианты

В дополнение к стандартным и вложенным уровням RAID альтернативы включают нестандартные уровни RAID и не-RAID архитектуры дисков. Архитектуры дисков без RAID обозначаются аналогичными терминами и акронимами, в частности, JBOD («просто набор дисков»), SPAN / BIG и MAID. («массив бездействующих дисков»).

Примечания
Ссылки
Дополнительная литература
Внешние ссылки

.

Последняя правка сделана 2021-06-09 07:37:02
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте