[upgrade/includes/logo.htm]
[upgrade/includes/bar.htm]

 

Rambler's Top100

 

 


железо

 

2002 г.

Are you RAIDy?

Андрей Забелин

Are you RAIDy?


Стоп, замрите, фотографирую. И после прочтения статьи сфотографирую. Нет, это все не для того, чтобы посмотреть, сколько морщин прибавилось после переваривания текста, а затем, чтобы увидеть радость человека, познавшего некоторые прелести RAID-массивов. Медитировать на слово "RAID" мы, естественно, не будем (этим вы займетесь самостоятельно), а разберем по кусочкам всю подноготную RAID-систем. Выпотрошим их, высушим и положим в баночку приправ для своего компьютера. Все действительно просто. Очень просто. Я бы даже сказал, предельно просто. Забудьте все глупости, которые вам говорили про сервера и дороговизну.

Вообще все забудьте. Начнем с самого начала.
RAID - это не "средство защиты от тараканов", как вы подумали, тем более не "набег", не "облава" и не "внезапное нападение", как может сказать глупый переводчик, а всего лишь сокращение от Redundant Array of Independent (Inexpensive) Disks (избыточный массив независимых (или недорогих) дисков). Если говорить нормальными словами, то RAID - это пачка дисков, которая прикидывается одним накопителем. Занимается этим обманом RAID-контроллер, то есть все происходит на аппаратном уровне, и системе абсолютно наплевать, сколько реально там у нее дисков. Самое первое, что приходит на ум, когда речь идет о нескольких дисках - соединить их объемы и, например, представить два драйва по 30 Гб как один на 60 Гб. Так как уже прошло то время, когда операционные системы падали через каждые три месяца, унося вместе с собой в могилу весь активный раздел диска, многие здравомыслящие люди отказались от скопища логических дисков в системе.

Виной тому неэффективное использование объема накопителя. Допустим, на диске C у вас лежит система, на диске D - программы, на E - игрушки, а на F - документы. Так как каждый диск заполнен не "под завязку", на нем остается место, которое не используется никак - оно просто ждет своего времени. А если один из дисков заполняется до отказа, приходится запускать Partition Magic и раздвигать разделы. Удовольствие не из приятных, особенно когда защита некоторых программ зависит от конфигурации системы - в таком случае приходится их заново инсталлировать.

Почему бы не купить один диск на 60 Гб, а не мучаться с двумя по 30 Гб? Во-первых, это получится дешевле. Заходим на www.computery.ru, смотрим цены. Видим, что хорошие, быстрые диски объемом 30 Гб стоят около $160. Отлично, смотрим на диски размером 60 Гб. А вот тут огорчение - быстрый диск меньше чем за $500 не купить. Складываем два раза по $160, прибавляем стоимость RAID-контроллера - 95$, и в итоге получаем $415. Экономия почти $100. Это самый первый, ценовой плюс RAID-массива. В принципе, человеку, который покупает такие вещи, $85 на фоне общих затрат не играют особой роли, но тут есть еще один очень важный момент - контроллер умеет работать с дисками по-разному, исходя из различных задач. 

Для RAID-массивов выработали несколько методов работы с дисками, которые называют уровнями RAID. Изначально нумерация происходила с первого уровня, и каждый из уровней полностью оправдывал название избыточного массива данных - в случае сбоя одного винчестера возможно было восстановление данных при помощью другого или других дисков. Однако немногим позже появился нулевой уровень RAID, который не был рассчитан на надежность массива, а являлся просто способом увеличения производительности. Работает RAID 0 довольно просто - информация между дисками распределяется блоками.

Что это значит? При записи файла контроллеру поступают данные, которые он равномерно разбрасывает по дискам, из-за чего физическая скорость записи и чтения данных возрастает, так как диски работают почти синхронно, а на запись и чтение с пластин им требуется ровно в два раза меньше времени. В итоге получается, что, кроме выигрыша в цене перед одним большим диском, имеется и значительный выигрыш в производительности. 

Есть, правда, частный случай RAID 0, который не занимается распределением файлов по дискам блоками. Зовут этот "частный случай" - JBOD, и работает он по принципу "наполнил одно - заполняй другое". То есть происходит простое соединение емкостей двух дисков, а после заполнения одного винчестера происходит заполнение другого. Примитивный способ склеивания двух дисков в один.

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

