В переводе с английского «RAID» (Redundant Arrays of Inexpensive Disks) означает «избыточный массив независимых дисков». Этот перевод не совсем дословный, но именно содержащийся в нем смысл является правильным.
Впервые термин RAID появился в 1987 году, когда исследователям из Калифорнийского Университета в Беркли удалось создать действующий массив из нескольких жестких дисков.
Первоначальное предназначение RAID – создание на базе нескольких винчестеров диска большого объема с увеличенной скоростью доступа. Но затем к двум основным целям добавилась третья – сохранение данных в случае отказа части оборудования. Именно эти три кита сделали RAID-массивы столь востребованными бизнесом и военными. Впрочем, за объем, скорость и надежность пришлось платить повышением стоимости и сложности систем хранения данных.
Со временем оборудование для построения RAID массивов стало более доступным, особенно с появлением дешевых решений для IDE/ATA и SATA дисков. Теперь уже не только специалисты по СХД, но и обычные пользователи столкнулись с хитростями построения дисковых массивов.
Оказывается, не так просто найти оптимальное решение одновременно по надежности, емкости и цене. Надо быть готовым к тому, что придется купить не один, а несколько жестких дисков, и емкость как минимум одного из них не будет использоваться. Если речь идет о построении более-менее серьезной системы, потребуется отдельный (лучше специальный) корпус с отдельным (а то и двумя) блоком питания, плата контроллера и соответствующее программное обеспечение.
Не испугались? Значит, пора знакомиться с RAID более подробно.
Пять таинственных слов
В основе теории RAID лежат пять основных принципов – пять таинственных слов. Это Массив (Array), Зеркалирование (Mirroring), Дуплекс (Duplexing), Чередование (Striping) и Четность (Parity).
Массивом называют несколько накопителей, которые централизованно настраиваются, форматируются и управляются. Логический массив – это уже более высокий уровень представления, на котором не учитываются физические характеристики системы. Соответственно, логические диски могут по количеству и объему не совпадать с физическими. Но лучше все-таки соблюдать соответствие: физический диск – логический диск. Наконец, для операционной системы вообще весь массив является одним большим диском.
Зеркалирование – технология, позволяющая повысить надежность системы. В RAID массиве с зеркалированием все данные одновременно пишутся не на один, а на два жестких диска. То есть создается «зеркало» данных. При выходе из строя одного из дисков вся информация остается сохраненной на втором.
За такую стопроцентную защиту приходится дорого платить: считайте, что один винчестер у вас работает просто так, не увеличивая доступную емкость ни на Мегабайт. При этом нет никакого выигрыша в производительности.
Дуплекс – развитие идеи зеркалирования. В этом случае так же высок уровень надежности и требуется в два раза больше жестких дисков. Но появляются дополнительные затраты: для повышения надежности в систему устанавливаются два независимых RAID контроллера. Выход из строя одного диска или контроллера не сказывается на работоспособности системы.
duplexing
Столь дорогое решение используется только во внешних RAID-массивах, предназначенных для ответственных приложений.
Чередование – отличная возможность повысить быстродействие системы. Очевидно, если чтение и запись вести параллельно на нескольких жестких дисках, можно получить выигрыш в скорости. Как это делается? Записываемый файл разбивается на части определенного размера и посылается одновременно на все имеющиеся накопители. В таком фрагментированном виде файл и хранится. Считывается он тоже «по кусочкам».
Размер «кусочка» может быть минимальным – 1 байт, но чаще используют более крупное дробление – по 512 байт (размер сектора).
Четность является альтернативным решением, соединяющим в себе достоинства зеркалирования (высокая надежность) и чередования (высокая скорость работы). Используется тот же принцип, что и в контроле четности оперативной памяти.
Если имеется I блоков данных и на их основе вычисляется еще один дополнительный экстраблок, из получившихся (I+1) блоков всегда можно восстановить информацию даже при повреждении одного из них. Соответственно, для создания нормального RAID-массива в этом случае требуется (I+1) жесткий диск.
Распределение блоков по дискам точно такое же, как при чередовании. Экстраблок может записываться на отдельный накопитель, либо раскидываться по дискам.
Что же хранится в экстраблоке? Обычно каждый бит экстраблока состоит из суммы бит всех I блоков, точнее из результата выполнения логической операции XOR. Многие помнят со школы, что XOR – удивительный оператор, при его повторном наложении мы можем получить первоначальный результат. То есть (A XOR B) XOR B = A. Это правило распространяется на любое количество операндов.
Плюсы четности очевидны. За счет использования чередования повышается скорость работы. При зеркалировании надежность сохраняется, но при этом «нерабочий» объем массива заметно уменьшается, он одинаков при любом количестве дисков и составляет емкость одного диска, то есть при 5 дисках в массиве пропадает всего 20% емкости.
Но у четности есть весомый минус. Для формирования экстраблоков требуются вычисления! Их надо делать на лету, причем с миллионами, миллиардами бит! Если это дело поручить центральному процессору, мы получим очень «тормознутую» систему. Необходимо использовать довольно дорогие платы с RAID-контроллерами, которые «берут все вычисления на себя». В случае выхода из строя одного из дисков, процесс восстановления будет не столь быстрым, как при зеркалировании.
Уровни RAID
Кто додумался назвать различные модификации уровнями? По идее, именно исследователи из Беркли в 1988 году придумали такую классификацию, совершенно не думая о том, что у нормальных людей уровни четко связаны с иерархией.
В RAID уровнях нет преемственности. RAID 3 не есть улучшенная модификация RAID 4, так же как RAID 5 не лучше RAID 1. Они разные.
Сразу оговоримся, что есть простые (single) и составные (multiple) RAID массивы. Составные являются сочетанием двух простых, так что начнем с основных 8 уровней.
RAID 0
Простейший массив, использующий чередование без четности. Вся входящая информация разбивается на блоки фиксированной длины (например, 16 кбайт) и раскидывается на все имеющиеся диски.
На рисунке приведен пример, как в RAID 0 массиве на 4 дисках хранятся данные разного размера. Размер блока – 16 кбайт. Красный – файл размером 4 кбайт, синий – 20 кбайт, зеленый – 100 кбайт, пурпурный – 500 кбайт.
При наличии двух-четырех дисков RAID 0 дает ощутимый выигрыш в скорости передачи данных, но совершенно не обеспечивает надежность. Для его построения подойдет любой дешевый и даже программный RAID-контроллер. Подходит для тех, кому нужно выжать максимум производительности от файловой системы при минимальных затратах.
RAID 1
Этот уровень является обычным зеркалированием. На два жестких диска пишутся две одинаковые копии данных. При этом можно использовать дешевый RAID контроллер или даже его программную реализацию
RAID 1 позволяет надежно защитить данные и обеспечить работу системы даже при поломке одного из дисков. Вот почему он получил широкое распространение среди пользователей, желающих защитить от потери личные данные. Выигрыша в скорости при использовании RAID 1 нет.
RAID 2
Второй уровень RAID умер, так и не родившись. Все те же умельцы из Беркли предложили использовать одновременно две технологии – побитовое чередование и код Хамминга для восстановления ошибок. В теории это должен быть неплохой по надежности и рабочей емкости массив, построенный из 14 или 39 дисков (!). Часть дисков (10 или 32) используется для хранения данных с чередованием, остальные – для хранения высчитанных контрольных сумм. Реализация таких систем требовала специальных дорогостоящих контроллеров, которые так и не прижились на рынке. В итоге RAID 2 сейчас не используется. Но идея красивая.
RAID 3
Третий уровень использует чередование и выделенный диск для контроля четности. Блоки данных обычно имеют длину меньше 1024 байт. Информация распределяется на несколько дисков, а высчитанное значение по четности сохраняется на отдельный диск.
Все скоростные преимущества чередования сводятся на нет необходимостью записывать контрольную сумму на выделенный диск, а больше всех страдает скорость случайной записи. К достоинствам отнесем возможность работы массива при отказе одного из дисков.
RAID 4
Отличается от RAID 3 только размером блока данных при чередовании. Это несколько улучшает работу массива при случайном чтении, но запись все равно довольно медленная. Диск с контрольными суммами является ярко выраженным «узким местом» в системе.
Так как является компромиссным вариантом между RAID 3 и RAID 5, не нашел своего места на рынке и редко используется. Это держит цены на соответствующие контроллеры на высоком уровне.
RAID 5
Наиболее распространенный в системах хранения данных – пятый уровень. Он характеризуется применением чередования и четности. В отличие от RAID 3, контрольные суммы не хранятся на одном диске, а разбрасываются по всем, что позволяет значительно поднять скорость записи. Главный принцип распределения экстраблоков: они не должны располагаться на том же диске, с которого была зашифрована информация.
Надежность и скорость работы такой системы оказываются очень даже высокими. При восстановлении информации всю работу на себя берет RAID контроллер, так что операция проходит довольно быстро.
RAID 6
Для некоторых особо критичных приложений требуется повышенная надежность. Например, чтобы при выходе из строя даже двух дисков массив сохранил данные и даже остался работоспособным. Можно ли это сделать? Конечно, решение лежит на поверхности.
Используются все те же технологии чередования и четности. Но контрольная сумма вычисляется два раза и копируется на два разных диска. В итоге данные окажутся потерянными только в случае выхода из строя сразу трех жестких дисков. По сравнению с RAID 5 это более дорогое и медленное решение, которое может показать себя разве что при случайном чтении. На практике RAID 6 почти не используется, так как выход из строя сразу двух дисков – слишком редкий случай, а повысить надежность можно другими способами.
RAID 7
В отличие от остальных уровней, RAID 7 не является открытым стандартом, столь звучное и выгодное название выбрала для своей модификации RAID 3 компания Storage Computer Corporation. Улучшения заключаются в использовании асинхронного чередования, применении кэш-памяти и специального высокопроизводительного микропроцессора.
Обеспечивая такой же, как в RAID 3, уровень надежности, RAID 7 значительно выигрывает в скорости. Недостаток у него один, но очень серьезный – огромная цена, обусловленная монополией на изготовление контроллеров.
Составные RAID массивы
У основных уровней RAID есть свои достоинства и недостатки. И вполне понятно, почему инженеры стали мечтать о таком RAID, который бы объединял достоинства нескольких уровней. Составной RAID массив – это чаще всего сочетание быстрого RAID 0 с надежным RAID 1, 3 или 5. Итоговый массив действительно обладает улучшенными характеристиками, но и платить за это приходится повышением стоимости и сложностью решения.
Составной RAID строится так: сначала диски разделяются на наборы (set). Затем на основе каждого из наборов строятся простые массивы. А завершается все объединением этих массивов в один мегамассив. Запись типа X+Y означает, что сначала диски объединены в RAID уровня X, а затем несколько RAID X массивов объединены в RAID уровня Y.
RAID 0+1 (01) и 1+0 (10)
RAID 0+1 часто называют «зеркалом страйпов», а RAID 1+0 – «страйпом зеркал» (нормальное русское «чередование» практически не используется, сменившись американизмом). В обоих случаях используются две технологии – чередование и зеркалирование, но результаты разные.
RAID 0+1 обладает высокой скоростью работы и повышенной надежностью, поддерживается даже дешевыми RAID контроллерами и является недорогим решением. Но по надежности несколько лучше RAID 1+0. Так, массив из 10 дисков (5 по 2) может остаться работоспособным пи отказе до 5 жестких дисков!
Основной недостаток этих массивов – низкий процент использования емкости накопителей – всего 50%. Но для домашних систем именно RAID 01 или 10 может оказаться оптимальным решением.
RAID 0+3 (03) и 3+0 (30)
С этими массивами у производителей наблюдается путаница. Довольно часто вместо 0+3 или 3+0 указывают более привлекательное число 5+3 (53). Не верьте!
По идее сочетание чередования и RAID 3 дает выигрыш в скорости, но он довольно мал. Зато система заметно усложняется. Наиболее простой уровень 3+0. Из двух массивов RAID 3 строится страйп, и минимальное количество требуемых дисков – 6. Получившийся RAID 3+0 с точки зрения надежности лучше, чем 0+3.
Достоинства этих комбинаций в довольно высоком проценте использования емкости дисков и высокой скорости чтения данных. Недостатки – высокая цена, сложность системы.
RAID 0+5 (05) и 5+0 (50)
Что будет, если объединить чередование с распределенной четностью с обыкновенным чередованием? Получится быстрая и надежная система. RAID 0+5 представляет собой набор страйпов, на основе которых построен RAID 5. Такая комбинация используется редко, так как практически не дает выигрыша ни в чем. Широкое распространение получил составной RAID массив 5+0.
Чаще всего это два массива RAID 5, объединенных в страйп. Такая конфигурация позволяет получить высокую производительность при работе с файлами малого размера. Типичный пример – использование в качестве WEB-сервера.
RAID 1+5 (15) и 5+1 (51)
Этот уровень построен на сочетании зеркалирования или дуплекса и чередования с распределенной четностью. Основная цель RAID 15 и 51 – значительное повышение надежности. Массив 1+5 продолжает работать при отказе трех накопителей, а 5+1 - даже при потере пяти из восьми жестких дисков! Платить приходится большим количеством неиспользуемой емкости дисков и общим удорожанием системы.
Чаще всего для построения RAID 5+1 используют два контроллера RAID 5, которые зеркалируют на программном уровне, что позволяет снизить затраты.
JBOD
А что делать, если нужен просто один логический диск гигантского размера? Без всяких зеркалирований, чередования и четности? Тогда это уже не RAID, а JBOD – Just A Bunch Of Disks. Реализовать этот режим способен простейший контроллер или даже программная реализация контроллера
Есть ли у него преимущества, если JBOD не повышает ни быстродействия, ни надежности? Есть. По крайней мере, для работы используется все доступное пространство жестких дисков. И еще: в случае выхода из строя одного из жестких дисков, информация на других не повреждается.
Сведем основные характеристики наиболее распространенных уровней в таблицы.
Распространенные single RAID массивы
Создание программного RAID в gentoo-linux
Для начала ядро должно поддерживать рейд массивы
Код: Выделить всё
gentoo etc # cd /usr/src/linux
gentoo linux # make menuconfig
(Configure your kernel as usual and make sure the raid and lvm modules you need are
compiled in, i.e. not as modules. The same applies to the disk drivers and filesystems.)
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
<*> RAID support
< > Linear (append) mode (NEW)
<*> RAID-0 (striping) mode
<*> RAID-1 (mirroring) mode
< > RAID-10 (mirrored striping) mode (EXPERIMENTAL) (NEW)
< > RAID-4/RAID-5 mode (NEW)
< > RAID-6 mode (NEW)
< > Multipath I/O support (NEW)
< > Faulty test module for MD (NEW)
<*> Device mapper support
< > Crypt target support (NEW)
< > Snapshot target (EXPERIMENTAL) (NEW)
< > Mirror target (EXPERIMENTAL) (NEW)
< > Zero target (EXPERIMENTAL) (NEW)
< > Multipath target (EXPERIMENTAL) (NEW)
< > Bad Block Relocation Device Target (EXPERIMENTAL) (NEW)
gentoo linux # make && make modules && make modules_install
gentoo linux # cp arch/i386/boot/bzImage /boot/kernel
Теперь, до начала создания массивов RAID, нам потребуется создать узлы метаустройств:
Код: Выделить всё
# mknod /dev/md1 b 9 1
# mknod /dev/md2 b 9 2
# mknod /dev/md3 b 9 3
Код: Выделить всё
emerge -av mdadm
Код: Выделить всё
# mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
# mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
Проверка правильности сборки
Убедиться, что RAID-массив проинициализирован корректно можно просмотрев файл /proc/mdstat. В этом файле отражается текущее состояние RAID-массива.
Код: Выделить всё
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [multipath] [faulty]
md2 : active raid1 sdc2[1] sdb2[0]
488383936 blocks [2/2] [UU]
md1 : active raid1 sdc1[1] sdb1[0]
488375872 blocks [2/2] [UU]
unused devices: <none>
Создание файловой системы поверх RAID-массива
Новый RAID-раздел нужно отформатировать, т.е. создать на нём файловую систему. Сделать это можно при помощи программы из семейства mkfs. Если мы будем создавать файловую систему ext3, воспользуемся программой mkfs.ext3:
Код: Выделить всё
# mkfs.ext3 /dev/md0
Система сама не запоминает какие RAID-массивы ей нужно создать и какие компоненты в них входят. Эта информация находится в файле mdadm.conf.
Строки, которые следует добавить в этот файл, можно получить при помощи команды
Код: Выделить всё
mdadm --detail --scan --verbose
Код: Выделить всё
# mdadm --detail --scan --verbose
ARRAY /dev/md1level=raid1 num-devices=2 metadata=0.90 UUID=37c84bd6:b935b163:68147ff7:77e6d0fd
devices=/dev/sdb1,/dev/sdc1
ARRAY /dev/md2level=raid1 num-devices=2 metadata=0.90 UUID=7c10ff2a:9b8ef0a1:68147ff7:77e6d0fd
devices=/dev/sdb2,/dev/sdc2
Код: Выделить всё
# mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf