Каковы различные широко используемые уровни RAID и когда я должен их учитывать?

181

Это канонический вопрос об уровнях RAID.

Что:

  • обычно используются уровни RAID (включая семейство RAID-Z)?
  • развертывания они обычно находятся в?
  • преимущества и подводные камни каждого?
MDMarra
источник
10
@ erimar77 Цель сети StackExchange - собрать все знания по указанному предмету в сети SE . Это означает, что данные в Википедии бесполезны для миссии. Я довольно хорошо разбираюсь в RAID, поэтому мне не нужен ответ, но это должен быть канонический вопрос. Конический вопрос - это тот, который содержит окончательный ответ на общую проблему, на которую мы можем указать все дубликаты. «Просто гуглите» или «это в Википедии» не являются приемлемыми ответами. Однако статья в Википедии очень хорошая.
MDMarra
2
Скопировал в Супер пользователя, чтобы я мог VTC как дубликат на там. Пожалуйста, скопируйте ответ Super User (или позвольте мне скопировать его сейчас).
Хеннес

Ответы:

197

RAID: почему и когда

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

На самом общем уровне RAID - это группа дисков, которые выполняют одинаковые операции чтения и записи. Операции ввода-вывода SCSI выполняются на томе («LUN»), и они распределяются по базовым дискам таким образом, чтобы повысить производительность и / или увеличить избыточность. Увеличение производительности является функцией чередования: данные распределяются по нескольким дискам, что позволяет при чтении и записи использовать очереди ввода-вывода всех дисков одновременно. Избыточность является функцией зеркалирования. Целые диски могут быть сохранены как копии, или отдельные полосы могут быть записаны несколько раз. В качестве альтернативы, в некоторых типах рейдов вместо копирования битов за битами избыточность достигается за счет создания специальных полос, содержащих информацию о четности, которая может использоваться для воссоздания любых потерянных данных в случае аппаратного сбоя.

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

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

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


RAID с прямым подключением: программное и аппаратное обеспечение

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

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

Вообще говоря, если кто-то собирается выбрать программный RAID, ему следует избегать FakeRAID и использовать собственный пакет ОС для своей системы, такой как динамические диски в Windows, mdadm / LVM в Linux или ZFS в Solaris, FreeBSD и других связанных дистрибутивах. , FakeRAID использует комбинацию аппаратного и программного обеспечения, что приводит к первоначальному появлению аппаратного RAID, но фактической производительности программного RAID. Кроме того, обычно чрезвычайно трудно переместить массив в другой адаптер (если исходный сбой).


Централизованное хранилище

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

Основное различие между NAS и SAN заключается в экспорте блоков на уровне файловой системы. SAN экспортирует целое «блочное устройство», такое как раздел или логический том (включая те, которые построены поверх массива RAID). Примеры SAN включают Fibre Channel и iSCSI. NAS экспортирует «файловую систему», такую ​​как файл или папка. Примеры NAS включают CIFS / SMB (общий доступ к файлам Windows) и NFS.


RAID 0

Хорошо, когда: скорость любой ценой!

Плохо, когда: вы заботитесь о своих данных

RAID0 (он же чередование) иногда называют «объемом данных, которые у вас останутся, когда диск выйдет из строя». Это действительно идет вразрез с «RAID», где «R» означает «Избыточный».

RAID0 берет ваш блок данных, разбивает его на столько частей, сколько у вас есть дисков (2 диска → 2 части, 3 диска → 3 части), а затем записывает каждый фрагмент данных на отдельный диск.

Это означает, что один сбой диска уничтожает весь массив (потому что у вас есть часть 1 и часть 2, но нет части 3), но он обеспечивает очень быстрый доступ к диску.

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

Общее используемое дисковое пространство представляет собой сумму всех дисков в массиве, добавленных вместе (например, 3x 1 ТБ дисков = 3 ТБ пространства).

RAID 1


RAID 1

Хорошо, когда: у вас ограниченное количество дисков, но требуется резервирование

Плохо, когда: вам нужно много места для хранения

RAID 1 (он же Mirroring) берет ваши данные и идентично дублирует их на двух или более дисках (хотя обычно только на 2 дисках). Если используется более двух дисков, на каждом диске сохраняется одинаковая информация (все они идентичны). Это единственный способ обеспечить избыточность данных, когда у вас менее трех дисков.

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

Обычно он используется на небольших серверах с очень небольшим дисковым расширением, таких как серверы 1RU, на которых может быть достаточно места только для двух дисков, или на рабочих станциях, требующих избыточности. Из-за высоких накладных расходов на «потерянное» пространство, это может быть слишком дорого с высокопроизводительными (и дорогостоящими) дисками небольшой емкости, так как вам нужно потратить вдвое больше денег, чтобы получить тот же уровень полезного хранилища.

Общее используемое дисковое пространство - это размер самого маленького диска в массиве (например, 2x 1 ТБ дисков = 1 ТБ пространства).

RAID 1


RAID 1E

Уровень RAID 1E аналогичен RAID 1 в том, что данные всегда записываются (как минимум) на два диска. Но в отличие от RAID1, он допускает нечетное количество дисков, просто чередуя блоки данных между несколькими дисками.

Характеристики производительности аналогичны RAID1, отказоустойчивость аналогична RAID 10. Эта схема может быть расширена до нечетного числа дисков более трех (возможно, называется RAID 10E, хотя и редко).

RAID 1E


RAID 10

Хорошо, когда: вы хотите скорость и избыточность

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

RAID 10 представляет собой комбинацию RAID 1 и RAID 0. Порядок 1 и 0 очень важен. Допустим, у вас есть 8 дисков, он создаст 4 массива RAID 1, а затем применяет массив RAID 0 поверх 4 массивов RAID 1. Требуется как минимум 4 диска, а дополнительные диски должны быть добавлены попарно.

Это означает, что один диск из каждой пары может выйти из строя. Таким образом, если у вас есть наборы A, B, C и D с дисками A1, A2, B1, B2, C1, C2, D1, D2, вы можете потерять один диск из каждого набора (A, B, C или D) и при этом иметь функционирующий массив.

Однако если вы потеряете два диска из одного набора, то массив будет полностью потерян. Вы можете потерять до (но не гарантировано) 50% дисков.

Вам гарантирована высокая скорость и высокая доступность в RAID 10.

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

Доступное дисковое пространство составляет 50% от общей суммы. (например, 8x 1 ТБ дисков = 4 ТБ используемого пространства). Если вы используете разные размеры, с каждого диска будет использоваться только самый маленький размер.

Стоит отметить, что программный драйвер raid ядра Linux md позволяет использовать конфигурации RAID 10 с нечетным количеством дисков , то есть RAID 10 с 3 или 5 дисками.

RAID 10


RAID 01

Хорошо когда: никогда

Плохо когда: всегда

Это противоположность RAID 10. Он создает два массива RAID 0, а затем помещает RAID 1 поверх. Это означает, что вы можете потерять один диск из каждого набора (A1, A2, A3, A4 или B1, B2, B3, B4). Это очень редко можно увидеть в коммерческих приложениях, но это можно сделать с помощью программного RAID.

Чтобы быть абсолютно ясным:

  • Если у вас есть массив RAID10 с 8 дисками и одним из них (мы назовем его A1), то у вас будет 6 резервных дисков и 1 без резервирования. Если другой диск умирает, есть 85% шанс, что ваш массив все еще работает.
  • Если у вас есть массив RAID01 с 8 дисками и одним из них (мы назовем его A1), то у вас будет 3 резервных диска и 4 без резервирования. Если другой диск умирает, вероятность того, что ваш массив все еще работает, составляет 43% .

Он не обеспечивает дополнительной скорости по сравнению с RAID 10, но существенно снижает избыточность, и его следует избегать любой ценой.


RAID 5

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

Плохо, когда: у вас высокая произвольная запись или большие диски

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

К сожалению, в случае отказа диска процесс восстановления очень интенсивно вводит-выводит. Чем больше дисков в RAID, тем дольше будет происходить перестройка и тем выше вероятность сбоя второго диска. Поскольку для больших медленных дисков требуется гораздо больше данных для восстановления и гораздо меньшая производительность, обычно не рекомендуется использовать RAID 5 со скоростью 7200 об / мин или ниже.

Возможно, самая критическая проблема с массивами RAID 5, когда они используются в пользовательских приложениях, заключается в том, что они почти гарантированно выходят из строя, когда общая емкость превышает 12 ТБ. Это связано с тем, что частота невосстановимых ошибок чтения (URE) потребительских дисков SATA составляет один на каждые 10 14 бит, или ~ 12,5 ТБ.

