RAID-bad

вред и польза RAID-массивов

крис касперски ака мыщъх, no-email

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

Смачная аббревиатура RAID расшифровывается как RedundantArrayofIndependent | InexpensiveDisks (Дисковый Массив Недорогих | Независимых Дисков) и появились эти штуки еще во времена «Железной Эры», когда землей правили динозавры, а на компьютерном рынке безраздельно господствовала фирма IBM.

Своим рождением они обязаны исследованием Петтерсонона (David A. Patterson), Гибсона (Garth A. Gibson) и Катца (Randy H. Katz), предложивших для борьбы с отказами винчестеров (тогда они случались _намного_ чаще, чем сейчас) использовать избыточный массив недорогих дисков (т. е. redundantarrayofinexpensivedisks, или, сокращенно RAID) и запатентовавших эту идею в 1987 году (U.S. Patent 4,092,732 — http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=4,092,732).

Идея получила развитие и очень скоро в RAID'ы стали объединять _дорогие_ диски, поэтому слово «inexpensive» (дешевый) заменили на «independent» (независимый) и сейчас термин RAID принято расшифровывать именно так.

raid-bad_image_0.jpg

Рисунок 1 AdtronI35MBDiskpakT — RAID уровня 1 (Mirroring) из двух дисков с интегрированным контроллером, в форм-факторе 3.5« SingleSlot

Что такое RAID? То, что массив — это и мыщъх'у понятно. Но вот как этим массивом можно распорядиться?! Если объединить несколько физических диска в один «виртуальный и поблочно писать/читать со всех дисков сразу мы получим RAID уровня 0 (StripedSet), значительно увеличивающий скорость операций ввода/вывода (а, как известно, в большинстве случаев, ввод/вывод — самое узкое место в системе). В грубом приближении скорость обмена прямо пропорциональна количеству дисков, т.е. два диска увеличивают производительность практически вдвое.

Однако, здесь есть одно «но». Время поиска секторов (особенно при «далеких» позиционированиях) непостоянно и винчестер гоняет магнитную головку и в хвост, и в гриву, отыскивая нужный сектор методом вилки. При работе с одним жестким дисков время поиска сектора равно X +/- n, где n – максимальное отклонение от среднего времени поиска, обусловленного конструктивными особенностями привода. При работе с массивом дисков время поиска увеличивается до X + n, поскольку контроллер вынужден дожидаться завершения операции обмена с самым медленным из дисков.

raid-bad_image_1.jpg

Рисунок 2 выбор типа дискового массива в BIOS'е RAID-контроллера (не путать с системным BIOS'ом!)

Как следствие — чем больше у нас дисков, тем меньший прирост производительности они дают. Переход с одного диска на два — чувствуется сразу, а добавление еще двух дисков уже практически не ощущается. Тем более, что при работе с мелкими файлами ожидаемого ускорения вообще не наступает, поскольку невозможно обеспечить перекрывающееся чтение/запись нескольких небольших сегментов информации.

К тому же, чем больше дисков, тем выше вероятность отказа каждого из них, а поскольку запись ведется блочным образом, т. е. блок 1 записывается на диск 1, блок 2 — на диск 2, блок 3 — на диск 3 и т. д., то при выходе одного диска из строя из данных образуется «решето», своеобразный реквием по хранящейся в RAID'е информации или, в переводе на русский язык — могила. RAID 0 – это _крайне_ ненадежная штука и пользоваться ей можно только, например, для рабочей станции, предназначенной для обработчики цифрового видео, но ни в коем случае не для долговременного хранения данных!

RAID-контроллер
диск 1 диск 2 диск 3 диск 4 диск 5
Сегмент 1Сегмент 2Сегмент 3Сегмент 4Сегмент 5
Сегмент 6Сегмент 7Сегмент 8Сегмент 9Сегмент 10

Таблица 1 схема хранения данных на RAID 0

А можно поступить иначе и писать _одни_ _и_ _те_ _же_ данные на все диски сразу, дублируя информацию, чтобы при выходе жесткого диска из строя, ее было возможно _автоматически_ восстановить с другого. Такой массив называется «зеркальным» (MirroredSet) и соответствует RAID уровню 1. Надежность резко возрастает, а время поиска секторов по прежнему равняется X + n, т.е. RAID 1 не только не ускоряет, но даже замедляет обмен данных по сравнению с обычным жестким диском.

RAID-контроллер
диск 1
(данные)
диск 2
(копия диска 1)
диск 3
(данные)
диск 4
(копия диска 3)
диск 5
(свободный)
сегмент 1сегмент 1сегмент 2сегмент 2
сегмент 3сегмент 3сегмент 4сегмент 4

Таблица 2 схема хранения данных на RAID 1

RAID'ы уровней 2 и 3 обычно работают сразу с пятью дисками, храня на них не только полезные данные, но и байты четности, позволяющие восстановить вышедший из строя диск за счет остальных. Покажем как это происходит на примере битов (тем более, что восстановление данных есть битовая операция), пусть на четыре диска пишется: 1 0 1 1. Складывая биты друг с другом, получаем 3, а 3 по модулю 2 равно 1, вот этот самый 1 мы и пишем на пятый диск. Теперь, представим себе, что второй диск вышел из строя: 1 x 1 1 1. Мы вновь складываем биты, делим полученный результат по модулю 2 и получаем 0, что и требовалось доказать!

В принципе, дисков не обязательно должно быть пять, некоторые контроллеры работают и с тремя, но это неважно. Факт тот, что мы получаем и производительность, и надежность. Разница между RAID 2 и RAID 3 заключается в том, что RAID 2 использует для хранения битов четности несколько дисков, в то время как RAID 3 —только один, вследствие чего RAID 2 встречается крайне редко, да и RAID 3 используется нечасто.

RAID-контроллер
диск 1
(данные)
диск 2
(данные)
диск 3
(данные)
диск 4
(данные)
диск 5
(информация четности)
байт 1байт 2байт 3байт 4байт четности
байт 5байт 6байт 7байт 8байт четности

Таблица 3 схема хранения данных на RAID 3

RAID уровня 4 — это фактически усовершенствованный RAID 3, устраняющий проблему производительности при работе с небольшими объемами информации, за счет использования _только_ того диска, на котором эта информация хранится, что позволяет обрабатывать несколько запросов на чтение _одновременно_ (класс! особенно при работе с кучей мелких файлов), однако, запросы на запись порождают блокировки, вызванные необходимостью обновления байтов четности и в настоящее время RAID 4 используется _крайне_ редко.

RAID уровня 5 обходит проблему блокировок при записи путем распределения байтов честности по всем дискам, обеспечивая максимально возможною скорость обмена и высокую отказоустойчивость. Естественный недостаток — контроллеры это типа довольно дорого стоят, к тому же как минимум нам потребуются три жестких диска, которые тоже денег стоят! Впрочем, цены как на диски, так и на контроллеры неуклонно снижаются и в обозримом будущем, RAID 5 рискует стать самым популярным типов из всех остальных.

RAID-контроллер
диск 1 диск 2 диск 3 диск 4 диск 5
сегмент четностисегмент 1сегмент 2сегмент 3сегмент 4
сегмент 5сегмент четностисегмент 6сегмент 7сегмент 8
сегмент 9сегмент 10сегмент четностисегмент 11сегмент 12

Таблица 4 схема хранения данных на RAID 5

Большинство дешевых контроллеров, не поддерживающих RAID 5, тем не менее позволяют создавать гибридные дисковые массивы на основе RAID 0 + RAID 1, но в этом случае нам потребуется по меньшей мере _четыре_ жестких диска, а избыточность будет составлять 50%, против 30% у RAID 5, работающего всего с тремя дисками.

Помимо аппаратных, существуют так же и программные RAID'ы, поддерживаемые практическими всеми современными операционными системами (такими как Linux/xBSD/NT/W2K/XP, а вот Windows 9x в этот список не входит). Будучи подключенными к различными IDE-каналам они обеспечивают схожую (или чуть-чуть более низкую) производительность, зато по гораздо более дешевой цене. С точки же зрения надежности, программный RAID ничем не отличается аппаратного, если не сказать, что выигрывает у него, поскольку чем больше железа установлено в компьютер, тем выше риск его поломки — это закон, против которого не попрешь!