Второй момент - переносимость. Смонтированный массив перенести не так просто, как отдельный диск - часто приходится тащить с собой контроллер и драйвера (а ведь некоторые системы могут вообще не поддерживаться). И последнее, самое незначительное - шум и место. Представьте себе десяток хардов по 10 000 об/мин, и каждый с собственным вентилятором. От такого воя не спасут даже беруши, а абы какой корпус под все это хозяйство точно не сгодится.

Теперь забудем про большие сервера, большие деньги и злобное начальство, а попытаемся придумать RAID-массиву домашнее применение. Если требуется что-то попроще, то остановимся на интерфейсе IDE. Во-первых, диски SCSI слишком дороги, а во-вторых, производительность последних моделей хардов, поддерживающих Ultra ATA/100 находится на уровне SCSI-дисков среднего уровня. С IDE RAID-контроллером тоже довольно просто разобраться - чаще всего там не ставят дополнительную кэш-память, аккумуляторы и мощные процессоры, как в дорогих "сказевых" RAID; поэтому они и стоят дешевле, причем намного.

Можно, конечно, вообще обойтись без аппаратного контроллера - например, Windows NT 4.0 Server умеет программно реализовывать некоторые уровни RAID-контроллера. И все же это фигово, так как происходит жесткая привязка дисков к операционной системе, а вся нагрузка по обработке данных с винчестера ложится на процессор. Так можно и эмулятор GeForce2 GTS написать, только вот радости от него будет… Что касается "железки", то тут все хорошо - никаких тебе лишних задержек, да и совместимость хорошая.
Из-за того, что интерфейс IDE чаще всего применяется в домашних компьютерах или недорогих высокопроизводительных системах, контроллеры тоже стараются делать не очень дорогими.

Экономят, естественно, также на мощности процессора, из-за чего некоторые уровни RAID, требующие значительных вычислительных ресурсов, просто не поддерживаются. Наиболее простыми в реализации являются уровни 0 и 1 и их комбинации. Про RAID 0 в общих чертах мы уже говорили, теперь опишем RAID 1 (Mirror). Являясь, по сути, самым первым уровнем RAID, этот принцип работы с дисками наиболее простой. Информация пишется сразу на все диски, а, в случае выхода из строя одного из винчестеров, чтение происходит с резервного диска. То есть, если два диска по 30 Гб работают в режиме RAID 1, общий объем дискового пространства составляет те же самые 30 Гб, но массив обладает намного большей надежностью, нежели один диск.

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

Производительность, как и в случае с уровнем 0, возрастает, но ненамного. Контроллер способен только ускорить чтение с диска, так как может приказать двум дискам выдать ему две разные части файла, а потом их "склеить" до передачи в систему. Интересно, что в таких IDE-контроллерах часто используются элементы SCSI-технологии, такие как конвейерная сортировка порядка чтения данных (elevator sorting) и балансировка загрузки дисков (load balancing). Однако скорость записи, по сравнению с одним драйвом, не возрастает, так как все равно приходится писать информацию на каждый диск полностью. 

Существует также комбинация уровней 0 и 1, называемая RAID 0+1. Пример - четыре диска, первый и второй, работающие в режиме Stripe дублируются третьим и четвертым дисками, тоже работающими в режиме Stripe. Получается этакий зеркальный Stripe из двух дисков. Это довольно эффективное решение, в котором совмещается высокая производительность и высокая надежность массива. Еще одним дополнением к уровню RAID 1 является дополнительный Hot Spare-диск, который не является активным во время нормальной работы массива.

Но как только один диск отказывает, Hot Spare-диск тут же заменяет его, а контроллер в фоновом режиме переписывает информацию с работающего диска на резервный. Этим способом в автоматическом режиме происходит полное восстановление надежности RAID-массива уровня 1.

Теоретически все производители RAID-контроллеров советуют использовать в массиве одинаковые диски, и вот почему. Если два диска различаются по объему, то пресловутый RAID 1 сможет нормально дублировать тот диск, который меньше по объему, то есть размер массива, состоящего из дисков 15 Гб и 20 Гб, будет равняться 15 Гб. Относительно JBOD (он же spanning) такого ограничения нет, так как информация там пишется по мере заполнения дисков.

 

Stripe, 
один диск

Stripe, 2 диска, 
блок - 4 кб

 Stripe, 2 диска, 
блок - 64 кб

Stripe, 2 диска, 
блок1024 кб

Business Disk
  WinMark 99 

5465 6030 6620 6580

High-End Disk
WinMark 99

19 300 21 200 24 100 23 300

Disk Playback/HE:AVS/
Express 3.4

13 400    12 900 15 010 16 120

Disk Playback/
HE:FrontPage 98

98 500    99 610 100 830 99 200

Disk Playback/
HE:MicroStation SE

19 070    21 830 22 010 21 130

Disk Playback/
HE:Photoshop 4.0

11 500    14 800 15 970 16 200

Disk Playback/
HE:Premiere 4.2

17 320    15 900 21 800 19 690

Disk Playback/
HE:Sound Forge 4.0

22 420    27 090 36 920 30 020

Disk Playback/
HE:Visual C++ 5.0

22 910    25 320 29 400 27 930

Что касается RAID 0, нацеленного, в первую очередь, на производительность, то здесь желательно полное соответствие дисков по скоростным характеристикам. Самым большим тормозом в режиме Stripe будет медленный диск, и прибавка в производительности такого массива, чаще всего, не превысит 40% (при конфигурации из двух дисков) от скорости самого медленного драйва. Размер тоже имеет значение - общая емкость массива не будет больше емкости самого маленького диска, умноженного их количество накопителей. То есть, если в режиме Stripe трудятся четыре диска - 10, 15, 20 и 30 Гб, то общий объем массива будет составлять 40 Гб.

Вот, в принципе и все функции, которые поддерживают недорогие IDE RAID-контроллеры, встроенные в некоторые материнские платы или выполненные в качестве отдельных PCI-плат. Перейдем к непосредственному тестированию одного из последних контроллеров фирмы Promise - FastTrack100. Этот контроллер имеет два независимых канала, процессор и свой BIOS, поддерживающий параллельную обработку данных и, естественно, отвечающий за функции как IDE-, так и RAID-контроллера. Поддерживает уровни 0, 1, 0+1, функцию JBOD и возможность использования Hot Spare-диска.

Испытательный стенд:
Материнская плата ASUS CUSL2 (i815E)
Процессор Pentium 933EB (133 МГц - шина)
Оперативная память 128 Мб Micron PC133
Системный жесткий диск IBM DTTA 15 Гб
Жесткие диски RAID-массива 2 диска IBM DTLA 30 Гб, 7200 об/мин
Видеокарта ASUS V7700 Ultra (GeForce2 Ultra)
Операционная система Windows 98 SE

После того, как плата была вставлена, начались поиски дискеты с драйверами. Так как в недрах коробки их обнаружено не было, пришлось лезть на сайт Promise, но ведь для этого нужно было сначала загрузиться. Перед загрузкой операционки выскочил BIOS контроллера с предупреждением, что массив не определен, и сразу же предложил его настроить. Появились шесть пунктов меню, первый из которых был "Auto Setup", куда мы сразу же и забрели.

Предлагалось выбрать задачу, возложенную на RAID-массив, а при ее изменении чуть ниже вырисовывалась конфигурация под каждый конкретный случай. Определив массив как Stripe из двух дисков, мы перешли к процедуре загрузки. С загрузкой у RAID-массива все более чем в порядке - сделать его стартовым можно, выбрав в BIOS системы загрузку со SCSI-контроллера или внешнего IDE-контроллера, а сам FastTrack также позволяет выбирать загрузочный массив из существующих.

Небольшое отступление для любителей нестандартных загрузчиков: так как контроллер прописывает данные о типе массива, количестве дисков и прочую служебную информацию на все диски, будьте осторожными, чтобы "новомодные" загрузчики не убили эту область.
Далее по списку идет FDISK и FORMAT. Создание разделов, логических дисков, форматирование - все это можно сделать из DOS - проблем не будет, а весь массив будет виден полностью. Даже после того, как Windows загрузилась, дополнительный диск был виден, но, к сожалению, работать с ним было очень и очень тяжело - даже простое переписывание файлов загружало систему процентов на 99.

