ГлавнаяКонтактыКарта сайта
ЕПОС
О компанииКомпьютерная криминалистикаВосстановление информацииЗащита информацииПроизводство и ITСервисНаши разработки

Расследование инцидентов, компьютерная криминалистика, информационная безопасность

Книжная серия Взгляд на жесткий диск изнутри




Архив статей


27.07.1999
RAID: от принципов функционирования до реальных систем

Вячеслав ОВСЯННИКОВ
ведущий специалист фирмы «ЕПОС»

В 1987 г. три американских исследователя Паттерсон, Гибсон и Катц из Калифорнийского университета Беркли написали статью "A Case for Redundant Arrays of Inexpensive Discs (RAID)". В статье описывалось, каким образом можно несколько дешевых жестких дисков объединить в одно логическое устройство таким образом, что в результате объединения повышаются емкость и быстродействие системы, а отказ отдельных дисков не приводит к отказу всей системы. Возможность недорого (inexpensive) построить дисковый массив большой емкости, повышенного быстродействия и, к тому же, отказоустойчивый, с этого времени постоянно беспокоит умы компьютерщиков. Однако широкое распространение такие системы получили только сейчас. Это связано с тем, что с недороговизной (inexpensiveness) получилась маленькая неувязочка. Всем ведь известно, что не всякие комплектующие подходят, чтобы вышла «конфетка». В самые первые RAID-ы, чтобы они действительно работали, пришлось устанавливать очень дорогие дисковые устройства от мэйнфреймов. Поэтому и аббревиатуру RAID стали расшифровывать как "Redundant Arrays of Independent Discs" – избыточный массив независимых дисков. Сейчас достаточно хорошие диски имеют разумную стоимость, и RAID становится основным элементом современного сервера любого уровня (а часто и не только сервера). Тем не менее, когда мы говорим о RAID, то о дешевизне лучше сразу забыть. Стоимость полных RAID-систем не снижается так же быстро, как цены на базовые диски, из-за «накладных расходов»: контроллеры, коннекторы, специализированное программное обеспечение и т.п.

Массивы RAID становятся вместительнее, дешевле и приобретают новые возможности. Однако покупателям по-прежнему приходится определять приоритеты и искать компромиссы: между функциональностью и ценой; между производительностью и объемом дисковой памяти.

Вариантов построения систем с RAID существует много. Все они гарантируют отличную работу при умеренных затратах. Реальное же применение такой перспективной технологии очень часто приносит совершенно необъяснимые трудности. Отчасти это связано и с тем, что во множестве публикаций о RAID упускаются очень существенные детали относительно различных уровней RAID. Например, в качестве основного различия RAID-уровней 3 и 5 чаще всего указывается, что в RAID уровня 3 контрольная информация хранится на выделенном диске. Как следствие, это трактуется как недостаток («узкое горлышко»). На самом деле механизм взаимодействия дисков в RAID намного сложнее, способ размещения контрольной информации на дисках не является определяющим фактором, да и выделенный диск в RAID уровня 3 не является «узким горлышком». Давайте более детально рассмотрим хотя бы самые основные особенности систем, использующих RAID, чтобы если и не облегчить свою жизнь, то хотя бы понять, почему она так трудна.

Общие принципы функционирования

Основные задачи, которые позволяют решить RAID, это обеспечение отказоустойчивости дисковой системы и повышение ее производительности.

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

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

Возможность одновременной работы с несколькими дисками можно реализовать двумя способами: с использованием параллельного доступа (parallel-access array) и с использованием независимого доступа (independent-access array).

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

Рис. 1. Массив с параллельным доступом

Понятно, что в этом случае скорость записи (равно как и скорость чтения) увеличивается пропорционально количеству дисков, объединенных в RAID.

Для организации независимого доступа рабочее пространство дисков также размечается на зоны определенного размера (блоки). Однако, в отличие от предыдущего случая, каждый запрос на запись или чтение обслуживается только одним диском (рис. 2).

Рис. 2. Массив с независимым доступом

Естественно, в этом случае скорость записи будет не выше, чем при работе с одним диском. Однако массив с независимым доступом в каждый момент времени может обслуживать одновременно несколько запросов, каждый диск обслуживает свой запрос.

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

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

И, наконец, в RAID различного уровня применяются различные способы вычисления избыточной информации. Это также влияет на характеристики RAID (надежность, в первую очередь, производительность и стоимость). Основные способы: полное дублирование информации, применение кодов с коррекцией ошибок (применяется код с коррекцией одиночных ошибок и обнаружением двойных ошибок ECC – код Хемминга) и вычисление четности (Parity).

Уровни RAID