Рисунок 3 пяти дискам, объединенным в один RAID массив в бюджетном корпусе просто не хватило места!

RAID'ы обеспечивают либо отказоустойчивость, либо производительность, либо и то, и другое сразу. Причем, на дисках, поддерживающих горячую замену – она же «hot-plug» (SCSI, SATA), выключать компьютер для замены вышедшего из строя винчестера необязательно. Это кстати говоря, актуально не только для серверов, но и рабочих станций, занимающихся обработкой цифрового видео или другими продолжительными расчетами, которые не могут быть прерваны и которые занимают десятки часов машинного времени. Остановка системы означает, что все придется начинать заново и уже потраченные часы потрачены впустую.

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

Вот, собственно, и все преимущества RAID'ом. Теперь проговорим об их недостатках.

RAID-массив страхует _только_ от аппаратного выхода одного (реже — двух) жестких дисков из строя, но бессилен противостоять другим типам разрушения данных, как-то: вирусы, ошибки оператора, хакерские атаки, сбои операционной системы и ее окружения. А при выходе из строя блока питания или падения компьютера со стола (например), все диски массива обычно вылетают разом. Таким образом, вне зависимости от наличия/отсутствия RAID'а регулярное резервирование данных все равно остается обязательным! А если есть резервная копия, тогда какая польза от RAID'а?!

Восстанавливать же информацию с RAID'ов намного сложнее. Их поддерживают далеко не все «лечащие» утилиты, а фирмы, специализирующиеся на восстановлении — дерут за работу двойную - тройную цену, если вообще не отказываются от нее!

Причем, RAID-массив может работать только с тем контроллером, которым он был создан. Контроллеры различных производителей (и даже разные модели контроллеров одного и того же производителя) несовместимы друг с другом и если навернется контролер, то… прости прощай весь дисковый массив! Хорошо, если RAID-контроллер внешний, тогда его, по крайней мере можно будет попытаться купить (вот именно, _попытаться_ т.к. он уже давно можно быть снят с выпуска и предан забвению), а вот при выходе из строя RAID-контроллера на материнской плате (равно как и любого другого жизненного важного компонента материнской платы), наступает тырдец. Полный и окончательный. Потому что нам придется купить _точно_ _такую_ же материнскую плату, а их модельные ряды обновляются каждый сезон и «старички» исчезают из прайс-листов и складов со скоростью торнадо.

raid-bad_image_3.jpg

Рисунок 4 Ultra ATA 133 PCI RAID-контроллер от никому не известной фирмы MaplinElectronics – штука хуже динамита

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

raid-bad_image_4.jpg

Рисунок 5 материнская плата с популярным интегрированным RAID-контроллером SiliconImage

В этом смысле программные RAID-массивы более предпочтительны, поскольку работают с любым IDE/SCSI-контроллером, но и тут есть свои тонкости. Вплоть до Windows 2000, система хранила данные о дисковом массиве в… реестре! Следовательно, крах (или переустановка с нуля) Windows, означал и крах самого дискового массива со всеми содержащимися в нем данными. В Windows 2000 и более старших версиях, Microsoft высадила концепцию «динамических дисков», по сути дела, тех же самых программных RAID'ов, но! Теперь вся служебная информация хранится уже не в реестре, а на самом диске (дисках) и они могут быть подключены к любой другой W2K, XP.

А вот диски, подключенные к RAID-контроллеру (неважно — интегрированному или нет) в сумке уже не поносишь и просто так из одного компьютера в другой не перетыкнешь! Как же тогда обмениваться данными друг с другом? Как осуществлять апгред системы? Интегрированные контролеры — привязывают нас к материнской плате, не интегрированные — к текущей операционные системы, поскольку вовсе не факт, что другая ось поддерживает данный RAID-контроллер, как не факт, что его производитель поддерживает все оси, которые нам нужны. Ну Windows еще туда-сюда, хотя на «устаревшие» (по мнению производителей) контролеры новые драйвера как правило не выпускаются, со всеми вытекающими отсюда…