Наконец, драйвера были раздобыты, установлены, после чего в свойствах системы появился SCSI-контроллер и дополнительный диск с нормальным названием массива от Promise. Убедившись, что режим DMA включен, мы поняли, что пришло время затестировать RAID насмерть.
Выявлялась также эффективность работы RAID 0 при различных размерах блока. Как сказано в документации, меньший размер блока хорош для серверов, работающих со многими мелкими файлами, а большой - для аудио- и видеоприложений. Мы использовали размеры блоков в 8, 64 и 1024 кб. Результаты Winbench 99, с которыми мы полностью согласны, исходя из общих ощущений, вы можете наблюдать в таблице.

Что сразу бросается в глаза? То, что при размере блока в 4 кб отрыв от одного диска не так уже велик, а если посмотреть на детальный разбор тестов HE от Disk Winmark, то видно, что в некоторых приложениях RAID-массив даже немного отстает. Слишком частые перескоки с одного диска на другой довольно трудно даются не такому уж быстрому процессору, установленному на контроллере, и реальный выигрыш от использования блоков по 8 кб возможен только в тех редких случаях, когда файлы совсем малы и задержки в контроллере оправдываются возросшей скоростью чтения или записи с пластин.

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

Все же значительное увеличение размера блока тоже нежелательно. Дело в том, что технология Stripe не в состоянии развернуться в полную мощь, если файлы не раскидываются по дискам. Только в некоторых приложениях виден прирост производительности, по сравнению с блоками по 64 кб, причем очень незначительный, так что этот размер блока также не оптимален для большинства задач. Самым ходовым размерчиком оказался блок в 64 кб - отличный баланс между загрузкой дисков и контроллера. В этом режиме наиболее полно себя показывает технология Stripe, а прирост производительности действительно находится на уровне 20-40%, иногда достигая 50%.

Уровни RAID

RAID 0 (Stripe). Режим, при использовании которого достигается максимальная производительность. Не обладая избыточностью, делает весь массив максимально зависимым от сбоев. Данные располагаются поочередно на все диски, что повышает скорость чтения и записи. Используется весь объем дисков. Область применения - приложения, требующие высоких скоростей обмена с диском.

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

RAID 2. Использует некоторые диски для хранения кодов ECC. В остальном - технология Stripe с блоками размером в сектор. Так как большинство дисководов имеют свои коды ECC, а эффективность RAID 2 ниже, чем у RAID 3, этот режим практически не используется.


RAID 3. Идентичен RAID 2, только вместо кодов ECC используются коды четности, которые, вкупе с кодами ECC каждого сектора, делают возможным восстановление информации. Из-за синхронизации всех дисководов при операциях чтения и записи, применяется в системах с потоковой обработкой информации.

RAID 4. Усовершенствованный вариант RAID уровня 3, отличием которого является использование Stripe-блоков большей величины. Из-за этого становится возможным одновременно совершать операции чтения. С записью все так же плохо, как и у RAID 3, поэтому применяется довольно редко.

RAID 5. Массив, также использующий данные четности. Относительно RAID 4 размер Stripe-блока еще больше увеличен, а данные четности располагаются на всех дисках по очереди. Возможно как одновременное чтение, так и запись, хотя скорость записи гораздо ниже, чем у массивов RAID 1. Положительным аспектом этого варианта реализации RAID является то, что только емкость только одного диска будет содержать избыточную информацию, в то время как объем остальных дисков будет полностью задействован.

Что же на практике мы получили от RAID-контроллера? Первое - скорость. Повышение производительности дисков на 50% дается производителям не меньше, чем за полгода, а тут все решается установкой дополнительной платы. Второе - объем накопителей. Если необходимо работать с "толстыми" дисками, то первым делом встанет вопрос цены этих дисков, а в случае использования RAID-массива эта проблема решается довольно просто и экономично.

Третье - надежность. К сожалению, в случае с двумя дисками придется выбирать - или много скорости, или много надежности. Есть, конечно, вариант, Stripe + Mirror, но покупать четыре диска, чтобы использовать объем только двух из них, не каждому по карману. Резюме - если доверяете производителям - ставьте диски в режиме Stripe и ни о чем не думайте. Если паранойя или сверхважная информация - для вас режим Mirror.
 

 

Благодарность

 
Благодарим компанию ЮСН-Компьютерс www.usn.ru, тел. 295-2966 за предоставленные на тестирование жесткие диски IBM DTLA 30 Гб, а также контроллер Promise FastTrack100.

 

 

 



[upgrade/includes/footer_u2.htm]