div.main {margin-left: 20pt; margin-right: 20pt}
Are you
RAIDy?
Андрей Забелин zyaboz@computery.ru
Стоп, замрите, фотографирую. И после прочтения
статьи сфотографирую. Нет, это все не для того, чтобы посмотреть,
сколько морщин прибавилось после переваривания текста, а затем,
чтобы увидеть радость человека, познавшего некоторые прелести
RAID-массивов. Медитировать на слово "RAID" мы, естественно, не
будем (этим вы займетесь самостоятельно), а разберем по кусочкам всю
подноготную RAID-систем. Выпотрошим их, высушим и положим в баночку
приправ для своего компьютера. Все действительно просто. Очень
просто. Я бы даже сказал, предельно просто. Забудьте все глупости,
которые вам говорили про сервера и дороговизну.
Вообще все забудьте. Начнем с самого
начала. RAID - это не "средство защиты от тараканов", как вы
подумали, тем более не "набег", не "облава" и не "внезапное
нападение", как может сказать глупый переводчик, а всего лишь
сокращение от Redundant Array of Independent (Inexpensive) Disks
(избыточный массив независимых (или недорогих) дисков). Если
говорить нормальными словами, то RAID - это пачка дисков, которая
прикидывается одним накопителем. Занимается этим обманом
RAID-контроллер, то есть все происходит на аппаратном уровне, и
системе абсолютно наплевать, сколько реально там у нее дисков. Самое
первое, что приходит на ум, когда речь идет о нескольких дисках -
соединить их объемы и, например, представить два драйва по 30 Гб как
один на 60 Гб. Так как уже прошло то время, когда операционные
системы падали через каждые три месяца, унося вместе с собой в
могилу весь активный раздел диска, многие здравомыслящие люди
отказались от скопища логических дисков в системе. Виной тому
неэффективное использование объема накопителя.
Допустим, на диске C у вас лежит система, на диске
D - программы, на E - игрушки, а на F - документы. Так как каждый
диск заполнен не "под завязку", на нем остается место, которое не
используется никак - оно просто ждет своего времени. А если один из
дисков заполняется до отказа, приходится запускать Partition Magic и
раздвигать разделы. Удовольствие не из приятных, особенно когда
защита некоторых программ зависит от конфигурации системы - в таком
случае приходится их заново инсталлировать.
Почему бы не купить один диск на 60 Гб, а не
мучаться с двумя по 30 Гб? Во-первых, это получится дешевле.
Видим, что хорошие, быстрые диски объемом 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 Гб.
|