Данная статья предназначена для "новичков", начавших изучение "RAIDирования".
В man-страничках, в принципе, все расписано, но английский язык для всех жителей постсоветского пространства не является родным, а потому не все могут "правильно" прочитать информацию.
Итак, RAID (RedundantArrayofIndependentDisks- "избыточный" дисковый массив независимых дисков). Делятся на hardware и software типы (базирующиеся на специальном контроллере и созданные программными средствами соответственно).
RAIDы служат для повышения надёжности хранения данных и/или для повышения скорости чтения/записи информации. Они бывают нескольких типов (0,1,0+1,1+0,3,5,6);
RAID 0 - представлен как не отказоустойчивый дисковый массив;
RAID 1 - определён как зеркальный дисковый массив;
RAID 3,4,5 - используют чётность для защиты данных от одиночных неисправностей;
RAID 6 - используют чётность для защиты данных от двойных неисправностей;
RAID 1+0, 0+1 - комбинация двух видов RAID.
Рассмотрим каждый RAIDв отдельности на примере software RAID в SolarisVolumemanager (в прошлом Solstice Disk Suite).
Для начала необходимо определиться, что "slice" это один логический раздел диска, занимающий от нуля байт до полной емкости диска. Другими словами "диск" - понятие "большее", чем "слайс". В ОС Solaris диск можно "разбить" на 7 слайсов, а при помощи нового ПО Solaris Volume Manager слайсы можно разбить на softpartitions. Единицей RAIDа является именно слайс, поэтому его и будем рассматривать в примерах.
Кроме того, в системе уже должны быть реплики metadb, примененные ядром ОС.
Важно: не рекомендуется использовать несколько слайсов одного физического диска для использования их в одном RAIDе (в целях тренировки подумайте сами почему?).
Рассмотрим идеальный случай, когда диски "разнесены" по разным контроллерам(это дает дополнительную избыточность):
Системные диски
c0t0d0 и c1t0d0
Дополнительные диски
c2t0d0, c2t1d0, c2t2d0, c2t3d0 - расположены, например, в массиве типа SUN Storage 3120
c3t0d0, c3t1d0, c3t2d0,c3t3d0 - расположены, например, в массиве типа SUN Storage 3120
Предположим, что:
- имена meta-устройств с d10 по d60 уже заняты под "RAID1" системных дисков;
- все дополнительные диски, используемые для создания RAID одинаковой емкости для каждого RAID;
- все дополнительные диски "разбиты" на один слайс, занимающий всю емкость диска (например,s7).
Создать реплики можно так:
1а. при инсталляции машины предусмотрите слайс (номер 7, как советует Компания SUN Microsystems, я же использую слайс номер 3,в силу сложившейся традиции) размером около 64 Мб (как написано в документации - не менее 4 Мб)
1б. если ОС уже установлена, то загрузившись с компакт диска аккуратно "переразбейте" системный диск и его будущее "зеркало" так, чтобы у вас получился свободный слайс нужной емкости.
2. в ОС (уже не с компакт диска) выполнить команды:
metadb-fac 3 c0t0d0s3 c1t0d0s3
init 6
В данном примере создаются по 3 реплики metadb на третьих слайсах системного диска и его будущего "зеркала", после чего машина перезагружается для "применения" реплик. После перезагрузки можно создать "зеркало" системных дисков. Как это делается см. в другой статье (http://lit.lib.ru/editors/t/tleushev/text_0020.shtml).
Теперь можно говорить о других видах RAID (для системных дисков software RAID рекомендуетсяиспользовать только RAID-1).
Базовые уровни RAID
RAID0 - concat слайсов
При конкатенации слайсы следуют один за другим "по вертикали вниз", таким образом запись и чтение на второй и последующие слайсы будет производиться после заполнения предыдущего слайса (представьте автопоезд, состоящий из тягача с несколькими прицепами, в которые груз насыпается последовательно).
В случае выхода из строя любого из компонентов теряется вся информация, хранившаяся на RAID0, что сразу становится известно всем пользователям.
Производительность такого RAID будет равна производительности одного диска.
Емкость такого RAID равна суммарной емкости дисков.
Создать этот RAID0 можно с количеством слайсов от 1 и более (также можно увеличивать кол-во дисков "на ходу" с одновременным увеличением дискового пространства).
Для получения двух виртуальных дисков (RAID0), одинаковой емкости выполняем команды:
В этом случае вся информация, записываемая на RAID "размазывается" по компонентам одновременно (представьте некий тягач с прицепами, расположенными в один горизонтальный ряд и экскаватор с ковшом, ширина которого равна ширине прицепов тягача).
В случае выхода из строя любого из компонентов теряется вся информация, хранившаяся на RAID0, что сразу становится известно всем пользователям.
Производительность такого RAID равна суммарной производительности дисков (т.е. гипотетически, чем больше шпинделей, тем выше скорость RAID).
Емкость такого RAID равна суммарной емкости дисков.
Создать RAID0 можно с количеством слайсов от 2 и более.
Для получения двух виртуальных дисков (RAID0), одинаковой емкости выполняем команды:
В этом случае вся информация, записываемая на RAID дублируется по компонентам одновременно (представьте 2 листа бумаги с копиркой между ними).
Производительность при считывании получаем большую, чем с одного диска за счёт распараллеливания запросов, скорость записи остается практически прежней.
В случае выхода из строя любого из компонентов вся информация, хранившаяся на RAID1 остается доступной на дубликатах ("подзеркалах"), пользователи почти ничего не заметят.
Один минус - для хранения одного и того же объема информации платим в 2 раза больше денег.
Большой плюс - отказоустойчивость, кроме того, можно использовать диск "горячей замены" - hotspare.
Создать такой RAID можно с количеством слайсов от 2 и более.
Из имеющихся восьми дисков можно сделать 4 зеркала из двух дисков каждое, желательно "разнести" половинки по контроллерам (можно сделать и трехвэйное зеркало, у которого имеются свои преимущества, особенно для проведения резервного копирования, но это уже дороже).
metainit d71 1 1 c2t0d0s7
metainit d72 1 1 c3t0d0s7
metainit d70 -m d71 d72
metainit d81 1 1 c2t1d0s7
metainit d82 1 1 c3t1d0s7
metainit d80 -m d81 d82
metainit d91 1 1 c2t2d0s7
metainit d92 1 1 c3t2d0s7
metainit d90 -m d91 d92
metainit d101 1 1 c2t3d0s7
metainit d102 1 1 c3t3d0s7
metainit d100 -m d101 d102
newfs /dev/md/rdsk/d70
newfs /dev/md/rdsk/d80
newfs /dev/md/rdsk/d90
newfs /dev/md/rdsk/d100
fsck /dev/md/rdsk/d70
fsck /dev/md/rdsk/d80
fsck /dev/md/rdsk/d90
fsck /dev/md/rdsk/d100
RAID 3,4,6
На самом деле это не очень распространенные виды, так что пока рассматривать их не будем (быть может, в другой раз).
RAID 5
Здесь информация тоже "размазывается", но своеобразно - с использованием "четности".
В отличии от "зеркала" денег здесь нужно меньше - жертвуя ради избыточности ёмкостью всего одного диска из массива, мы получаем защиту от выхода из строя любого (одного) из винчестеров тома.
При записи информации на RAID5 тратятся дополнительные системные ресурсы на дополнительные вычисления, а при чтении имеется выигрыш (по сравнению с отдельным винчестером), в связи с тем, что потоки данных с нескольких накопителей массива распараллеливаются, кроме того можно использовать диск "горячей замены" - hotspare, (даже рекомендуется).
При выходе из строя одного из дисков RAID5 переходит в критический режим - все операции записи и чтения сопровождаются дополнительной потерей системных ресурсов, резко падает производительность, диски начинают греться. Администратор должен как можно быстрее заменить неисправный компонент до выхода из строя какого-нибудь второго слайса или всех сразу. (В обоих случаях вся информация будет потеряна).
Создать RAID5 можно с количеством слайсов от 3 и более.
Из имеющихся восьми дисков можно сделать 1 или 2 RAID5 (в каждом должно быть не менее трех слайсов).
Очень не производительный RAID и не распространен (насколько мне известно). Пример привел лишь потому, что такой пример есть в man-страничке.
RAID 1+0 - страйп или конкатенация зеркал (ТАК я никогда не делал для практических целей)
Страйп зеркал будет быстрым как страйп и безопасным как зеркало.
Конкат зеркал будет безопасным, но не быстрым.
RAID0+1 - зеркало страйпов или конкатов (обычно ТАК зеркало делают уже "сильно потом" после создания страйпа или конката, для отказоустойчивости)
Зеркало страйпов и быстро и безопасно.
Зеркало конкатов будет безопасным, но не быстрым.
Вообще, при создании файловой системы на диске или на RAID можно "рулить" размером блока, опциями чтения (geometric, direct all reads to the first submirror) и записи (serial, simultaneously).
Можно и нужно использовать hotspare диски (кроме RAID0).
Но самое главное - прежде чем что-то делать надо понять что вы хотите получить в итоге: скорость, избыточность, избыточность и скорость или повышенную избыточность.
Жду ваших отзывов на страничке, обещаю оперативно поправить что-то или дополнить по вашим замечаниям и предложениям.
При возникновении вопросов можете писать напрямую tnm_2004@mail.ru