Если мы возьмем пример массива RAID 5 с семью дисками по 2 ТБ: при сбое диска остается шесть дисков. Для восстановления массива контроллер должен прочитать шесть дисков по 2 ТБ каждый. Если посмотреть на рисунок выше, то почти наверняка произойдет еще одно URE до завершения восстановления. Как только это происходит, массив и все данные на нем теряются.

Однако сбой URE / потери данных / массива с проблемой RAID 5 на потребительских дисках несколько смягчен тем фактом, что большинство производителей жестких дисков повысили рейтинги URE своих новых дисков до одного на 10 15 бит. Как всегда, проверьте спецификацию перед покупкой!

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

RAID 5 является наиболее экономичным решением для добавления избыточного хранилища в массив, поскольку требует потери только 1 диска (например, 12x 146 ГБ дисков = 1606 ГБ свободного места). Требуется минимум 3 диска.

RAID 5


RAID 6

Хорошо, когда: вы хотите использовать RAID 5, но ваши диски слишком большие или медленные

Плохо, когда: у вас высокая нагрузка случайной записи

RAID 6 аналогичен RAID 5, но он использует четность двух дисков вместо одного (первый - XOR, второй - LSFR), поэтому вы можете потерять два диска из массива без потери данных. Штраф записи выше, чем у RAID 5, и у вас меньше места на диске.

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

RAID 6


RAID 50

Хорошо, когда: у вас есть много дисков, которые должны быть в одном массиве, и RAID 10 не вариант из-за емкости

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

RAID 50 - это вложенный уровень, очень похожий на RAID 10. Он объединяет два или более массивов RAID 5 и распределяет данные между ними в RAID 0. Это обеспечивает как производительность, так и избыточность нескольких дисков, поскольку несколько дисков теряются из-за другого RAID 5. массивы.

В RAID 50 емкость диска равна nx, где x - это количество RAID 5 с чередованием. Например, если простой 6-дисковый RAID 50, наименьший из возможных, если у вас было 6x1 ТБ дисков в двух RAID 5, которые затем были размечены, чтобы стать RAID 50, у вас было бы 4 ТБ полезного хранилища.


RAID 60

Хорошо, когда: у вас есть вариант использования, аналогичный RAID 50, но вам нужно больше избыточности

Плохо, когда: у вас нет значительного количества дисков в массиве

RAID 6 - это RAID 60, а RAID 5 - RAID 50. По сути, у вас есть несколько RAID 6, в которых данные затем чередуются в RAID 0. Эта настройка позволяет использовать до двух членов любого отдельного RAID 6 в наборе. потерпеть неудачу без потери данных. Время восстановления массивов RAID 60 может быть значительным, поэтому обычно рекомендуется иметь один «горячий» резерв для каждого члена RAID 6 в массиве.

В RAID 60 емкость диска равна n-2x, где x - это количество RAID 6, которые чередуются. Например, если простой 8-дисковый RAID 60, наименьший возможный, если бы у вас было 8x1 ТБ дисков в двух RAID 6, которые затем были размечены, чтобы стать RAID 60, у вас было бы 4 ТБ полезного хранилища. Как вы можете видеть, это дает тот же объем полезного хранилища, который RAID 10 выделил бы для массива из 8 элементов. Хотя RAID 60 будет несколько более избыточным, время восстановления будет значительно больше. Как правило, вы хотите рассмотреть RAID 60, только если у вас есть большое количество дисков.


RAID-Z

Хорошо, когда: вы используете ZFS в системе, которая его поддерживает

Плохо, когда: производительность требует аппаратного ускорения RAID

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

Пример может сделать это намного более понятным. Допустим, у вас есть 3 диска в пуле ZFS RAID-Z, размер блока составляет 4 КБ. Теперь вы записываете в систему файл размером 16 КБ. ZFS разделит это на четыре блока по 4 КБ (как в обычной операционной системе); тогда он рассчитает два блока четности. Эти шесть блоков будут размещены на дисках аналогично тому, как RAID-5 будет распределять данные и информацию о четности. Это улучшение по сравнению с RAID5 в том, что не было чтения существующих полос данных для вычисления четности.

