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 (он же Mirroring) берет ваши данные и идентично дублирует их на двух или более дисках (хотя обычно только на 2 дисках). Если используется более двух дисков, на каждом диске сохраняется одинаковая информация (все они идентичны). Это единственный способ обеспечить избыточность данных, когда у вас менее трех дисков.
RAID 1 иногда улучшает производительность чтения. Некоторые реализации RAID 1 будут читать с обоих дисков, чтобы удвоить скорость чтения. Некоторые будут читать только с одного из дисков, что не дает никаких дополнительных преимуществ по скорости. Другие будут считывать одни и те же данные с обоих дисков, обеспечивая целостность массива при каждом чтении, но это приведет к той же скорости чтения, что и для одного диска.
Обычно он используется на небольших серверах с очень небольшим дисковым расширением, таких как серверы 1RU, на которых может быть достаточно места только для двух дисков, или на рабочих станциях, требующих избыточности. Из-за высоких накладных расходов на "потерянное" пространство это может быть слишком дорого с высокопроизводительными (и дорогостоящими) дисками небольшой емкости, так как вам нужно потратить вдвое больше денег, чтобы получить тот же уровень полезного хранилища.
Общее используемое дисковое пространство - это размер самого маленького диска в массиве (например, 2x 1 ТБ дисков = 1 ТБ пространства).
RAID 1E
Уровень RAID 1E аналогичен уровню RAID 1 в том, что данные всегда записываются (как минимум) на два диска. Но в отличие от RAID1, он допускает нечетное количество дисков, просто чередуя блоки данных между несколькими дисками.
Характеристики производительности аналогичны RAID1, отказоустойчивость аналогична RAID 10. Эта схема может быть расширена до нечетного количества дисков более трех (возможно, называется RAID 10E, хотя и редко).
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, допускает конфигурации raid10 с нечетным количеством дисков, то есть raid10 с 3 или 5 дисками:
https://en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10
RAID 01
Хорошо когда: никогда
Плохо, когда: всегда
Это обратная сторона RAID 10. Он создает два массива RAID 0, а затем помещает RAID 1 поверх. Это означает, что вы можете потерять один диск из каждого набора (A1, A2, A3, A4 или B1, B2, B3, B4).
Чтобы быть абсолютно ясным:
- Если у вас есть массив RAID10 с 8 дисками и одним из них (мы назовем его A1), то у вас будет 6 резервных дисков и 1 без резервирования. Если другой диск умирает, есть 85% шанс, что ваш массив все еще работает.
- Если у вас есть массив RAID01 с 8 дисками и одним из них (мы назовем его A1), то у вас будет 4 резервных диска и 3 без резервирования. Если другой диск умирает, вероятность того, что ваш массив все еще работает, составляет 57% .
Он не обеспечивает дополнительной скорости по сравнению с RAID 10, но существенно снижает избыточность, и его следует избегать любой ценой.
RAID 5
Хорошо, когда: Вы хотите балансировать избыточность и дисковое пространство или иметь в основном случайную рабочую нагрузку чтения.
Плохо, когда: у вас высокая произвольная запись или большие диски.
RAID 5 был самым распространенным уровнем RAID на протяжении десятилетий. Он обеспечивает системную производительность всех дисков в массиве (за исключением небольших случайных записей, которые требуют незначительных накладных расходов). Для вычисления четности используется простая операция XOR. В случае отказа одного диска информация может быть восстановлена с оставшихся дисков с помощью операции XOR на известных данных.
К сожалению, в случае отказа диска процесс восстановления очень интенсивен. Чем больше дисков в RAID, тем дольше будет происходить перестройка и тем выше вероятность отказа второго диска. Поскольку на больших медленных дисках требуется гораздо больше данных для восстановления и гораздо меньшая производительность, обычно не рекомендуется использовать RAID5 со скоростью 7200 об / мин или ниже.
Максимальный размер raid5, при котором перестройка почти гарантированно приведет к выходу из строя другого диска, приводящему к потере всех данных, составляет около 12 ТБ.
Эта цифра основана на уровне неисправимой ошибки чтения (URE) накопителей SATA, равном 10 ^ 14, о чем обычно сообщают производители накопителей. На практике это означает, что каждые 100 000 000 000 000 битов привод выбрасывает URE. Что более или менее равно 12 ТБ.
Если взять пример рейда 5 с семью дисками по 2 ТБ. Когда диск выходит из строя, остается шесть дисков. Чтобы восстановить raid, контроллер должен прочитать шесть дисков по 2 ТБ каждый. Если посмотреть на рисунок выше, то почти наверняка произойдет еще одно URE до завершения восстановления. Как только это происходит, рейд 5 и все данные на нем теряются.
Также необходимо, чтобы RAID 5 был помещен в надежный (с батарейным питанием) кэш записи. Это позволяет избежать накладных расходов на небольшие записи, а также нестабильного поведения, которое может возникнуть при сбое в середине записи.
RAID 5 является наиболее экономически эффективным решением для добавления избыточного хранилища в массив, поскольку требует потери только 1 диска (например, 12x 146 ГБ дисков = 1606 ГБ свободного места). Требуется минимум 3 диска.
RAID 6
Хорошо, когда: вы хотите использовать RAID 5, но ваши диски слишком большие или медленные
Плохо, когда: у вас высокая рабочая нагрузка случайной записи.
RAID 6 аналогичен RAID 5, но он использует четность двух дисков вместо одного (первый - XOR, второй - LSFR), поэтому вы можете потерять два диска из массива без потери данных. Штраф записи выше, чем у RAID 5, и у вас меньше места на диске.
Стоит учесть, что в итоге raid6 столкнется с такими же проблемами, что и raid5. Большие диски приводят к увеличению времени восстановления и более скрытым ошибкам. В конечном итоге приводит к сбою рейда и всех данных до завершения восстановления.
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 с дополнительными затратами на вычисление четности. Преимущество состоит в том, что вы можете добавить диски в массив путем пересчета четности.