Для стандартизации продуктов RAID в 1992 году был организован промышленный консорциум – Комиссия советников по RAID (RAID Advisory Board: RAB.

В настоящее время комиссией стандартизировано 8 вариантов (уровней) объединения дисков в массивы: от RAID-0 до RAID-7. Номера уровней определены просто в порядке, в котором были предложены различные варианты и не связаны с характеристиками RAID. Применяются также комбинированные уровни, например, уровень 0+1 означает RAID уровня 0, но в этот RAID объединены не одиночные диски, а несколько RAID уровня 1 (несколько зеркальных дисков).

Уровни с 1-го по 5-й включительно были представлены в упомянутой выше статье Калифорнийского университета в Беркли, и эта систематика RAID была принята как стандарт «де факто». Именно эти уровни и будут рассмотрены ниже, причем основное внимание будет уделено наиболее распространенным уровням: 1, 3 и 5.

RAID-0, строго говоря, вообще не является избыточным массивом (RAID); тем не менее, данный термин широко применяется и поэтому разрешен RAB. Уровни 6 и 7 по различным причинам применяются очень редко. Например, RAID 7® является зарегистрированной торговой маркой Storage Computer Corporation (SCC), поэтому применяется исключительно в изделиях этой фирмы. Более того, многие производители RAID-контроллеров уровнями 6 и 7 обозначают нестандартизированные или комбинированные уровни. Например, в контроллерах фирмы Mylex под RAID уровня 6 понимается комбинированный уровень 0+1, а под RAID уровня 7 – простое объединение нескольких дисков в один логический.

Классификация уровней RAID, составленная с учетом сделанных выше замечаний, приведена на рис. 3.

Рис. 3. Классификация уровней RAID

RAID уровня 1 (Mirrored disk) предназначен в основном для обеспечения отказоустойчивости системы. За счет полного дублирования информации обеспечивается очень высокий уровень надежности. Однако и стоимость хранения информации получается немалой.

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

В RAID уровней 3, 4 и 5 применяется простое вычисление четности путем применения к записываемым блокам операции «исключающее или» – XOR (Parity), что позволяет использовать меньшее количество избыточных дисков.

В RAID уровня 3 (Bit-Interleaved Parity) для обеспечения отказоустойчивости вводится один дополнительный диск, на который записывается дополнительная (контрольная) информация. При записи данные разбиваются на блоки, каждый из которых записывается на отдельный диск. Затем вычисляется контрольная сумма, которая записывается на дополнительный диск. При выходе из строя любого диска данные на нем можно восстановить по контрольным данным и данным, оставшимся на исправных дисках. Как и в RAID уровня 2 расслоение данных для записи или чтения осуществляется на уровне битов (вообще говоря, допускается и расслоение на уровне байтов). Таким образом, в RAID уровня 3 реализуется практически в чистом виде архитектура с параллельным доступом.

RAID уровня 4 (Block-Interleaved Parity) отличается от RAID уровня 3 в первую очередь значительно большим размером блока записываемых данных (большим, чем размер записываемых данных). Типичное значение – кратно размеру сектора жесткого диска. Это и есть главное отличие между RAID 3 и 4.

RAID уровня 5 (Block-Interleaved Distributed-Parity) так же, как и RAID уровня 4, отличается от RAID уровня 3 большим размером блока записываемых данных. Кроме того, в отличие от RAID уровня 4, для хранения избыточной информации не выделяется отдельный диск, а контрольная информация записывается на различные диски по очереди. Такое размещение избыточной информации позволяет повысить производительность дискового массива, о чем мы поговорим далее. Однако, подчеркиваю, главное отличие RAID уровней 3 и 5 состоит, вопреки распространенному мнению, не в методе хранения избыточной информации, а в размере логических блоков, записываемых на каждый диск. В отличие от RAID уровня 3, в RAID уровня 5 реализуется архитектура с независимым доступом.

Производительность RAID

Прежде чем рассматривать вопрос производительности RAID различного уровня, необходимо определиться с самим вопросом: «что такое производительность?» Нельзя подходить к вопросу о производительности RAID с теми же мерками, с которыми мы оцениваем производительность одиночного диска. Это связано, прежде всего, с областью применения RAID. Основное применение технология RAID нашла в серверах. Поэтому такие показатели как скорость записи или скорость чтения важны, конечно, но не отражают способность системы в целом (сервера) выполнять свою основную задачу – обслуживать одновременно большое количество клиентов. В реальных условиях система, в которой установлен RAID (сервер), формирует поток запросов к RAID на обслуживание. Принципы, положенные в основу построения RAID позволяют одновременно обслужить несколько таких запросов или быстрее освободиться (в RAID-3) для обслуживания очередного запроса. Тем не менее, при интенсивном потоке заявок на обслуживание, RAID может быть занят обслуживанием предыдущих запросов. В этом случае очередной запрос ожидает, когда RAID освободится. Таким образом, перегрузка RAID интенсивным потоком запросов приводит в первую очередь к увеличению времени обслуживания очередного запроса. Поэтому в качестве критерия производительности RAID принято измерять время ожидания обслуживания при определенной интенсивности потока запросов.

Рассмотрим, каким же образом принципы, заложенные в RAID различного уровня, влияют на время ожидания обслуживания.

Время ожидания обслуживания

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

Рис. 4. Соотношение длины запросов и размера логических блоков

Данный рисунок соответствует RAID уровня 3 или 4 (в зависимости от величины запроса на обслуживание), организованного на трех дисках.

«Длинный» запрос хорошо иллюстрирует особенности RAID уровня 3. Такой запрос разбивается на отдельные блоки. Половина этих блоков (в соответствии с рисунком) записывается на один диск, а половина на другой. Одновременно на третий диск записывается контрольная информация. Операция вычисления четности – это очень быстрая операция и легко реализуется аппаратно. Поэтому дополнительными временными задержками, связанными с вычислением избыточной операции, можно пренебречь. В итоге большой файл будет записан или считан в два раза быстрее (для системы из 3-х дисков, как на рис. 4) чем, если бы запись осуществлялась на одиночный диск. Однако любой другой запрос, поступивший в это время, будет ожидать обслуживания. Таким образом, при интенсивном потоке запросов время ожидания может быть весьма значительным.

«Короткий» запрос соответствует режиму работы RAID уровня 4 или 5. Если размер записываемого файла меньше чем размер логического блока, то такой файл, естественно, не может быть разбит на части. Он весь размещается на каком-либо одном диске. Поэтому и скорость записи должна была бы быть точно такой, как и при записи на одиночный диск. Однако контрольная информация, связанная с модифицируемым блоком, соответствует всему блоку, а не только той части, которая модифицируется. Поэтому реально, чтобы выполнить запись, необходимо вначале считать модифицируемый блок и контрольную сумму, затем вычислить новое значение контрольной суммы и только после этого записать модифицированный блок и новое значение контрольной суммы. Вместо операции записи в RAID-5 и -4 фактически осуществляется операция «чтение-модификация-запись». Таким образом, в RAID уровня 4 и 5 скорость записи практически вдвое хуже, чем при использовании одиночного диска. Это – самая большая проблема в RAID уровня 5, и производители RAID-контроллеров ведут интенсивные работы по ее преодолению. Однако наличие такой проблемы еще не говорит о том, что RAID уровня 5 обладает низкой производительностью или уступает по этому показателю RAID уровня 3. При чтении, RAID уровня 4 или 5 может одновременно обслужить несколько запросов, благодаря чему производительность RAID уровня 5 может оставаться высокой даже при весьма интенсивном потоке запросов на обслуживание. В RAID уровня 5 одновременно также может обслуживаться и несколько запросов на запись. Именно для этого контрольная информация размещается не на одном диске, а чередуется на всех. Поэтому, в целом, время ожидания обслуживания при интенсивном потоке малых запросов в RAID уровня 5 оказывается лучше, чем, например, в RAID уровня 3.

Типичная зависимость времени обслуживания запросов малого размера (в потоке – 25% запросов на запись) для RAID различных уровней приведена на рис. 5. Заметим, что условия измерения близки к реальным условиям в системе с централизованной базой данных Клиент-Серверной технологии.

Рис. 5. Типичная зависимость времени обслуживания запросов от интенсивности запросов

Формы кривых для RAID различного уровня хорошо объясняют поведение системы с RAID в реальных условиях.

RAID-0+1 обеспечивает минимальное время обслуживания при гораздо более интенсивном потоке запросов, чем все остальные уровни RAID. Более того, увеличение времени обслуживания при увеличении интенсивности потока запросов происходит достаточно плавно, благодаря чему уменьшение производительности почти незаметно для большинства пользователей.

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

В большинстве случаев именно RAID уровня 1 или уровня 0+1 обеспечивают наилучшую производительность в реальных системах.

RAID уровня 3 обеспечивает очень высокую производительность при редких запросах, но при увеличении интенсивности запросов увеличение времени обслуживания происходит очень быстро. Это не позволяет рекомендовать RAID уровня 3 в серверах, и особенно в серверах, предназначенных для обслуживания баз данных.

RAID уровня 5 занимает промежуточное положение.

Несколько по-другому ведут себя RAID-ы при обслуживании больших запросов (интенсивный обмен длинными файлами). Для таких приложений RAID-3 показывает ощутимо лучшую производительность, чем RAID-5. Возможности RAID-0 несколько скромнее, однако лучше, чем у RAID-3 и RAID-5. Эти условия оказываются очень трудными для RAID-1. По времени обслуживания длинных запросов RAID-1 значительно уступает всем другим вариантам RAID. По-прежнему лидирующим оказывается RAID-0+1.

Затраты и целесообразность

RAID различного уровня для своей организации требуют также и различных аппаратных затрат. Предположим, если необходима дисковая система емкостью 36 ГБ, то можно, например, использовать 4 диска по 9 ГБ каждый. Однако с учетом дисков, необходимых для размещения избыточной информации, потребуется установить больше дисков (см. рис. 6).

Рис. 6. Количество дисков в системах с RAID разного уровня

Приведенное выше сравнение показывает наиболее целесообразные области применения RAID различного уровня. В серверах начального уровня, когда на первый план выдвигается вопрос стоимости, целесообразно применять RAID уровня 1 (требуется только один дополнительный диск, зеркальный с основным). В серверах, для которых основным требованием является высокая производительность, лучшим решением будет RAID уровня 0+1. В большинстве же других случаев RAID уровня 5 обеспечивает достаточно высокую производительность при умеренных затратах. RAID уровня 3 целесообразно применять только в специальных серверах, предназначенных для хранения больших файлов (графика, видео и т.п.). Но и в этом случае RAID уровня 0+1 обеспечит лучшую производительность.

В целом, качественное соотношение характеристик различного уровня может быть проиллюстрировано рис. 7.

Рис. 7. Качественное соотношение характеристик RAID различного уровня

Реальные RAID системы

Существует несколько компаний, которые производят RAID-системы в виде готового изделия. Это, например, Digital, Hitachi и др. Однако стоимость этих изделий не позволяет им оказать сколько-нибудь заметное влияние на украинский рынок. В подавляющем большинстве случаев для организации RAID используется PCI-to-SCSI RAID-контроллер и несколько SCSI-дисков, которые устанавливаются в сервер отечественными производителями серверов, а иногда даже и самостоятельно. Самой большой популярностью на украинском рынке пользуются RAID-контроллеры фирм Mylex и AMI, хорошо известны также DPT и Adaptec. В конструкции современных RAID-контроллеров этих фирм (за исключением, правда, Adaptec) применяются самые последние достижения в области устройств хранения информации и устройств ввода-вывода.

Наиболее распространенными в Украине являются контроллеры:

  • Mylex: AcceleRAID 150, 200 и 250;
  • AMI: MegaRAID 762, 466, 428 и 438;
  • DPT: Decade и Century.

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

Рис. 8. Результаты испытания контроллеров с использованием технологии I2O

Время ожидания обслуживания для 100 потоков запросов снижается более чем в 2 раза только за счет применения технологии I2O.

Кроме этого, все эти контроллеры имеют встроенную кэш довольно большого объема, что также способствует повышению производительности системы. Кэш используется как при записи, так и при чтении. Более того, алгоритмы кэширования постоянно совершенствуются. Так, в частности, в контроллерах DPT применяется так называемая «виртуальная кэш». Часть памяти отводится не для хранения данных, а для хранения адресов этих данных. Как правило, в реальных условиях одни и те же данные требуются в одной и той же последовательности. Поэтому, при поступлении запроса на чтение первой порции данных, контроллер в состоянии предсказать какие данные будут запрошены в дальнейшем и заранее сосчитать эти данные с дисков в свою кэш.

Указанные выше контроллеры имеют приемлемую даже для серверов начального уровня цену, но обладают при этом уникальной производительностью. На рис. 9 приведены результаты измерения производительности системы с контроллером Mylex AcceleRAID 250 и 4 U2 SCSI-дисками для одного и ста потоков заявок.

Рис. 9. Производительность системы с контроллером Mylex AcceleRAID 250:
а) для одного потока заявок; б) для ста потоков заявок