Наконец, у дисков, подключенных к RAID-контроллерам, очень сложно прочитать показания S.M.A.R.T. (системы самотестирования и мониторинга), а иногда и вообще невозможно. А читать их крайне полезно, поскольку по ним можно с некоторой вероятностью предсказать сколько еще винту жить осталось и узнать его температуру. Когда диск один — за его температуру можно, в общем-то, и не волноваться, но вот массив их 4х тесно расположенных дисков (а по другому их располагать даже в BigTower'е никак не получается) способен нагреваться до весьма высоких температур, требующих немедленной установки дополнительных систем охлаждения, иначе… Впрочем, не будем о грустном. Ведь позади новый год, а впереди весна, май. А май это трава. Так… о чем это мы с вами тут говорили?

Если же вы все-таки решили объединить диски в RAID и никакими силами природы вас не отговорить, то по крайней мере остановите свой выбор на контроллере именитого производителя, такого, как, например, Adaptec, который назавтра не исчезнет вместе со своими контроллерами.

Что же касается интегрированных контроллеров, тут тоже следует выбирать наиболее популярные чипы, используемые многими производителями материнских плат (хотя и не факт, что «чужая» материнская плата даже с тем же самым чипом «подхватит» уже собранный RAID). Если на материнской плате имеется несколько контроллеров (например, от Intel, Integrated Technology Express Inc и SiliconImage), следует выбирать тот, что распознается операционной системой без установки внешних драйверов (в данном случае это SiliconImage), в противном случае при ремонте упавшей системы могут возникнуть серьезные проблемы самая распространенная из которых — грузимся с Live CD, а ось не видит RAID'а. В упор. Кстати говоря, SiliconImage штатное поддерживается не только NT, но и остальными операционными системами (типа Linux или xBSD), а вот Intel – увы. IntegratedTechnologyExpressInc (известный под аббревиатурой ITE не поддерживается NT, но понимается Linux'ом и xBSD, так что в случае аварии KNOPPIXLiveCD нам поможет!)

KONICA MINOLTA DIGITAL CAMERA

Рисунок 6 чип от Silicon Image – сердце RAID-контроллера

Существует нелепая легенда, что при установке в RAID требуются винчестеры одной модели или, по крайней мере, одного производителя. Что за чушь! Можно брать любых диски, не только от разных производителей, но даже разного размера. В случае RAID'а уровня 0 мы получим диск суммарной емкости, в случае RAID 1 – наименьшей из всех имеющихся. Вся хитрость в том, что, как неоднократно показывала практика, диски одной модели, имеющие дефекты проектирования или «косяки» в техпроцессе, дохнут примерно в одно и тоже время с разбросом всего в несколько месяцев. Подобный массовый падеж на RAID'ах приводит к тому, что члены массива выходят из строя один за другим прежде, чем владелец машины успевает заменить их.

Выбор дисков от разных производителей _реально_ увеличивает надежность хранения данных на RAID 1 и RAID 5. Что же касается RAID 0, то даже при отказе одного из дисков, он теряет _все_ хранимые на нем данные и тут, действительно, лучше выбирать идентичные модели, обладающие сходными скоростными характеристиками.

И последнее. Если RAID все-таки упал, не паникуйте и не рвите на себе зубами вены. Возьмите R-Studio от R-ToolsTechnology (http://www.r-tt.com/) – это лучшее средство для автоматического восстановления из всех имеющихся.

Рисунок 7 внешний вид утилиты R-Studio от R-ToolsTechnology, умеющей восстанавливать разрушенные RAID-массивы в автоматическом режиме

Так что же, все-таки, по большому счету представляют собой RAID'ы? Добро или зло? Вопрос сложный, можно даже сказать риторический. И как к любому риторическому вопросу к нему надо подходить к философской точки зрения. То есть выбирать, руководствуясь собственной интуицией и чутьем.