Содержание
RAID
RAID (англ. redundant array of independent/inexpensive disks) — избыточный массив независимых дисков. Служит для повышения надёжности хранения данных (RAID 1) и/или для повышения скорости чтения/записи информации (RAID 0).
Аббревиатура RAID изначально расшифровывалась как «Redundant Arrays of Inexpensive Disks» («избыточный (резервный) массив недорогих дисков», так как они были гораздо дешевле RAM). Именно так был представлен RAID его создателями Петтерсоном (David A. Patterson), Гибсоном (Garth A. Gibson) и Катцом (Randy H. Katz) в 1987 году. Со временем RAID стали расшифровывать как «Redundant Array of Independent Disks» («избыточный (резервный) массив независимых дисков»), потому, как для массивов приходилось использовать и дорогое оборудование (под недорогими дисками подразумевались диски для ПЭВМ).
Калифорнийский университет в Беркли представил следующие уровни RAID, которые были приняты как стандарт де-факто:
- RAID 0 представлен как неотказоустойчивый дисковый массив.
- RAID 1 определён как зеркальный дисковый массив.
- RAID 2 зарезервирован для массивов, которые применяют код Хемминга.
- RAID 3, 4, 5 используют чётность для защиты данных от одиночных неисправностей.
- RAID 6 используют чётность для защиты данных от двойных неисправностей.
Уровни RAID
RAID 0
RAID 0 («Striping») — дисковый массив из двух или более жёстких дисков с отсутствием избыточности. Информация разбивается на блоки данных (Ai) и записывается на оба/несколько дисков одновременно.
(+): За счёт этого существенно повышается производительность (от количества дисков зависит кратность увеличения производительности).
(+): RAID 0 может быть реализован как программно, так и аппаратно.
(−): Страдает надёжность всего массива (при выходе из строя любого из входящих в RAID 0 винчестеров полностью и безвозвратно пропадает вся информация). В соответствии с теорией вероятностей, надёжность массива RAID 0 равна произведению вероятностей безотказной работы составляющих его дисков, каждая из которых меньше единицы, таким образом совокупная надёжность заведомо ниже надёжности любого из дисков.
RAID 1
RAID 1 (Mirroring — «зеркалирование»).
(+): Обеспечивает приемлемую скорость записи и выигрыш по скорости чтения за счёт распараллеливания запросов.
(+): Имеет высокую надёжность — работает до тех пор, пока функционирует хотя бы один диск в массиве.
(-): Недостаток заключается в том, что приходится выплачивать стоимость двух жёстких дисков, получая полезный объем одного жёсткого диска (классический случай, когда массив состоит из двух дисков).
Изначально предполагается, что жёсткий диск — вещь надёжная. Соответственно, вероятность выхода из строя сразу двух дисков равна (по формуле) произведению вероятностей отказа каждого диска, то есть ниже на порядок. К сожалению, данная теоретическая модель не достаточно полно отражает процессы, протекающие в реальной жизни. Так, обычно два винчестера берутся из одной партии и работают в одинаковых условиях, а при выходе из строя одного из дисков нагрузка на оставшийся увеличивается, поэтому на практике при выходе из строя одного из дисков следует срочно принимать меры — вновь восстанавливать избыточность. Для этого с любым уровнем RAID (кроме нулевого) рекомендуют использовать диски горячего резерва Hot Spare. Достоинство такого подхода — поддержание постоянной надёжности. Недостаток — ещё большие издержки (то есть стоимость трёх винчестеров для хранения объёма одного диска).
Зеркало на многих дисках — RAID 1+0. При использовании такого уровня зеркальные пары дисков выстраиваются в «цепочку», поэтому объём полученного тома может превосходить ёмкость одного жёсткого диска. Достоинства и недостатки такие же, как и у уровня RAID 0. Как и в других случаях, рекомендуется включать в массив диски горячего резерва Hot Spare из расчёта один резервный на пять рабочих.
RAID 2
В массивах такого типа диски делятся на две группы — для данных и для кодов коррекции ошибок, причем если данные хранятся на n дисках, то для складирования кодов коррекции необходимо n − 1 дисков. Данные записываются на соответствующие винчестеры так же, как и в RAID 0, они разбиваются на небольшие блоки по числу дисков, предназначенных для хранения информации. Оставшиеся диски хранят коды коррекции ошибок, по которым в случае выхода какого-либо винчестера из строя возможно восстановление информации. Метод Хемминга давно применяется в памяти типа ECC и позволяет на лету исправлять однократные и обнаруживать двухкратные ошибки.
Впрочем, держать ради этого громоздкую структуру из почти двойного количества дисков никому не хотелось, и этот вид массива не получил распространения.
RAID 3
Структура массива RAID 3 такова: в массиве из n дисков данные разбиваются на блоки размером 1 байт и распределяются по n − 1 дискам, а еще один диск используется для хранения блоков четности. В RAID 2 для этой цели стояло n − 1 дисков, но большая часть информации на этих дисках использовалась только для коррекции ошибок на лету, а для простого восстановления в случае поломки диска достаточно меньшего ее количества, хватает и одного выделенного винчестера.
Соответственно, отличия RAID 3 от RAID 2 очевидны: невозможность коррекции ошибок на лету и меньшая избыточность.
(+): скорость чтения и записи данных высока, а для создания массива требуется совсем немного дисков, всего три.
(-): массив этого типа хорош только для однозадачной работы с большими файлами, так как наблюдаются проблемы со скоростью при частых запросах данных небольшого объема.
RAID 4
RAID 4 похож на RAID 3, но отличается от него тем, что данные разбиваются на блоки, а не на байты. Таким образом, удалось «победить» проблему низкой скорости передачи данных небольшого объема. Запись же производится медленно из-за того, что четность для блока генерируется при записи и записывается на единственный диск. Используются массивы такого типа очень редко.
RAID 5
Большой недостаток уровней RAID от 2-го до 4-го — это наличие отдельного диска (или дисков), хранящего информацию о четности. Скорость выполнения операций считывания достаточно высока, так как не требует обращения к этому диску. Но при каждой операции записи на нем изменяется информация, поэтому схемы RAID 2—4 не позволяют проводить параллельные операции записи. RAID 5 не имеет этого недостатка. Блоки данных и контрольные суммы циклически записываются на все диски массива, отсутствует выделенный диск для хранения информации о четности, нет асимметричности конфигурации дисков. Cамый популярный из уровней, в первую очередь благодаря своей экономичности. Жертвуя ради избыточности ёмкостью всего одного диска из массива, мы получаем защиту от выхода из строя любого из винчестеров тома. На запись информации на том RAID 5 тратятся дополнительные ресурсы, так как требуются дополнительные вычисления, зато при чтении (по сравнению с отдельным винчестером) имеется выигрыш, потому что потоки данных с нескольких накопителей массива распараллеливаются.
Недостатки RAID 5 проявляются при выходе из строя одного из дисков — весь том переходит в критический режим, все операции записи и чтения сопровождаются дополнительными манипуляциями, резко падает производительность. При этом уровень надежности значительно снижается (так как уменьшена избыточность массива). Поэтому, (см. выше) с томом RAID 5 следует обязательно использовать диск Hot Spare. Если во время восстановления массива, вызванного выходом из строя одного диска, выйдет из строя второй диск — данные в массиве разрушаются. Минимальное количество используемых дисков равно трём.
RAID 6 (ADG)
RAID 6 (Advanced Data Guarding) — похож на RAID 5, но имеет более высокую степень надежности — под контрольные суммы выделяется емкость 2-х дисков, рассчитываются 2 суммы по разным алгоритмам. Требует более серьезный процессор контроллера — сложная материнская плата. Обеспечивает работоспособность после «смерти» одновременно 2-х дисков. Для организации массива требуется минимум 4 диска.
RAID 7
RAID 7 — зарегистрированная марка компании Storage Computer Corporation. Структура массива такова: на n − 1 дисках хранятся данные, один диск используется для складирования блоков четности. Но добавилось несколько важных деталей, призванных ликвидировать главный недостаток массивов такого типа: кэш данных и быстрый контроллер, заведующий обработкой запросов. Это позволило снизить количество обращений к дискам для вычисления контрольной суммы данных. В результате удалось значительно повысить скорость обработки данных (кое-где в пять и более раз). Прибавились и новые недостатки: очень высокая стоимость реализации такого массива, сложность его обслуживания, необходимость в источнике бесперебойного питания для предотвращения потери данных в кэш-памяти при перебоях питания.
Комбинированные уровни
Помимо базовых уровней RAID 0 — RAID 5, описанных в стандарте, существуют комбинированные уровни RAID 1+0, RAID 3+0, RAID 5+0, RAID 1+5, которые различные производители интерпретируют каждый по-своему.
RAID 1+0 — это сочетание зеркалирования и чередования (см. выше).
Нынешние контроллеры используют этот режим по умолчанию для RAID 1. То есть, 1 диск основной, 2-й диск — зеркало, причем чтение производится с них поочередно, как для RAID 0. Собственно, сейчас можно считать что RAID 1 и RAID 1+0 — это просто разное название одного и того же метода аппаратного зеркалирования дисков. Но не стоит забывать, что полноценный RAID 1+0 должен содержать как минимум 4 диска.
RAID 5+0 — это чередование томов 5-го уровня. RAID 1+5 — зеркалирование «пятерок». И так далее.
Комбинированные уровни наследуют как преимущества, так и недостатки своих «родителей»: появление чередования в уровне RAID 5+0 нисколько не добавляет ему надёжности, но зато положительно отражается на производительности. Уровень RAID 1+5, наверное, очень надёжный, но не самый быстрый и, к тому же, крайне неэкономичный: полезная ёмкость тома меньше половины суммарной ёмкости дисков…
Стоит отметить, что количество жестких дисков в комбинированных массивах также изменится. Например для RAID 5+0 используют 6 или 8 жестких дисков, для RAID 1+0 - 4, 6 или 8.
Matrix RAID
Matrix RAID — это технология, реализованная фирмой Intel в своих чипсетах начиная с ICH6R. Строго говоря, эта технология не является новым уровнем RAID (ее аналог существует в аппаратных RAID-контроллерах высокого уровня), она лишь позволяет, используя лишь 2 диска, организовать одновременно один или несколько массивов уровня RAID 1 и один или несколько массивов уровня RAID 0. Это позволяет за сравнительно небольшие деньги обеспечить для одних данных повышенную надёжность, а для других высокую скорость доступа.
Пример использования:
Имеются в наличии два диска по 160 Гбайт. Каждый диск разбивается на тома по 60 и по 100 Гбайт, затем 100-гигабайтные тома объединяются в скоростной массив RAID 0, а 60-гигабайтные — в массив повышенной надежности RAID 1. В массиве RAID 1 можно разместить операционную систему, рабочие документы, фото- и видеоархивы, коллекцию mp3 и прочие важные данные, а файл подкачки и «игрушки» в массиве RAID 0. В результате получается весьма рациональное сочетание повышенной производительности и надежности хранения данных.
Программный (Software) RAID
Для реализации RAID можно применять не только аппаратные средства, но и полностью программные компоненты (драйверы). Например, в системах на ядре Linux существуют специальные модули ядра, а управлять RAID-устройствами в GNU/Linux можно с помощью утилиты mdadm. Программный RAID имеет свои достоинства и недостатки. С одной стороны, он ничего не стоит (в отличие от хороших RAID-контроллеров, цена которых от $250). С другой стороны, программный RAID использует ресурсы центрального процессора, и в моменты пиковой нагрузки на дисковую систему процессор может до 50 % мощности тратить на обслуживание RAID-устройств.
ОС Windows 2000/XP/2003 поддерживает программный RAID 0, RAID 1 и RAID 5. Более точно, Windows XP Pro поддерживает RAID 0 и RAID 1, Windows Server 2003 — 0, 1 и 5. Windows XP Home RAID не поддерживает.
В ОС FreeBSD есть несколько реализаций программного RAID. Так, atacontrol, может как полностью строить программный RAID, так и может поддерживать полу аппаратный RAID на таких чипах как ICH5R. Во FreeBSD, начиная с версии 5.0, дисковая подсистема управляется встроенным в ядро механизмом GEOM. GEOM предоставляет модульную дисковую структуру, благодаря которой родились такие модули как gstripe (RAID 0), gmirror (RAID 1), graid3 (RAID 3), gconcat (объединение нескольких дисков в единый дисковый раздел). Так же существуют устаревшие классы ccd (RAID 0, RAID 1) и gvinum (менеджер логических томов vinum).