RAID-массивы и матрицы
Проблема повышения производительности дисковой подсистемы весьма многогранна. Рост вычислительных мощностей современных процессоров привел к возникновению явного дисбаланса между возможностями жестких дисков и потребностями процессоров. От этого не спасают ни дорогие SCSI-диски, ни уж тем более IDE-диски. Однако если не хватает возможностей одного диска, то, может быть, хотя бы отчасти решить данную проблему позволит установка нескольких дисков? Конечно, само по себе наличие двух или более жестких дисков на компьютере или на сервере дела не меняет — нужно заставить эти диски работать совместно (параллельно) друг с другом таким образом, чтобы это позволило повысить производительность дисковой подсистемы на операциях записи/чтения. А нельзя ли путем использования нескольких жестких дисков добиться повышения не только производительности, но и надежности хранения данных, чтобы выход из строя одного из дисков не приводил к потере информации? Именно этот подход и положен в основу так называемых RAID (Redundant Arrays of Independent Discs) массивов дисков, то есть избыточных массивов независимых дисков.
В настоящее время технология RAID получила широкое распространение. И если еще несколько лет назад RAID-массивы использовались лишь в дорогостоящих серверах с применением SCSI-дисков, то сегодня они стали своеобразным стандартом де-факто и для ПК, поскольку все современные материнские платы имеют интегрированные RAID-контроллеры.
Итак, RAID — это избыточный массив независимых дисков, на который возлагаются задачи обеспечения отказоустойчивости и повышения производительности. Отказоустойчивость достигается за счет избыточности — часть емкости дискового пространства отводится для служебных целей, становясь недоступной для пользователя. Повышение производительности обеспечивается за счет одновременного выполнения операций чтения/записи.
В соответствии с используемым алгоритмом работы с дисками различают несколько уровней RAID-массива (RAID Level). Уровни RAID различаются способами размещения и формирования избыточной информации, которая может либо размещаться на специально выделенном диске, либо перераспределяться между всеми дисками. Способов формирования такой информации несколько больше, а простейшим из них является полное дублирование (100% избыточность), или зеркалирование. Кроме того, используются коды с коррекцией ошибок, а также вычисление четности.
Уровни RAID
В настоящее время широкое распространение получили уровни RAID 0,1,10 и 5.
RAID 0
RAID уровня 0, строго говоря, не является избыточным массивом, а потому не обеспечивает надежности хранения данных. Тем не менее данный уровень находит широкое применение в случаях, когда необходима высокая производительность дисковой подсистемы. Особенно распространен этот уровень в домашних ПК. При создании RAID-массива уровня 0 информация разбивается на блоки, которые параллельно записываются на отдельные диски. Благодаря возможности одновременного ввода-вывода с нескольких дисков RAID 0 обеспечивает максимальную скорость передачи данных и максимальную эффективность использования дискового пространства, поскольку не требуется места для хранения контрольных сумм. Реализация этого уровня очень проста. В основном RAID 0 применяется в тех областях, где необходима быстрая передача большого объема данных.
RAID 1 (Mirrored disk)
RAID уровня 1 — это массив дисков со 100% избыточностью, то есть данные при этом просто полностью дублируются (зеркалируются), за счет чего достигается очень высокий уровень надежности (как, впрочем, и стоимости решения). Отметим, что для реализации уровня 1 не требуется предварительно разбивать диски и данные на блоки. В простейшем случае два диска содержат одинаковую информацию и являются одним логическим диском. При выходе из строя одного диска его функции выполняет другой (что абсолютно незаметно для пользователя). Кроме того, этот уровень удваивает скорость считывания информации, поскольку данная операция может выполняться одновременно с двух дисков. Такая схема хранения информации используется в основном в тех случаях, когда цена безопасности данных намного выше стоимости реализации системы хранения.
RAID 10
Уровень RAID 10 представляет собой некое сочетание уровней 0 и 1. Минимально для этого уровня требуется четыре диска. В массиве RAID 10 из четырех дисков они попарно объединяются в массивы уровня 0, а оба этих массива как логические диски объединяются в массив уровня 1. Возможен и другой подход: первоначально диски объединяются в зеркальные массивы уровня 1, а затем логические диски на основе этих массивов объединяются в массив уровня 0.
RAID 5
RAID уровня 5 — это отказоустойчивый массив независимых дисков с распределенным хранением контрольных сумм. При записи поток данных разбивается на блоки (страй-пы) на уровне байтов (хотя возможно разбиение и на уровне битов) и записывается одновременно на все диски массива. Для вычисления контрольной суммы используется поразрядная операция «исключающего ИЛИ» (XOR), применяемая к записываемым блокам данных. Так, если имеется n жестких дисков, аd— блок данных (страйп), то контрольная сумма рассчитывается по следующей формуле:
В случае выхода из строя любого диска данные на нем можно восстановить по контрольным данным и по данным, оставшимся на исправных дисках.
Блоки данных и контрольные суммы циклически записываются на все диски массива, то есть здесь отсутствует выделенный диск для хранения информации о контрольных суммах.
Рассмотрим в качестве иллюстрации блоки размером по четыре бита. Пусть имеются всего пять дисков для хранения данных и записи контрольных сумм. Если есть последовательность битов 1101 0011 1100 1011, разбитая на блоки по четыре бита, то для расчета контрольной суммы необходимо выполнить следующую поразрядную операцию:
Таким образом, контрольная сумма, записываемая на первый диск (Диск 0), равна 1001.
Если один из дисков, например третий, вышел из строя, то блок 1100 окажется недоступным при считывании. Однако его значение легко восстановить по контрольной сумме и по значениям остальных блоков с помощью все той же операции «исключающего ИЛИ»:
В нашем примере получим:
В случае RAID 5 все диски массива имеют одинаковый размер, однако общая емкость дисковой подсистемы, доступной для записи, становится меньше ровно на один диск. Например, если пять дисков имеют размер 100 Гбайт, то фактический размер массива составляет 400 Гбайт, поскольку 100 Гбайт отводится на контрольную информацию.
Создание RAIDматриц уровней 0 и 1 на двух дисках
Intel Matrix RAID
С появлением интегрированных на материнских платах RAID-контроллеров RAID-массивы стали популярными и в домашних ПК. Однако RAID-массивы уровней 5 и 1, не говоря уже об уровне 10, редко используются в домашних условиях, что связано прежде всего с высокой стоимостью подобных решений. Поэтому наиболее часто для домашних ПК применялся именно массив уровня 0 на двух дисках. Как мы уже отмечали, RAID уровня 0 не обеспечивает безопасности хранения данных, а потому в этом смысле конечные пользователи оказывались перед выбором: создавать быстрый, но не обеспечивающий надежности хранения данных RAID-массив уровня 0 или же, увеличивая стоимость дискового пространства в два раза, создавать RAID-массив уровня 1, который обеспечивает надежность хранения данных, однако не позволяет получить существенного выигрыша в производительности.
Для того чтобы разрешить эту нелегкую проблему, корпорация Intel разработала технологию Intel Matrix Storage, позволяющую объединить достоинства массивов уровней 0 и 1 всего на двух физических дисках. А для того, чтобы подчеркнуть, что речь в данном случае идет не просто о RAID-массиве, а о массиве, сочетающем в себе и физические и логические диски, в названии технологии вместо слова «массив» используется слово «матрица».
Итак, что же представляет собой RAID-матрица из двух дисков по технологии Intel Matrix Storage? Главная идея заключается в том, что при наличии в системе двух жестких дисков с SATA-интерфейсом и материнской платы с южным мостом ICH6R возможно разделение дискового пространства на две части (объем выбирается пользователем). При этом одна из них будет функционировать как массив уровня 0, а вторая — как RAID 1.
Рассмотрим простой пример RAID-матрицы из двух дисков по 120 Гбайт каждый. Любой из дисков можно разбить на два логических диска, например по 40 и 80 Гбайт. Далее два логических диска одного размера (например, по 40 Гбайт) объединяются в RAID-матрицу уровня 1, а оставшиеся логические диски — в RAID-матрицу уровня 0. Матрицу уровня 1 можно использовать для хранения критически важных данных, а матрицу уровня 0 разместить приложения, требующие быстрой дисковой подсистемы (см.рисунок).
В принципе, используя два физических диска, можно также создать всего одну или две RAID-матрицы уровней 0, но вот создать только матрицы уровней 1 невозможно.
Возможность создания RAID-матриц уровней 0 и 1 на двух физических дисках реализована в SATA RAID-контроллере южного моста ICH6R. Новая версия южного моста ICH7R имеет расширенные возможности по конфигурированию RAID-матриц и допускает создание RAID-матриц уровней 0,1,10 и 5.
Если в системе имеется всего два диска, то технология Intel Matrix Storage, как и преж де, позволяет создавать следующие типы RAID-матриц:
- одна матрица уровня 0;
- две матрицы уровня 0;
- матрица уровня 0 и матрица уровня 1. Если в системе установлено три жестких
диска, то возможно создание следующих типов RAID-матриц:
- одна матрица уровня 0;
- одна матрица уровня 5;
- две матрицы уровня 0;
- две матрицы уровня 5;
- матрица уровня 0 и матрица уровня 5. Если в системе установлено четыре жестких
диска, то дополнительно имеется возможность создавать RAID-матрицу уровня 10, а также комбинации уровня 10 и уровня 0 или 5.
Впрочем, преимущества технологии Intel Matrix Storage не ограничиваются гибкостью, предоставляемой пользователям при конфигурировании RAID-матриц. Даже при наличии в системе всего одного диска (то есть когда не предполагается использование технологии RAID) имеет смысл устанавливать Intel Matrix Storage Manager (текущая версия 5.1), так как при использовании южных мостов ICH7R или ICH6R/M данная утилита обеспечивает поддержку функции AHCI (Advanced Host Controller Interface). Расширенный интерфейс хост-контроллера (AHCI) позволяет принимать несколько команд одновременно и реорганизовывать их с расчетом на достижение максимальной эффективности. Технология аппаратной установки очередности команд (Native Command Queuing, NCQ) при использовании на поддерживающем ее жестком диске может повышать производительность подсистемы хранения данных в случаях непостоянных нагрузок.