В компьютерном хранилище стандартные уровни RAID включают базовый набор конфигураций RAID («избыточный массив независимых дисков» или «избыточный массив недорогих дисков»), которые используют методы чередования , зеркалирования или четности для создания больших надежных хранилищ данных из нескольких жестких дисков компьютеров общего назначения (HDD). Наиболее распространенными типами являются RAID 0 (чередование), RAID 1 (зеркалирование) и его варианты, RAID 5 (распределенная четность) и RAID 6 (двойная четность). Несколько уровней RAID также могут быть объединены или вложены , например, RAID 10 (чередование зеркал) или RAID 01 (зеркальные наборы полос). Уровни RAID и связанные с ними форматы данных стандартизированы Ассоциацией индустрии сетевых хранилищ данных (SNIA) в стандарте Common RAID Disk Drive Format (DDF). [1] Числовые значения служат только идентификаторами и не означают производительность, надежность, поколение, иерархию или любую другую метрику.
Хотя большинство уровней RAID могут обеспечить хорошую защиту и восстановление после аппаратных дефектов или ошибок чтения/сбойных секторов ( жестких ошибок ), они не обеспечивают никакой защиты от потери данных из-за катастрофических сбоев (пожар, вода) или программных ошибок , таких как ошибка пользователя, сбой программного обеспечения или заражение вредоносным ПО. Для ценных данных RAID является лишь одним из строительных блоков более крупной схемы предотвращения и восстановления данных — он не может заменить план резервного копирования .
RAID 0 (также известный как набор полос или том с полосами ) равномерно распределяет (« полосы ») данные по двум или более дискам без информации о четности , избыточности или отказоустойчивости . Поскольку RAID 0 не обеспечивает отказоустойчивости или избыточности, отказ одного диска приведет к отказу всего массива из-за того, что данные будут распределены по всем дискам. Такая конфигурация обычно реализуется с целью увеличения скорости. [2] [3] RAID 0 обычно используется для повышения производительности, хотя его также можно использовать как способ создания большого логического тома из двух или более физических дисков. [4]
Настройка RAID 0 может быть создана с дисками разного размера, но дисковое пространство, добавляемое к массиву каждым диском, ограничено размером наименьшего диска. Например, если диск объемом 120 ГБ чередуется с диском объемом 320 ГБ, размер массива составит 120 ГБ × 2 = 240 ГБ. Однако некоторые реализации RAID позволяют использовать оставшиеся 200 ГБ для других целей.
Диаграмма в этом разделе показывает, как данные распределяются по полосам на двух дисках, где A1:A2 — первая полоса, A3:A4 — вторая и т. д. После того, как размер полосы определен во время создания массива RAID 0, его необходимо поддерживать постоянно. Поскольку доступ к полосам осуществляется параллельно, n -дисковый массив RAID 0 выглядит как один большой диск со скоростью передачи данных в n раз выше, чем скорость одного диска.
Массив RAID 0 из n дисков обеспечивает скорость чтения и записи данных, которая в n раз выше, чем скорость отдельных дисков, но без избыточности данных. В результате RAID 0 в основном используется в приложениях, требующих высокой производительности и допускающих более низкую надежность, например, в научных вычислениях [5] или компьютерных играх . [6]
Некоторые тесты настольных приложений показывают, что производительность RAID 0 немного лучше, чем у одного диска. [7] [8] Другая статья рассмотрела эти утверждения и пришла к выводу, что «чередование не всегда увеличивает производительность (в определенных ситуациях оно будет фактически медленнее, чем установка без RAID), но в большинстве ситуаций оно даст значительное улучшение производительности». [9] [10] Синтетические тесты показывают разные уровни улучшения производительности при использовании нескольких HDD или SSD в установке RAID 0 по сравнению с производительностью одного диска. Однако некоторые синтетические тесты также показывают падение производительности для того же сравнения. [11] [12]
RAID 1 состоит из точной копии (или зеркала ) набора данных на двух или более дисках; классическая зеркальная пара RAID 1 содержит два диска. Эта конфигурация не обеспечивает четности, чередования или распределения дискового пространства по нескольким дискам, поскольку данные зеркалируются на всех дисках, принадлежащих массиву, а массив может быть только такого размера, как самый маленький диск-участник. Такая схема полезна, когда производительность чтения или надежность важнее производительности записи или результирующей емкости хранения данных. [13] [14]
Массив будет продолжать работать до тех пор, пока хотя бы один из его дисков будет работать. [15]
Любой запрос на чтение может быть обслужен и обработан любым диском в массиве; таким образом, в зависимости от характера нагрузки ввода-вывода, производительность случайного чтения массива RAID 1 может равняться сумме производительности каждого члена, [a] в то время как производительность записи остается на уровне одного диска. Однако, если в массиве RAID 1 используются диски с разными скоростями, общая производительность записи равна скорости самого медленного диска. [14] [15]
Синтетические тесты показывают различные уровни улучшения производительности при использовании нескольких HDD или SSD в конфигурации RAID 1 по сравнению с производительностью одного диска. Однако некоторые синтетические тесты также показывают падение производительности для того же сравнения. [11] [12]
RAID 2 , который редко используется на практике, распределяет данные на уровне битов (а не блоков) и использует код Хэмминга для исправления ошибок . Диски синхронизируются контроллером для вращения в одной и той же угловой ориентации (они достигают индекса в одно и то же время [16] ), поэтому он, как правило, не может обслуживать несколько запросов одновременно. [17] [18] Однако, в зависимости от кода Хэмминга с высокой скоростью , многие шпиндели будут работать параллельно для одновременной передачи данных, так что возможны «очень высокие скорости передачи данных» [19] , как, например, в DataVault Thinking Machines, где одновременно передавались 32 бита данных. IBM 353 [20] также наблюдал похожее использование кода Хэмминга и был способен передавать 64 бита данных одновременно, вместе с 8 битами ECC.
Поскольку все жесткие диски реализовали внутреннюю коррекцию ошибок, сложность внешнего кода Хэмминга не давала особых преимуществ по сравнению с контролем четности, поэтому RAID 2 реализовывался редко; это единственный исходный уровень RAID, который в настоящее время не используется. [17] [18]
RAID 3 , который редко используется на практике, состоит из байтового страйпинга с выделенным диском четности . Одной из характеристик RAID 3 является то, что он, как правило, не может обслуживать несколько запросов одновременно, что происходит, поскольку любой отдельный блок данных будет, по определению, распределен по всем членам набора и будет находиться в одном и том же физическом месте на каждом диске. Поэтому любая операция ввода-вывода требует активности на каждом диске и обычно требует синхронизированных шпинделей.
Это делает его подходящим для приложений, требующих наивысшей скорости передачи данных при длительных последовательных чтениях и записях, например, для редактирования несжатого видео . Приложения, которые выполняют небольшие чтения и записи из случайных мест на диске, получат худшую производительность от этого уровня. [18]
Требование, чтобы все диски вращались синхронно (в режиме блокировки ), добавило конструктивные соображения, которые не давали существенных преимуществ по сравнению с другими уровнями RAID. RAID 3 и RAID 4 были быстро заменены RAID 5. [21] RAID 3 обычно реализовывался на аппаратном уровне, а проблемы производительности решались за счет использования больших дисковых кэшей. [18]
RAID 4 состоит из блочного страйпинга с выделенным диском четности . В результате своей компоновки RAID 4 обеспечивает хорошую производительность случайных чтений, в то время как производительность случайных записей низкая из-за необходимости записывать все данные четности на один диск, [22] если только файловая система не поддерживает RAID-4 и не компенсирует это.
Преимущество RAID 4 заключается в том, что его можно быстро расширить в режиме онлайн, без пересчета четности, при условии, что вновь добавленные диски полностью заполнены нулевыми байтами.
На схеме 1 запрос на чтение для блока A1 будет обслуживаться диском 0. Одновременный запрос на чтение для блока B1 должен будет подождать, но запрос на чтение для B2 может обслуживаться одновременно диском 1.
RAID 5 состоит из блочного страйпинга с распределенной четностью. В отличие от RAID 4, информация о четности распределяется между дисками. Для работы требуется, чтобы присутствовали все диски, кроме одного. При отказе одного диска последующие чтения могут быть рассчитаны на основе распределенной четности, так что данные не будут потеряны. [5] RAID 5 требует не менее трех дисков. [23]
Существует множество схем размещения данных и четности в массиве дисков RAID 5 в зависимости от последовательности записи на диски [24] , а именно:
На рисунке показаны 1) блоки данных, записанные слева направо, 2) блок четности в конце полосы и 3) первый блок следующей полосы, не на том же диске, что и блок четности предыдущей полосы. Его можно обозначить как макет Left Asynchronous RAID 5 [24], и это единственный макет, указанный в последнем издании The Raid Book [25], опубликованном несуществующим Raid Advisory Board. [26] В синхронном макете первый блок данных следующей полосы записывается на тот же диск, что и блок четности предыдущей полосы.
По сравнению с RAID 4, распределенная четность RAID 5 выравнивает нагрузку выделенного диска четности среди всех членов RAID. Кроме того, производительность записи увеличивается, поскольку все члены RAID участвуют в обслуживании запросов на запись. Хотя это не будет столь же эффективно, как настройка чередования (RAID 0), поскольку четность все равно должна быть записана, это больше не является узким местом. [27]
Поскольку расчет четности выполняется на всей полосе, небольшие изменения в массиве приводят к усилению записи [ требуется ссылка ] : в худшем случае, когда необходимо записать один логический сектор, необходимо прочитать исходный сектор и соответствующий сектор четности, исходные данные удаляются из четности, новые данные вычисляются в четности, и записываются как новый сектор данных, так и новый сектор четности.
RAID 6 расширяет RAID 5, добавляя второй блок четности ; таким образом, он использует чередование на уровне блоков с двумя блоками четности, распределенными по всем дискам-участникам. [28] RAID 6 требует не менее четырех дисков.
Как и в RAID 5, существует множество схем дисковых массивов RAID 6 в зависимости от направления записи блоков данных, расположения блоков четности относительно блоков данных и того, записан ли первый блок данных последующей полосы на тот же диск, что и последний блок четности предыдущей полосы. Рисунок справа — лишь одна из многих таких схем.
Согласно Ассоциации индустрии сетевых устройств хранения данных (SNIA), определение RAID 6 следующее: «Любая форма RAID, которая может продолжать выполнять запросы на чтение и запись для всех виртуальных дисков RAID-массива при наличии любых двух одновременных отказов дисков. Для реализации RAID уровня 6 использовались несколько методов, включая вычисления с двойной проверкой данных (четность и Рида-Соломона ), ортогональные данные с двойной проверкой четности и диагональная четность». [29]
Второй блок обычно обозначается как Q, а первый блок обозначается как P. Обычно блок P вычисляется как четность (XOR) данных, так же как RAID 5. Различные реализации RAID 6 используют различные коды стирания для вычисления блока Q, часто один из кодов Рида-Соломона, EVENODD, Row Diagonal Parity (RDP), Mojette или Liberation. [30] [31] [32] [33]
RAID 6 не имеет штрафа производительности для операций чтения, но имеет штраф производительности для операций записи из-за накладных расходов, связанных с вычислениями четности. Производительность сильно варьируется в зависимости от того, как RAID 6 реализован в архитектуре хранения производителя — в программном обеспечении, встроенном программном обеспечении или с использованием встроенного программного обеспечения и специализированных ASIC для интенсивных вычислений четности. RAID 6 может считывать с той же скоростью, что и RAID 5 с тем же количеством физических дисков. [34]
При использовании диагональной или ортогональной двойной четности для операций записи необходимо второе вычисление четности. Это удваивает нагрузку на процессор для записи RAID-6 по сравнению с уровнями RAID с одинарной четностью. При использовании кода Рида-Соломона второе вычисление четности не требуется. [ необходима цитата ] Код Рида-Соломона имеет преимущество в том, что позволяет содержать всю избыточную информацию в пределах заданной полосы. [ необходима уточнение ]
Можно поддерживать гораздо большее количество приводов, выбирая функцию четности более тщательно. Проблема, с которой мы сталкиваемся, заключается в том, чтобы гарантировать, что система уравнений над конечным полем имеет единственное решение. Для этого мы можем использовать теорию полиномиальных уравнений над конечными полями.
Рассмотрим поле Галуа с . Это поле изоморфно полю полиномов для подходящего неприводимого полинома степени над . Мы представим элементы данных как полиномы в поле Галуа. Пусть соответствуют полосам данных на жестких дисках, закодированным как элементы поля таким образом. Мы будем использовать для обозначения сложения в поле, а конкатенацию для обозначения умножения. Повторное использование является намеренным: это связано с тем, что сложение в конечном поле представляет оператор XOR, поэтому вычисление суммы двух элементов эквивалентно вычислению XOR над коэффициентами полинома.
Генератор поля — это элемент поля, такой что отличается для каждого неотрицательного . Это означает, что каждый элемент поля, за исключением значения , может быть записан как степень Конечное поле гарантированно имеет по крайней мере один генератор. Выберите один такой генератор и определите и следующим образом:
Как и прежде, первая контрольная сумма — это просто XOR каждой полосы, хотя теперь она интерпретируется как полином. Эффект можно рассматривать как действие тщательно выбранного линейного регистра сдвига с обратной связью на фрагменте данных. [35] В отличие от сдвига битов в упрощенном примере, который можно было применить только раз до того, как кодирование начало повторяться, многократное применение оператора гарантированно даст уникальные обратимые функции, что позволит фрагменту длиной поддерживать до фрагментов данных.
Если один фрагмент данных потерян, ситуация аналогична предыдущей. В случае двух потерянных фрагментов данных мы можем вычислить формулы восстановления алгебраически. Предположим, что и являются потерянными значениями с , тогда, используя другие значения , мы находим константы и :
Мы можем решить второе уравнение и подставить его в первое, чтобы найти , а затем .
В отличие от P , вычисление Q относительно интенсивно использует процессор, поскольку включает в себя умножение полиномов в . Это можно смягчить с помощью аппаратной реализации или с помощью ПЛИС .
Вышеприведенное решение матрицы Вандермонда можно расширить до тройной четности, но для дальнейшего требуется построение матрицы Коши . [36]
В следующей таблице представлен обзор некоторых соображений для стандартных уровней RAID. В каждом случае эффективность пространства массива задается как выражение в терминах количества дисков n ; это выражение обозначает дробное значение от нуля до единицы, представляющее собой часть суммы емкостей дисков, которая доступна для использования. Например, если три диска расположены в RAID 3, это дает эффективность пространства массива 1 − 1/ n = 1 − 1/3 = 2/3 ≈ 67% ; таким образом, если каждый диск в этом примере имеет емкость 250 ГБ, то массив имеет общую емкость 750 ГБ, но емкость, которая может быть использована для хранения данных, составляет только 500 ГБ. Различные конфигурации RAID также могут обнаруживать сбои во время так называемой очистки данных .
Исторически диски были подвержены более низкой надежности, и уровни RAID также использовались для определения того, какой диск в массиве вышел из строя в дополнение к тому, что вышел из строя диск. Хотя, как отметили Паттерсон и др., даже на заре RAID многие (хотя и не все) диски уже были способны находить внутренние ошибки с помощью кодов исправления ошибок. В частности, для обнаружения сбоя достаточно иметь зеркальный набор дисков, но двух дисков было недостаточно для определения того, какой из дисков вышел из строя без функций исправления ошибок. [37] Современные массивы RAID в основном зависят от способности диска идентифицировать себя как неисправный, что может быть обнаружено в ходе очистки. Избыточная информация используется для восстановления отсутствующих данных, а не для определения неисправного диска. Диски считаются неисправными, если они испытывают неустранимую ошибку чтения , которая возникает после того, как диск многократно пытался прочитать данные и вышел из строя. Корпоративные диски также могут сообщать об ошибках при гораздо меньшем количестве попыток, чем потребительские диски, в рамках TLER, чтобы гарантировать своевременное выполнение запроса на чтение. [38]
При измерении производительности ввода-вывода пяти файловых систем с пятью конфигурациями хранения — один SSD, RAID 0, RAID 1, RAID 10 и RAID 5 — было показано, что F2FS на RAID 0 и RAID 5 с восемью SSD превосходит EXT4 в 5 и 50 раз соответственно. Измерения также показывают, что RAID-контроллер может быть существенным узким местом при построении RAID-системы с высокоскоростными SSD. [40]
Комбинации двух или более стандартных уровней 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 («массивный массив бездействующих дисков»).
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )Одиночный диск четности может обнаружить одну ошибку, но для исправления ошибки нам нужно достаточно контрольных дисков, чтобы идентифицировать диск с ошибкой. [...] Большинство контрольных дисков в RAID-массиве уровня 2 используются для определения того, какой диск вышел из строя, поскольку для обнаружения ошибки требуется только один избыточный диск четности. Эти дополнительные диски действительно «избыточны», поскольку большинство контроллеров дисков уже могут обнаружить, если произошел сбой dusk, либо с помощью специальных сигналов, предоставляемых в интерфейсе диска, либо с помощью дополнительной проверочной информации в конце сектора
{{cite book}}
: |journal=
проигнорировано ( помощь )