Внимательный читатель, конечно же сравнил результаты, приведенные на рис. 5 и рис. 9. Результаты на рис. 5 кажутся более привлекательными. Но на рис. 5 приведены данные из работ Digital Equipment Corporation (Peter McLean "An Introduction to RAID Redundant Arrays of Inexpensive Disks", апрель 1991). В то время, конечно, еще не было приборов, поддерживающих технологию I2O. Но ведь это Digital Equipment! Более того, в этой установке подключалось большое количество дисков. Данные же на рис. 9 получены с использованием серийного, широко распространенного контроллера для серверов начального уровня и только с 4 жесткими дисками.

Некоторые другие контроллеры, например, фирмы Adaptec, используют программную реализацию RAID. Практически всеми вопросами организации RAID и операциями ввода-вывода в таком контроллере занят центральный процессор компьютера. Это, конечно, не позволяет достичь высокой производительности. Однако и стоят такие контроллеры значительно дешевле.

Более подробную информацию о конкретных моделях RAID-контроллеров можно найти на сайтах производителей этих контроллеров. Кроме приведенных выше ссылок на сайты ведущих производителей контроллеров, могу привести (не претендуя на полноту списка) ссылки еще на ряд известных производителей: ASUStek, Digi-Data, Domex, ICP Vortex, IFT (Infortrend), Promise.


Поделиться информацией