Другой пример основан на предыдущем. Скажем, файл был только 4 КБ. ZFS все равно придется создавать один блок контроля четности, но теперь нагрузка на запись уменьшена до 2 блоков. Третий диск будет свободен для обслуживания любых других одновременных запросов. Подобный эффект будет наблюдаться всякий раз, когда записываемый файл не кратен размеру блока пула, умноженному на количество дисков меньше одного (т. Е. [Размер файла] <> [Размер блока] * [Диски - 1]).

Работа с ZFS как с Volume Management, так и с File System также означает, что вам не нужно беспокоиться о выравнивании разделов или размеров полосовых блоков. ZFS обрабатывает все это автоматически с рекомендуемыми конфигурациями.

Природа ZFS противодействует некоторым классическим оговоркам RAID-5/6. Все записи в ZFS выполняются в режиме копирования при записи; все измененные блоки в операции записи записываются в новое место на диске, а не перезаписывают существующие блоки. Если по какой-либо причине происходит сбой записи или происходит сбой в середине записи, транзакция записи происходит полностью после восстановления системы (с помощью журнала намерений ZFS) или вообще не происходит, что позволяет избежать возможного повреждения данных. Другая проблема с RAID-5/6 - это потенциальная потеря данных или молчаливое повреждение данных во время перестроений; регулярные zpool scrubоперации могут помочь выявить повреждение данных или вызвать проблемы, прежде чем они приведут к потере данных, а контрольная сумма всех блоков данных обеспечит обнаружение всех повреждений во время перестроения.

Основным недостатком RAID-Z является то, что он все еще является программным рейдом (и страдает от той же незначительной задержки, которую испытывает процессор, вычисляющий нагрузку записи, вместо того, чтобы позволить аппаратному HBA разгрузить его). Это может быть решено в будущем HBA, которые поддерживают аппаратное ускорение ZFS.

Другие RAID и нестандартные функции

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

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

Марк Хендерсон
источник
В настоящее время у меня нет времени, чтобы добавить эту информацию, но объяснение того, как вы можете использовать невосстановимую частоту ошибок чтения для оценки самого большого набора RAID 5, который вы можете использовать с конкретными дисками, было бы хорошей идеей.
Юбер Карио
Отличное резюме! У меня есть одно дополнение, касающееся RAID5 и RAID6: часто люди, рассматривающие общую надежность (вероятность катастрофического сбоя массива) массивов, заполненных большим количеством шпинделей или дисков очень большой емкости, выбирают RAID6. Они делают это на основе вероятности второго сбоя, происходящего во время восстановления первого диска. Мое личное правило - RAID6, когда число шпинделей больше 8 или когда отдельные диски больше 1 ТБ. Мне не удалось найти канонический калькулятор, но Google и известное время для восстановления помогут хорошо рассчитать.
JGurtz
3
Возможно, стоит добавить примечание о том, что программное обеспечение Linux RAID10 нестандартно. Это позволяет необычные и потенциально полезные макеты. en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10
Zoredache
Возможно, стоит включить уточнение штрафа записи и объединения полос. RAID 2 или 3, возможно, заслуживают похвалы, но я не знаю ни одной «реальной» реализации. Однако - NetApp по-прежнему использует RAID4 (а RAID-DP - это в основном RAID-4 с дополнительным диском четности.)
Sobrique
1
RAID 6: должен ли LSFR быть LFSR (регистр сдвига с линейной обратной связью)?
CVN
58

Также RAID ОДИН МИЛЛИОН !!!!

128 дисков, поэтому чтение будет быстрым, ужасным, но очень надежным, я думаю, и вы получите 1/128 доступного пространства, так что с бюджетной точки зрения это не очень хорошо. Не делай этого с флешками, я пытался поджечь атмосферу ...

введите описание изображения здесь

Chopper3
источник
7
О Боже. Чоппер сходит с ума сейчас.
MDMarra
4
Я неправильно понял мою математику?
Chopper3
6
Вы знаете, я собираюсь построить это правильно?
Chopper3
33
Raid 1000000 потребовал бы минимум 128 дисков, но он обеспечил бы место для хранения на 64 диска, он имел такую ​​же производительность записи в худшем случае, что и Raid 1, и любые 2 отказа дисков приводили к гибели массива. Вы описывали Raid 0111111, у которого была бы довольно хорошая надежность (у Raid 11111110 была бы лучшая надежность в среднем).
Кевин Кэткарт
5
О, прекрасно. Двоичные уровни RAID. Что дальше?
CVn