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

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

Особенности технологии построения магнитных дисков привели к значительному несоответствию между увеличением производительности процессорных модулей и самих магнитных дисков. Если в 1990 г. лучшими среди серийных были 5.25″ диски со средним временем доступа 12мс и временем задержки 5 мс (при оборотах шпинделя около 5 000 об/м 1), то сегодня пальма первенства принадлежит 3.5″ дискам со средним временем доступа 5 мс и временем задержки 1 мс (при оборотах шпинделя 10 000 об/м). Здесь мы видим улучшение технических характеристик на величину около 100%. В тоже время, быстродействие процессоров увеличилось более чем на 2 000%. Во многом это стало возможно благодаря тому, что процессоры имеют прямые преимущества использования VLSI (сверхбольшой интеграции). Ее использование не только дает возможность увеличивать частоту, но и число компонент, которые могут быть интегрированы в чип, что дает возможность внедрять архитектурные преимущества, которые позволяют осуществлять параллельные вычисления.

1 - Усредненные данные.

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

Увеличиваем быстродействие

Невозможность значительного увеличения технологических параметров магнитных дисков влечет за собой необходимость поиска других путей, одним из которых является параллельная обработка.

Если расположить блок данных по N дискам некоторого массива и организовать это размещение так, чтобы существовала возможность одновременного считывания информации, то этот блок можно будет считать в N раз быстрее, (без учёта времени формирования блока). Поскольку все данные передаются параллельно, это архитектурное решение называется parallel-access array (массив с параллельным доступом).

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

Некоторые задачи, наоборот, характерны большим количеством малых запросов. К таким задачам относятся, например, задачи обработки баз данных. Располагая записи базы данных по дискам массива, можно распределить загрузку, независимо позиционируя диски. Такую архитектуру принято называть independent-access array (массив с независимым доступом).

Увеличиваем отказоустойчивость

К сожалению, при увеличении количества дисков в массиве, надежность всего массива уменьшается. При независимых отказах и экспоненциальном законе распределения наработки на отказ, MTTF всего массива (mean time to failure - среднее время безотказной работы) вычисляется по формуле MTTF array = MMTF hdd /N hdd (MMTF hdd - среднее время безотказной работы одного диска; NHDD - количество дисков).

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

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

Второй способ реализации избыточных дисковых массивов - использование избыточного кодирования с помощью вычисления четности. Четность вычисляется как операция XOR всех символов в слове данных. Использование четности в избыточных дисковых массивах уменьшает накладные расходы до величины, исчисляемой формулой: НР hdd =1/N hdd (НР hdd - накладные расходы; N hdd - количество дисков в массиве).

История и развитие RAID

Несмотря на то, что системы хранения данных, основанные на магнитных дисках, производятся уже 40 лет, массовое производство отказоустойчивых систем началось совсем недавно. Дисковые массивы с избыточностью данных, которые принято называть RAID (redundant arrays of inexpensive disks - избыточный массив недорогих дисков) были представлены исследователями (Петтерсон, Гибсон и Катц) из Калифорнийского университета в Беркли в 1987 году. Но широкое распространение RAID системы получили только тогда, когда диски, которые подходят для использования в избыточных массивах стали доступны и достаточно производительны. Со времени представления официального доклада о RAID в 1988 году, исследования в сфере избыточных дисковых массивов начали бурно развиваться, в попытке обеспечить широкий спектр решений в сфере компромисса - цена-производительность-надежность.

С аббревиатурой RAID в свое время случился казус. Дело в том, что недорогими дисками во время написания статьи назывались все диски, которые использовались в ПК, в противовес дорогим дискам для мейнфрейм (универсальная ЭВМ). Но для использования в массивах RAID пришлось использовать достаточно дорогостоящую аппаратуру по сравнению с другой комплектовкой ПК, поэтому RAID начали расшифровывать как redundant array of independent disks 2 - избыточный массив независимых дисков.

2 - Определение RAID Advisory Board

RAID 0 был представлен индустрией как определение не отказоустойчивого дискового массива. В Беркли RAID 1 был определен как зеркальный дисковый массив. RAID 2 зарезервирован для массивов, которые применяют код Хемминга. Уровни RAID 3, 4, 5 используют четность для защиты данных от одиночных неисправностей. Именно эти уровни, включительно по 5-й были представлены в Беркли, и эта систематика RAID была принята как стандарт де-факто.

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

На сегодняшний день разработано достаточно большое количество архитектур, которые обеспечивают работоспособность массива при одновременном отказе любых двух дисков без потери данных. Среди всего множества стоит отметить two-dimensional parity (двухпространственная четность) и EVENODD, которые для кодирования используют четность, и RAID 6, в котором используется кодирование Reed-Solomon.

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

Минимальная избыточность в таком массиве достигается при равном количестве столбцов и строчек. И равна: 2 x Square (N Disk) (в «квадрат»).

Если же двухпространственный массив не будет организован в «квадрат», то при реализации вышеуказанной схемы избыточность будет выше.

Архитектура EVENODD имеет похожую на двухпространственную четность схему отказоустойчивости, но другое размещение информационных блоков, которое гарантирует минимальное избыточное использование емкостей. Так же как и в двухпространственной четности каждый блок данных участвует в построении двух независимый кодовых слов, но слова размещены таким образом, что коэффициент избыточности постоянен (в отличие от предыдущей схемы) и равен: 2 x Square (N Disk).

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

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

В 1996 г. Саведж и Вилкс предложили AFRAID - часто избыточный массив независимых дисков (A Frequently Redundant Array of Independent Disks). Эта архитектура в некоторой степени приносит отказоустойчивость в жертву быстродействию. Делая попытку компенсировать проблему малой записи (small-write problem), характерную для массивов RAID 5-го уровня, разрешается оставлять стрипинг без вычисления четности на некоторый период времени. Если диск, предназначенный для записи четности, занят, то ее запись откладывается. Теоретически доказано, что 25% уменьшение отказоустойчивости может увеличить быстродействие на 97%. AFRAID фактически изменяет модель отказов массивов устойчивых к одиночным неисправностям, поскольку кодовое слово, которое не имеет обновленной четности, восприимчиво к отказам дисков.

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

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

Один из вариантов - parity logging (регистрация четности), который предполагает решение проблемы малой записи (small-write problem) и более эффективного использования дисков. Регистрация четности предполагает отложение изменения четности в RAID 5, записывая ее в FIFO log (журнал регистраций типа FIFO), который размещен частично в памяти контроллера и частично на диске. Учитывая то, что доступ к полному треку в среднем в 10 раз более эффективен, чем доступ к сектору, с помощью регистрации четности собираются большие количества данных модифицированной четности, которые потом все вместе записываются на диск, предназначенный для хранения четности по всему треку.

Архитектура floating data and parity (плавающие данные и четность), которая разрешает перераспределить физическое размещение дисковых блоков. Свободные сектора размещаются на каждом цилиндре для уменьшения rotational latency (задержки вращения), данные и четность размещаются на этих свободных местах. Для того, чтобы обеспечить работоспособность при исчезновении питания, карту четности и данных нужно сохранять в энергонезависимой памяти. Если потерять карту размещения все данные в массиве будут потеряны.

Virtual stripping - представляет собой архитектуру floating data and parity с использованием writeback cache. Естественно реализуя положительные стороны обеих.

Кроме того, существуют и другие способы повышения быстродействия, например распределение RAID операций. В свое время фирма Seagate встроила поддержку RAID операций в свои диски с интерфейсом Fibre Chanel и SCSI. Что дало возможность уменьшить трафик между центральным контроллером и дисками в массиве для систем RAID 5. Это было кардинальным новшеством в сфере реализаций RAID, но технология не получила путевки в жизнь, так как некоторые особенности Fibre Chanel и SCSI стандартов ослабляют модель отказов для дисковых массивов.

Для того же RAID 5 была представлена архитектура TickerTAIP. Выглядит она следующим образом - центральный механизм управления originator node (узел-инициатор) получает запросы пользователя, выбирает алгоритм обработки и затем передает работу с диском и четность worker node (рабочий узел). Каждый рабочий узел обрабатывает некоторое подмножество дисков в массиве. Как и в модели фирмы Seagate, рабочие узлы передают данные между собой без участия узла-инициатора. В случае отказа рабочего узла, диски, которые он обслуживал, становятся недоступными. Но если кодовое слово построено так, что каждый его символ обрабатывается отдельным рабочим узлом, то схема отказоустойчивости повторяет RAID 5. Для предупреждения отказов узла-инициатора он дублируется, таким образом, мы получаем архитектуру, устойчивую к отказам любого ее узла. При всех своих положительных чертах эта архитектура страдает от проблемы «ошибки записи» («;write hole»). Что подразумевает возникновение ошибки при одновременном изменении кодового слова несколькими пользователями и отказа узла.

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

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

Архитектура основных уровней RAID

Теперь давайте рассмотрим архитектуру основных уровней (basic levels) RAID более детально. Перед рассмотрением примем некоторые допущения. Для демонстрации принципов построения RAID систем рассмотрим набор из N дисков (для упрощения N будем считать четным числом), каждый из которых состоит из M блоков.

Данные будем обозначать - D m,n , где m - число блоков данных, n - число подблоков, на которые разбивается блок данных D.

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

RAID 0. Дисковый массив без отказоустойчивости (Striped Disk Array without Fault Tolerance)

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

Преимущества :

  • наивысшая производительность для приложений требующих интенсивной обработки запросов ввода/вывода и данных большого объема;
  • простота реализации;
  • низкая стоимость на единицу объема.

Недостатки :

  • не отказоустойчивое решение;
  • отказ одного диска влечет за собой потерю всех данных массива.

RAID 1. Дисковый массив с дублированием или зеркалка (mirroring)

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

Преимущества :

  • простота реализации;
  • простота восстановления массива в случае отказа (копирование);
  • достаточно высокое быстродействие для приложений с большой интенсивностью запросов.

Недостатки :

  • высокая стоимость на единицу объема - 100% избыточность;
  • невысокая скорость передачи данных.

RAID 2. Отказоустойчивый дисковый массив с использованием кода Хемминга (Hamming Code ECC).

Избыточное кодирование, которое используется в RAID 2, носит название кода Хемминга. Код Хемминга позволяет исправлять одиночные и обнаруживать двойные неисправности. Сегодня активно используется в технологии кодирования данных в оперативной памяти типа ECC. И кодировании данных на магнитных дисках.

В данном случае показан пример с фиксированным количеством дисков в связи с громоздкостью описания (слово данных состоит из 4 бит, соответственно ECC код из 3-х).

Преимущества :

  • быстрая коррекция ошибок («на лету»);
  • очень высокая скорость передачи данных больших объемов;
  • при увеличении количества дисков, накладные расходы уменьшаются;
  • достаточно простая реализация.

Недостатки :

  • высокая стоимость при малом количестве дисков;
  • низкая скорость обработки запросов (не подходит для систем ориентированных на обработку транзакций).

RAID 3. Отказоустойчивый массив с параллельной передачей данных и четностью (Parallel Transfer Disks with Parity)

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

Преимущества :

  • очень высокая скорость передачи данных;
  • отказ диска мало влияет на скорость работы массива;

Недостатки :

  • непростая реализация;
  • низкая производительность при большой интенсивности запросов данных небольшого объема.

RAID 4. Отказоустойчивый массив независимых дисков с разделяемым диском четности (Independent Data disks with shared Parity disk)

Данные разбиваются на блочном уровне. Каждый блок данных записывается на отдельный диск и может быть прочитан отдельно. Четность для группы блоков генерируется при записи и проверяется при чтении. RAID уровня 4 повышает производительность передачи небольших объемов данных за счет параллелизма, давая возможность выполнять более одного обращения по вводу/выводу одновременно. Главное отличие между RAID 3 и 4 состоит в том, что в последнем, расслоение данных выполняется на уровне секторов, а не на уровне битов или байтов.

Преимущества :

  • очень высокая скорость чтения данных больших объемов;
  • высокая производительность при большой интенсивности запросов чтения данных;
  • малые накладные расходы для реализации избыточности.

Недостатки :

  • очень низкая производительность при записи данных;
  • низкая скорость чтения данных малого объема при единичных запросах;
  • асимметричность быстродействия относительно чтения и записи.

RAID 5. Отказоустойчивый массив независимых дисков с распределенной четностью (Independent Data disks with distributed parity blocks)

Этот уровень похож на RAID 4, но в отличие от предыдущего четность распределяется циклически по всем дискам массива. Это изменение позволяет увеличить производительность записи небольших объемов данных в многозадачных системах. Если операции записи спланировать должным образом, то, возможно, параллельно обрабатывать до N/2 блоков, где N - число дисков в группе.

Преимущества :

  • высокая скорость записи данных;
  • достаточно высокая скорость чтения данных;
  • высокая производительность при большой интенсивности запросов чтения/записи данных;
  • малые накладные расходы для реализации избыточности.

Недостатки :

  • скорость чтения данных ниже, чем в RAID 4;
  • низкая скорость чтения/записи данных малого объема при единичных запросах;
  • достаточно сложная реализация;
  • сложное восстановление данных.

RAID 6. Отказоустойчивый массив независимых дисков с двумя независимыми распределенными схемами четности (Independent Data disks with two independent distributed parity schemes)

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

Преимущества :

  • высокая отказоустойчивость;
  • достаточно высокая скорость обработки запросов;
  • относительно малые накладные расходы для реализации избыточности.

Недостатки :

  • очень сложная реализация;
  • сложное восстановление данных;
  • очень низкая скорость записи данных.

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

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

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

Преимущества :

  • высокая отказоустойчивость;
  • высокая производительность.

Недостатки :

  • очень высокая стоимость;
  • ограниченное масштабирование.

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

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

Преимущества :

  • высокая отказоустойчивость;
  • высокая производительность.

Недостатки :

  • высокая стоимость;
  • ограниченное масштабирование.

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

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

Преимущества :

  • высокая отказоустойчивость;
  • высокая скорость передачи данных;
  • высокая скорость обработки запросов.

Недостатки :

  • высокая стоимость;
  • ограниченное масштабирование.

RAID 7. Отказоустойчивый массив, оптимизированный для повышения производительности. (Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates). RAID 7® является зарегистрированной торговой маркой Storage Computer Corporation (SCC)

Для понимания архитектуры RAID 7 рассмотрим ее особенности:

  1. Все запросы на передачу данных обрабатываются асинхронно и независимо.
  2. Все операции чтения/записи кэшируются через высокоскоростную шину x-bus.
  3. Диск четности может быть размещен на любом канале.
  4. В микропроцессоре контроллера массива используется операционная система реального времени ориентированная на обработку процессов.
  5. Система имеет хорошую масштабируемость: до 12 host-интерфейсов и до 48 дисков.
  6. Операционная система контролирует коммуникационные каналы.
  7. Используются стандартные SCSI диски, шины, материнские платы и модули памяти.
  8. Используется высокоскоростная шина X-bus для работы с внутренней кеш памятью.
  9. Процедура генерации четности интегрирована в кеш.
  10. Диски, присоединенные к системе, могут быть задекларированы как отдельно стоящие.
  11. Для управления и мониторинга системы можно использовать SNMP агент.

Преимущества :

  • высокая скорость передачи данных и высокая скорость обработки запросов (1.5 - 6 раз выше других стандартных уровней RAID);
  • высокая масштабируемость хост интерфейсов;
  • скорость записи данных увеличивается с увеличением количества дисков в массиве;
  • для вычисления четности нет необходимости в дополнительной передаче данных.

Недостатки :

  • собственность одного производителя;
  • очень высокая стоимость на единицу объема;
  • короткий гарантийный срок;
  • не может обслуживаться пользователем;
  • нужно использовать блок бесперебойного питания для предотвращения потери данных из кеш памяти.

Рассмотрим теперь стандартные уровни вместе для сравнения их характеристик. Сравнение производится в рамках архитектур, упомянутых в таблице.

RAID Минимум
дисков
Потребность
в дисках
Отказо-
устойчивость
Скорость
передачи данных
Интенсивность
обработки
запросов
Практическое
использование
0 2 N очень высокая
до N х 1 диск
Графика, видео
1 2 2N * R > 1 диск
W = 1 диск
до 2 х 1 диск
W = 1 диск
малые файл-серверы
2 7 2N ~ RAID 3 Низкая мейнфреймы
3 3 N+1 Низкая Графика, видео
4 3 N+1 R W R = RAID 0
W
файл-серверы
5 3 N+1 R W R = RAID 0
W
серверы баз данных
6 4 N+2 самая высокая низкая R > 1 диск
W
используется крайне редко
7 12 N+1 самая высокая самая высокая разные типы приложений

Уточнения :

  • * - рассматривается обычно используемый вариант;
  • k - количество подсегментов;
  • R - чтение;
  • W - запись.

Некоторые аспекты реализации RAID систем

Рассмотрим три основных варианта реализации RAID систем:

  • программная (software-based);
  • аппаратная - шинно-ориентированная (bus-based);
  • аппаратная - автономная подсистема (subsystem-based).

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

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

Главное преимущество программной реализации - низкая стоимость. Но при этом у нее много недостатков: низкая производительность, загрузка дополнительной работой центрального процессора, увеличение шинного трафика. Программно обычно реализуют простые уровни RAID - 0 и 1, так как они не требуют значительных вычислений. Учитывая эти особенности, RAID системы с программной реализацией используются в серверах начального уровня.

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

Шинно-ориентированные реализации представляют собой RAID контроллеры, которые используют скоростную шину компьютера, в который они устанавливаются (в последнее время обычно используется шина PCI). В свою очередь шинно-ориентированные реализации можно разделить на низкоуровневые и высокоуровневые. Первые обычно не имеют SCSI чипов и используют так называемый RAID порт на материнской плате со встроенным SCSI контроллером. При этом функции обработки кода RAID и операций ввода/вывода распределяются между процессором на RAID контроллере и чипами SCSI на материнской плате. Таким образом, центральный процессор освобождается от обработки дополнительного кода и уменьшается шинный трафик по сравнению с программным вариантом. Стоимость таких плат обычно небольшая, особенно если они ориентированы на системы RAID - 0 или 1 (есть также реализации RAID 3, 5, 10, 30, 50, но они дороже), благодаря чему они понемногу вытесняют программные реализации с рынка серверов начального уровня. Высокоуровневые контроллеры с шинной реализацией имеют несколько другую структуру, чем их младшие братья. Они берут на себя все функции, связанные с вводом/выводом и исполнением RAID кода. Кроме того, они не так зависимы от реализации материнской платы и, как правило, имеют больше возможностей (например, возможность подключения модуля для хранения информации в кеш в случае отказа материнской платы или исчезновения питания). Такие контроллеры обычно стоят дороже низкоуровневых и используются в серверах среднего и высокого уровня. Они, как правило, реализуют RAID уровней 0,1, 3, 5, 10, 30, 50. Учитывая то, что шинно-ориентированные реализации подключаются прямо к внутренней PCI шине компьютера, они являются наиболее производительными среди рассматриваемых систем (при организации одно-хостовых систем). Максимальное быстродействие таких систем может достигать 132 Мбайт/с (32bit PCI) или же 264 Мбайт/с (64bit PCI) при частоте шины 33MHz.

Вместе с перечисленными преимуществами шинно-ориентированная архитектура имеет следующие недостатки:

  • зависимость от операционной системы и платформы;
  • ограниченная масштабируемость;
  • ограниченные возможности по организации отказоустойчивых систем.

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

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

Одним из недостатков автономных систем остается их большая стоимость.

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

RAID массив (Redundant Array of Independent Disks) – подключение нескольких устройств, для повышения производительности и\или надежности хранения данных, в переводе - избыточный массив независимых дисков.

Согласно закону Мура, нынешняя производительность возрастает с каждым годом (а именно количество транзисторов на чипе удваивается каждые 2 года). Это можно заметить практически в каждой отрасли производства оборудования для компьютеров. Процессоры увеличивают количество ядер и транзисторов, уменьшая при этом тех процесс, оперативная память увеличивает частоту и пропускную способность, память твердотельных накопителей повышает износостойкость и скорость чтения.

Но вот простые жесткие диски (HDD) особо не продвинулись за последние 10 лет. Как была стандартной скорость 7200 об/мин, так она и осталась (не беря в расчет серверные HDD c оборотами 10.000 и более). На ноутбуках все еще встречаются медленные 5400 об/мин. Для большинства пользователей, чтобы повысить производительность своего компьютера будет удобнее купить SDD, но цена за 1 гигабайт такого носителя значительно больше, чем у простого HDD. «Как повысить производительность накопителей без сильной потери денег и объема? Как сохранить свои данные или повысить безопасность сохранности Ваших данных?» На эти вопросы есть ответ – RAID массив.

Виды RAID массивов

На данный момент существуют следующие типы RAID массивов:

RAID 0 или «Чередование» – массив из двух или более дисков для повышения общей производительности. Объем рейда будет общий (HDD 1 + HDD 2 = Общий объем), скорость считывания\записи будет выше (за счет разбиения записи на 2 устройства), но страдает надежность сохранности информации. Если одно из устройств выйдет из строя, то вся информация массива будет потеряна.

RAID 1 или «Зеркало» –несколько дисков копирующих друг друга для повышения надежности. Скорость записи остаётся на прежнем уровне, скорость считывания увеличивается, многократно повышается надежность (даже если одно устройство выйдет из строя, второе будет работать), но стоимость 1 Гигабайта информации увеличивается в 2 раза (если делать массив из двух hdd).

RAID 2 – массив, построенный на работе дисков для хранения информации и дисков коррекции ошибок. Расчет количества HDD для хранения информации выполняется по формуле «2^n-n-1», где n - количество HDD коррекции. Данный тип используется при большом количестве HDD, минимальное приемлемое число – 7, где 4 для хранения информации, а 3 для хранения ошибок. Плюсом этого вида будет повышенная производительность, по сравнению с одним диском.

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

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

RAID 5 и 6 – вместо отдельного диска для корреляции ошибок, как в прошлых вариантах, используются блоки, равномерно распределённые по всем устройствам. В этом случае повышается скорость чтения\записи информации за счет распараллеливания записи. Минусом данного типа является долговременное восстановление информации в случае выхода из строя одного из дисков. Во время восстановления идёт очень высокая нагрузка на другие устройства, что понижает надежность и повышает выход другого устройства из строя и потерю всех данных массива. Тип 6 повышает общую надежность, но понижает производительность.

Комбинированные виды RAID массивов:

RAID 01 (0+1) – Два Рейд 0 объединяются в Рейд 1.

RAID 10 (1+0) – дисковые массивы RAID 1, которые используются в архитектуре 0 типа. Считается самым надежным вариантом хранения данных, объединяя в себе высокую надежность и производительность.

Также можно создать массив из SSD накопителей . Согласно тестированию 3DNews, такое комбинирование не даёт существенного прироста. Лучше приобрести накопитель с более производительным интерфейсом PCI или eSATA

Рейд массив: как создать

Создается путем подключения через специальный RAID контроллер. На данный момент есть 3 вида контроллеров:

  1. Программный – программными средствами эмулируется массив, все вычисления производятся за счет ЦП.
  2. Интегрированный – в основном распространено на материнских платах (не серверного сегмента). Небольшой чип на мат. плате, отвечающий за эмуляцию массива, вычисления производятся через ЦП.
  3. Аппаратный – плата расширения (для стационарных компьютеров), обычно с PCI интерфейсом, обладает собственной памятью и вычислительным процессором.

RAID массив hdd: Как сделать из 2 дисков через IRST


Восстановление данных

Некоторые варианты восстановления данных:

  1. В случае сбоя Рейд 0 или 5 может помочь утилита RAID Reconstructor , которая соберет доступную информацию накопителей и перезапишет на другое устройство или носитель в виде образа прошлого массива. Данный вариант поможет, если диски исправны и ошибка программная.
  2. Для Linux систем используется mdadm восстановление (утилита для управления программными Рейд-массивами).
  3. Аппаратное восстановление должно выполняться через специализированные сервисы, потому что без знания методики работы контроллера можно потерять все данные и вернуть их будет очень сложно или вообще невозможно.

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

Отличного Вам дня!

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

История создания

Впервые термин «RAID-массив» появился в 1987 году, когда американские исследователи Паттерсон, Гибсон и Катц из Калифорнийского университета Беркли в своей статье «Избыточный массив недорогих дисков» (“A Case for Redundant Arrays of Inexpensive Discs, RAID”) описали, каким образом можно объединить несколько дешевых жестких дисков в одно логическое устройство так, чтобы в результате повышались емкость и быстродействие системы, а отказ отдельных дисков не приводил к отказу всей системы.

С момента выхода этой статьи прошло уже более 20 лет, но технология построения RAID-массивов не утратила актуальности и сегодня. Единственное, что изменилось с тех пор, - это расшифровка аббревиатуры RAID. Дело в том, что первоначально RAID-массивы строились вовсе не на дешевых дисках, поэтому слово Inexpensive (недорогие) поменяли на Independent (независимые), что больше соответствовало действительности.

Принцип действия

Итак, RAID - это избыточный массив независимых дисков (Redundant Arrays of Independent Discs), на который возлагается задача обеспечения отказоустойчивости и повышения производительности. Отказоустойчивость достигается за счет избыточности. То есть часть емкости дискового пространства отводится для служебных целей, становясь недоступной для пользователя.

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

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

Следует отметить, что модель с параллельным доступом реализуется только при условии, что размер запроса на запись данных больше размера самого блока. В противном случае осуществлять параллельную запись нескольких блоков практически невозможно. Представим ситуацию, когда размер отдельного блока составляет 8 Кбайт, а размер запроса на запись данных - 64 Кбайт. В этом случае исходная информация нарезается на восемь блоков по 8 Кбайт каждый. Если имеется массив из четырех дисков, то одновременно можно записать четыре блока, или 32 Кбайт, за один раз. Очевидно, что в рассмотренном примере скорость записи и скорость считывания окажутся в четыре раза выше, чем при использовании одного диска. Это справедливо лишь для идеальной ситуации, однако размер запроса далеко не всегда кратен размеру блока и количеству дисков в массиве.

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

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

Уровни RAID-массивов

В настоящее время существует несколько RAID-уровней, которые можно считать стандартизованными, - это RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5 и RAID 6.

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

Отметим, что все современные RAID-контроллеры поддерживают функцию JBOD (Just a Bench Of Disks), которая не предназначена для создания массивов, - она обеспечивает возможность подключения к RAID-контроллеру отдельных дисков.

Нужно отметить, что интегрированные на материнские платы для домашних ПК RAID-контроллеры поддерживают далеко не все RAID-уровни. Двухпортовые RAID-контроллеры поддерживают только уровни 0 и 1, а RAID-контроллеры с большим количество портов (например, 6-портовый RAID-контроллер, интегрированный в южный мост чипсета ICH9R/ICH10R) - также уровни 10 и 5.

Кроме того, если говорить о материнских платах на чипсетах Intel, то в них тоже реализована функция Intel Matrix RAID, которая позволяет создать на нескольких жестких дисках одновременно RAID-матрицы нескольких уровней, выделив для каждой из них часть дискового пространства.

RAID 0

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

RAID 1 (Mirrored disk)

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

RAID 5

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

Предположим, что массив содержит n дисков, а размер страйпа d . Для каждой порции из n–1 страйпов рассчитывается контрольная сумма p .

Cтрайп d 1 записывается на первый диск, страйп d 2 - на второй и так далее вплоть до страйпа d n–1 , который записывается на (n –1)-й диск. Далее на n -й диск записывается контрольная сумма p n , и процесс циклически повторяется с первого диска, на который записывается страйп d n .

Процесс записи (n–1) страйпов и их контрольной суммы производится одновременно на все n дисков.

Для вычисления контрольной суммы используется поразрядная операция «исключающего ИЛИ» (XOR), применяемая к записываемым блокам данных. Так, если имеется n жестких дисков, d - блок данных (страйп), то контрольная сумма рассчитывается по следующей формуле:

p n = d 1 d 2 ... d 1–1 .

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

В качестве иллюстрации рассмотрим блоки размером по четыре бита. Пусть имеются всего пять дисков для хранения данных и записи контрольных сумм. Если есть последовательность битов 1101 0011 1100 1011, разбитая на блоки по четыре бита, то для расчета контрольной суммы необходимо выполнить следующую поразрядную операцию:

1101 0011 1100 1011 = 1001.

Таким образом, контрольная сумма, записываемая на пятый диск, равна 1001.

Если один из дисков, например четвертый, вышел из строя, то блок d 4 = 1100 окажется недоступным при считывании. Однако его значение легко восстановить по контрольной сумме и по значениям остальных блоков с помощью все той же операции «исключающего ИЛИ»:

d 4 = d 1 d 2 d 4 p 5 .

В нашем примере получим:

d 4 = (1101) (0011) (1100) (1011) = 1001.

В случае RAID 5 все диски массива имеют одинаковый размер, однако общая емкость дисковой подсистемы, доступной для записи, становится меньше ровно на один диск. Например, если пять дисков имеют размер 100 Гбайт, то фактический размер массива составляет 400 Гбайт, поскольку 100 Гбайт отводится на контрольную информацию.

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

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

RAID 10

Уровень RAID 10 представляет собой некое сочетание уровней 0 и 1. Минимально для этого уровня требуются четыре диска. В массиве RAID 10 из четырех дисков они попарно объединяются в массивы уровня 0, а оба этих массива как логические диски объединяются в массив уровня 1. Возможен и другой подход: первоначально диски объединяются в зеркальные массивы уровня 1, а затем логические диски на основе этих массивов - в массив уровня 0.

Intel Matrix RAID

Рассмотренные RAID-массивы уровней 5 и 1 редко используются в домашних условиях, что связано прежде всего с высокой стоимостью подобных решений. Наиболее часто для домашних ПК применяется именно массив уровня 0 на двух дисках. Как мы уже отмечали, RAID уровня 0 не обеспечивает безопасности хранения данных, а потому конечные пользователи сталкиваются с выбором: создавать быстрый, но не обеспечивающий надежности хранения данных RAID-массив уровня 0 или же, увеличивая стоимость дискового пространства в два раза, - RAID-массив уровня 1, который обеспечивает надежность хранения данных, однако не позволяет получить существенного выигрыша в производительности.

Для того чтобы разрешить эту нелегкую проблему, корпорация Intel разработала технологию Intel Matrix Storage, позволяющую объединить достоинства массивов уровней 0 и 1 всего на двух физических дисках. А для того, чтобы подчеркнуть, что речь в данном случае идет не просто о RAID-массиве, а о массиве, сочетающем в себе и физические и логические диски, в названии технологии вместо слова «массив» используется слово «матрица».

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

Рассмотрим простой пример RAID-матрицы из двух дисков по 120 Гбайт каждый. Любой из дисков можно разбить на два логических диска, например по 40 и 80 Гбайт. Далее два логических диска одного размера (например, по 40 Гбайт) можно объединить в RAID-матрицу уровня 1, а оставшиеся логические диски - в RAID-матрицу уровня 0.

В принципе, используя два физических диска, также можно создать всего одну или две RAID-матрицы уровня 0, но вот получить только матрицы уровня 1 невозможно. То есть если в системе имеются всего два диска, то технология Intel Matrix Storage позволяет создавать следующие типы RAID-матриц:

  • одна матрица уровня 0;
  • две матрицы уровня 0;
  • матрица уровня 0 и матрица уровня 1.

Если в системе установлены три жестких диска, то возможно создание следующих типов RAID-матриц:

  • одна матрица уровня 0;
  • одна матрица уровня 5;
  • две матрицы уровня 0;
  • две матрицы уровня 5;
  • матрица уровня 0 и матрица уровня 5.

Если в системе установлены четыре жестких диска, то дополнительно имеется возможность создать RAID-матрицу уровня 10, а также комбинации уровня 10 и уровня 0 или 5.

От теории к практике

Ели говорить о домашних компьютерах, то наиболее востребованными и популярными являются RAID-массивы уровней 0 и 1. Использование RAID-массивов из трех и более дисков в домашних ПК - скорее исключение из правила. Связано это с тем, что, с одной стороны, стоимость RAID-массивов возрастает пропорционально количеству задействованных в нем дисков, а с другой - для домашних компьютеров первоочередное значение имеет емкость дискового массива, а не его производительность и надежность.

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

Дело в том, что хотя теоретически при использовании RAID-массива уровня 0 скорость чтения и записи должна возрастать вдвое, на практике возрастание скоростных характеристик гораздо менее скромное и для разных RAID-контроллеров оно различно. Аналогично и для RAID-массива уровня 1: несмотря на то что теоретически скорость чтения должна увеличиваться вдвое, на практике не всё так гладко.

Для нашего сравнительного тестирования RAID-контроллеров мы использовали материнскую плату Gigabyte GA-EX58A-UD7. Эта плата основана на чипсете Intel X58 Express с южным мостом ICH10R, имеющим интегрированный RAID-контроллер на шесть портов SATA II, который поддерживает организацию RAID-массивов уровней 0, 1, 10 и 5 с функцией Intel Matrix RAID. Кроме того, на плате Gigabyte GA-EX58A-UD7 интегрирован RAID-контроллер GIGABYTE SATA2, на базе которого реализованы два порта SATA II c возможностью организации RAID-массивов уровней 0, 1 и JBOD.

Также на плате GA-EX58A-UD7 интегрирован SATA III-контроллер Marvell 9128, на базе которого реализованы два порта SATA III c возможностью организации RAID-массивов уровней 0, 1 и JBOD.

Таким образом, на плате Gigabyte GA-EX58A-UD7 имеются три отдельных RAID-контроллера, на базе которых можно создать RAID-массивы уровней 0 и 1 и сравнить их друг с другом. Напомним, что стандарт SATA III обратно совместим со стандартом SATA II, поэтому на базе контроллера Marvell 9128, поддерживающего диски с интерфейсом SATA III, можно также создавать RAID-массивы с использованием дисков с интерфейсом SATA II.

Стенд для тестирования имел следующую конфигурацию:

  • процессор - Intel Core i7-965 Extreme Edition;
  • материнская плата - Gigabyte GA-EX58A-UD7;
  • версия BIOS - F2a;
  • жесткие диски - два диска Western Digital WD1002FBYS, один диск Western Digital WD3200AAKS;
  • интегрированные RAID-контроллеры:
  • ICH10R,
  • GIGABYTE SATA2,
  • Marvell 9128;
  • память - DDR3-1066;
  • объем памяти - 3 Гбайт (три модуля по 1024 Мбайт);
  • режим работы памяти - DDR3-1333, трехканальный режим работы;
  • видеокарта - Gigabyte GeForce GTS295;
  • блок питания - Tagan 1300W.

Тестирование проводилось под управлением операционной системы Microsoft Windows 7 Ultimate (32-bit). Операционная система инсталлировалась на диск Western Digital WD3200AAKS, который подключался к порту контроллера SATA II, интегрированного в южный мост ICH10R. RAID-массив собирался на двух дисках WD1002FBYS с интерфейсом SATA II.

Для измерения скоростных характеристик создаваемых RAID-массивов мы использовали утилиту IOmeter, которая является отраслевым стандартом для измерения производительности дисковых систем.

Утилита IOmeter

Поскольку мы задумывали эту статью как своеобразное руководство пользователя по созданию и тестированию RAID-массивов, логично будет начать с описания утилиты IOmeter (Input/Output meter), которая, как мы уже отметили, является своеобразным отраслевым стандартом для измерения производительности дисковых систем. Данная утилита бесплатна, и ее можно скачать с ресурса http://www.iometer.org.

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

При тестировании возможно создание специфической модели доступа, или «паттерна», которая позволяет конкретизировать выполнение жестким диском специфических операций. В случае создания конкретной модели доступа разрешается менять следующие параметры:

  • размер запроса на передачу данных;
  • случайное/последовательное распределение (в %);
  • распределение операций чтения/записи (в %);
  • количество отдельных операций ввода-вывода, работающих параллельно.

Утилита IOmeter не требует инсталляции на компьютер и состоит из двух частей: собственно IOmeter и Dynamo.

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

Для того чтобы начать работу с программой IOmeter, достаточно запустить файл IOmeter.exe. При этом открывается главное окно программы IOmeter (рис. 1).

Рис. 1. Главное окно программы IOmeter

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

Итак, при запуске программы IOmeter в левой части главного окна (в окне Topology) будет отображаться древовидная структура всех запущенных генераторов нагрузки (экземпляров Dynamo). Каждый запущенный экземпляр генератора нагрузки Dynamo называется менеджером (manager). Кроме того, программа IOmeter является многопотоковой и каждый отдельный запущенный поток экземпляра генератора нагрузки Dynamo называется Worker. Количество запущенных Worker’ов всегда соответствует количеству логических ядер процессора.

В нашем примере используется только один компьютер с четырехъядерным процессором, поддерживающим технологию Hyper-Threading, поэтому запускается лишь один менеджер (один экземпляр Dynamo) и восемь (по количеству логических ядер процессора) Worker’ов.

Собственно, для тестирования дисков в данном окне нет необходимости что-либо менять или добавлять.

Если выделить мышью название компьютера в древовидной структуре запущенных экземпляров Dynamo, то в окне Target на вкладке Disk Target отобразятся все диски, дисковые массивы и прочие накопители (включая сетевые), установленные в компьютере. Это те накопители, с которыми программа IOmeter может работать. Носители могут быть помечены желтым или голубым цветом. Желтым цветом отмечаются логические разделы носителей, а голубым - физические устройства без созданных на них логических разделов. Логический раздел может быть перечеркнут или не перечеркнут. Дело в том, что для работы программы с логическим разделом его нужно прежде подготовить, создав на нем специальный файл, равный по размеру емкости всего логического раздела. Если логический раздел перечеркнут, то это значит, что раздел еще не подготовлен для тестирования (он будет подготовлен автоматически на первом этапе тестирования), ну а если раздел не перечеркнут, то это означает, что на логическом разделе уже создан файл, полностью готовый для тестирования.

Отметим, что, несмотря на поддерживаемую возможность работы с логическими разделами, оптимально тестировать именно не разбитые на логические разделы диски. Удалить логический раздел диска можно очень просто - через оснастку Disk Management . Для доступа к ней достаточно щелкнуть правой кнопкой мыши на значке Computer на рабочем столе и в открывшемся меню выбрать пункт Manage . В открывшемся окне Computer Management в левой части необходимо выбрать пункт Storage , а в нем - Disk Management . После этого в правой части окна Computer Management отобразятся все подключенные диски. Щелкнув правой кнопкой по нужному диску и выбрав в открывшемся меню пункт Delete Volume …, можно удалить логический раздел на физическом диске. Напомним, что при удалении с диска логического раздела вся информация на нем удаляется без возможности восстановления.

Вообще, с помощью утилиты IOmeter тестировать можно только чистые диски или дисковые массивы. То есть нельзя протестировать диск или дисковый массив, на котором установлена операционная система.

Итак, вернемся к описанию утилиты IOmeter. В окне Target на вкладке Disk Target необходимо выбрать тот диск (или дисковый массив), который будет подвергаться тестированию. Далее необходимо открыть вкладку Access Specifications (рис. 2), на которой можно будет определить сценарий тестирования.

Рис. 2. Вкладка Access Specifications утилиты IOmeter

В окне Global Access Specifications имеется список предустановленных сценариев тестирования, которые можно присвоить менеджеру загрузки. Впрочем, эти сценарии нам не понадобятся, поэтому все их можно выделить и удалить (для этого предусмотрена кнопка Delete ). После этого нажмем на кнопку New , чтобы создать новый сценарий тестирования. В открывшемся окне Edit Access Specification можно определить сценарий загрузки диска или RAID-массива.

Предположим, мы хотим выяснить зависимость скорости последовательного (линейного) чтения и записи от размера блока запроса на передачу данных. Для этого нам нужно сформировать последовательность сценариев загрузки в режиме последовательного чтения при различных размерах блока, а затем последовательность сценариев загрузки в режиме последовательной записи при различных размерах блока. Обычно размеры блоков выбираются в виде ряда, каждый член которого вдвое больше предыдущего, а первый член этого ряда равен 512 байт. То есть размеры блоков составляют следующий ряд: 512 байт, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 Кбайт, 1 Мбайт. Делать размер блока больше 1 Мбайт при последовательных операциях нет смысла, поскольку при таких больших размерах блока данных скорость последовательных операций не изменяется.

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

В поле Name окна Edit Access Specification вводим название сценария загрузки. Например, Sequential_Read_512. Далее в поле Transfer Request Size задаем размер блока данных 512 байт. Ползунок Percent Random/Sequential Distribution (процентное соотношение между последовательными и выборочными операциями) сдвигаем до упора влево, чтобы все наши операции были только последовательными. Ну а ползунок , задающий процентное соотношение между операциями чтения и записи, сдвигаем до упора вправо, чтобы все наши операции были только чтением. Остальные параметры в окне Edit Access Specification менять не нужно (рис. 3).

Рис. 3. Окно Edit Access Specification для создания сценария загрузки последовательного чтения
при размере блока данных 512 байт

Нажимаем на кнопку Ok , и первый созданный нами сценарий отобразится в окне Global Access Specifications на вкладке Access Specifications утилиты IOmeter.

Аналогично нужно создать сценарии и для остальных блоков данных, однако, чтобы облегчить себе работу, проще не создавать сценарий каждый раз заново, нажимая для этого кнопку New , а, выбрав последний созданный сценарий, нажать кнопку Edit Copy (редактировать копию). После этого опять откроется окно Edit Access Specification с настройками нашего последнего созданного сценария. В нем достаточно будет поменять лишь название и размер блока. Проделав аналогичную процедуру для всех остальных размеров блоков, можно приступить к формированию сценариев для последовательной записи, что делается совершенно аналогично, за исключением того, что ползунок Percent Read/Write Distribution , задающий процентное соотношение между операциями чтения и записи, нужно сдвинуть до упора влево.

Аналогично можно создать сценарии для выборочной записи и чтения.

После того как все сценарии будут готовы, их нужно присвоить менеджеру загрузки, то есть указать, с какими сценариями будет работать Dynamo .

Для этого еще раз проверяем, что в окне Topology выделено название компьютера (то есть менеджер нагрузки на локальном ПК), а не отдельный Worker. Это гарантирует, что сценарии нагрузки будут присваиваться сразу всем Worker’ам. Далее в окне Global Access Specifications выделяем все созданные нами сценарии нагрузки и нажимаем кнопку Add . Все выделенные сценарии нагрузки добавятся в окно (рис. 4).

Рис. 4. Присвоение созданных сценариев нагрузки менеджеру нагрузки

После этого нужно перейти к вкладке Test Setup (рис. 5), на которой можно задать время выполнения каждого созданного нами сценария. Для этого в группе Run Time задаем время выполнения сценария нагрузки. Вполне достаточно будет задать время, равное 3 мин.

Рис. 5. Задание времени выполнения сценария нагрузки

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

После того как все необходимые настройки произведены, рекомендуется сохранить созданный тест, нажав на панели инструментов на кнопку с изображением дискеты. Тест сохраняется с расширением *.icf. Впоследствии можно будет воспользоваться созданным сценарием нагрузки, запустив не файл IOmeter.exe, а сохраненный файл с расширением *.icf.

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

В ходе тестирования промежуточные результаты можно наблюдать на вкладке Result Display , а определить, к какому сценарию нагрузки они относятся, можно на вкладке Access Specifications . В окне Assigned Access Specification исполняемый сценарий отображается зеленым, выполненные сценарии - красным, а еще не выполненные сценарии - синим цветом.

Итак, мы рассмотрели базовые приемы работы с утилитой IOmeter, которые потребуются для тестирования отдельных дисков или RAID-массивов. Отметим, что мы рассказали далеко не обо всех возможностях утилиты IOmeter, но описание всех ее возможностей выходит за рамки данной статьи.

Создание RAID-массива на базе контроллера GIGABYTE SATA2

Итак, мы начинаем создание RAID-массива на базе двух дисков с использованием интегрированного на плате RAID-контроллера GIGABYTE SATA2. Конечно, сама компания Gigabyte не производит чипов, а потому под чипом GIGABYTE SATA2 скрывается перемаркированный чип другой фирмы. Как можно выяснить из INF-файла драйвера, речь идет о контроллере серии JMicron JMB36x.

Доступ в меню настройки контроллера возможен на этапе загрузки системы, для чего нужно нажать комбинацию клавиш Ctrl+G, когда появится соответствующая надпись на экране. Естественно, прежде в настройках BIOS нужно определить режим работы двух SATA-портов, относящихся к контроллеру GIGABYTE SATA2, как RAID (в противном случае доступ в меню конфигуратора RAID-массива будет невозможен).

Меню настройки RAID-контроллера GIGABYTE SATA2 довольно простое. Как мы уже отмечали, контроллер является двухпортовым и позволяет создавать RAID-массивы уровня 0 или 1. Через меню настройки контроллера можно удалить или создать RAID-массив. При создании RAID-массива имеется возможность указать его название, выбрать уровень массива (0 или 1), задать размер страйпа для RAID 0 (128, 84, 32, 16, 8 или 4K), а также определить размер массива.

Если массив создан, то какие-либо изменения в нем уже невозможны. То есть нельзя впоследствии для созданного массива изменить, например, его уровень или размер страйпа. Для этого прежде нужно удалить массив (с потерей данных), а потом создать его заново. Собственно, это свойственно не только контроллеру GIGABYTE SATA2. Невозможность изменения параметров созданных RAID-массивов - особенность всех контроллеров, которая вытекает из самого принципа реализации RAID-массива.

После того как массив на базе контроллера GIGABYTE SATA2 создан, текущую информацию о нем можно просмотреть, используя утилиту GIGABYTE RAID Configurer, которая устанавливается автоматически вместе с драйвером.

Создание RAID-массива на базе контроллера Marvell 9128

Конфигурирование RAID-контроллера Marvell 9128 возможно только через настройки BIOS платы Gigabyte GA-EX58A-UD7. Вообще, нужно сказать, что меню конфигуратора контроллера Marvell 9128 несколько сыровато и может ввести в заблуждение неискушенных пользователей. Впрочем, об этих незначительных недоработках мы расскажем чуть позже, а пока рассмотрим основные функциональные возможности контроллера Marvell 9128.

Итак, несмотря на то что этот контроллер поддерживает работу с дисками с интерфейсом SATA III, он также полностью совместим с дисками с интерфейсом SATA II.

Контроллер Marvell 9128 позволяет создать RAID-массив уровней 0 и 1 на базе двух дисков. Для массива уровня 0 можно задать размер страйпа 32 или 64 Кбайт, а также указать имя массива. Кроме того, имеется и такая опция, как Gigabyte Rounding, которая нуждается в пояснении. Несмотря на название, созвучное с именем компании-производителя, функция Gigabyte Rounding никакого отношения к ней не имеет. Более того, она никак не связана с RAID-массивом уровня 0, хотя в настройках контроллера ее можно определить именно для массива этого уровня. Собственно, это первая из тех недоработок конфигуратора контроллера Marvell 9128, о которых мы упоминали. Функция Gigabyte Rounding определена только для RAID-массива уровня 1. Она позволяет использовать для создания RAID-массива уровня 1 два диска (например, различных производителей или разные модели), емкость которых немного отличается друг от друга. Функция Gigabyte Rounding как раз и задает разницу в размерах двух дисков, применяемых для создания RAID-массива уровня 1. В контроллере Marvell 9128 функция Gigabyte Rounding позволяет установить разницу в размерах дисков 1 или 10 Гбайт.

Еще одна недоработка конфигуратора контроллера Marvell 9128 заключается в том, что при создании RAID-массива уровня 1 у пользователя имеется возможность выбора размера страйпа (32 или 64 Кбайт). Однако понятие страйпа вообще не определено для RAID-массива уровня 1.

Создание RAID-массива на базе контроллера, интегрированного в ICH10R

RAID-контроллер, интегрированный в южный мост ICH10R, является самым распространенным. Как уже отмечалось, данный RAID-контроллер 6-портовый и поддерживает не только создание массивов RAID 0 и RAID 1, но также RAID 5 и RAID 10.

Доступ в меню настройки контроллера возможен на этапе загрузки системы, для чего нужно нажать комбинацию клавиш Ctrl+I, когда появится соответствующая надпись на экране. Естественно, прежде в настройках BIOS следует определить режим работы этого контроллера как RAID (в противном случае доступ в меню конфигуратора RAID-массива будет невозможен).

Меню настройки RAID-контроллера достаточно простое. Через меню настройки контроллера можно удалить или создать RAID-массив. При создании RAID-массива можно указать его название, выбрать уровень массива (0, 1, 5 или 10), задать размер страйпа для RAID 0 (128, 84, 32, 16, 8 или 4K), а также определить размер массива.

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

Для тестирования RAID-массивов с помощью утилиты IOmeter мы создали сценарии нагрузки последовательного чтения, последовательной записи, выборочного чтения и выборочной записи. Размеры блоков данных в каждом сценарии нагрузки составляли следующую последовательность: 512 байт, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 Кбайт, 1 Мбайт.

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

Итак, обратимся к результатам нашего тестирования.

Контроллер GIGABYTE SATA2

Прежде всего рассмотрим результаты тестирования RAID-массивов на базе контроллера GIGABYTE SATA2 (рис. 6-13). В общем-то контроллер оказался в буквальном смысле загадочным, а его производительность просто разочаровала.

Рис. 6. Скорость последовательных
и выборочных операций для диска
Western Digital WD1002FBYS

Рис. 7. Скорость последовательных

c размером страйпа 128 Кбайт
(контроллер GIGABYTE SATA2)

Рис. 12. Скорость последовательных
и выборочных операций для RAID 0
c размером страйпа 4 Кбайт
(контроллер GIGABYTE SATA2)

Рис. 13. Скорость последовательных
и выборочных операций
для RAID 1 (контроллер GIGABYTE SATA2)

Если посмотреть на скоростные характеристики одного диска (без RAID-массива), то максимальная скорость последовательного чтения составляет 102 Мбайт/с, а максимальная скорость последовательной записи - 107 Мбайт/с.

При создании массива RAID 0 с размером страйпа 128 Кбайт максимальная скорость последовательного чтения и записи увеличивается до 125 Мбайт/с, то есть возрастает примерно на 22%.

При размере страйпа 64, 32 или 16 Кбайт максимальная скорость последовательного чтения составляет 130 Мбайт/с, а максимальная скорость последовательной записи - 141 Мбайт/с. То есть при указанных размерах страйпа максимальная скорость последовательного чтения возрастает на 27%, а максимальная скорость последовательной записи - на 31%.

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

При размере страйпа 8 Кбайт максимальная скорость последовательных операций (чтения и записи) остается примерно такой же, как и при размере страйпа 64, 32 или 16 Кбайт, однако с выборочным чтением - явные проблемы. При увеличении размера блока данных вплоть до 128 Кбайт скорость выборочного чтения (как и должно быть) возрастает пропорционально размеру блока данных. Однако при размере блока данных более 128 Кбайт скорость выборочного чтения падает практически до нуля (примерно до 0,1 Мбайт/с).

При размере страйпа 4 Кбайт падает не только скорость выборочного чтения при размере блока более 128 Кбайт, но и скорость последовательного чтения при размере блока более 16 Кбайт.

Использование массива RAID 1 на контроллере GIGABYTE SATA2 практически не изменяет (в сравнении с одиночным диском) скорость последовательного чтения, однако максимальная скорость последовательной записи уменьшается до 75 Мбайт/с. Напомним, что для массива RAID 1 скорость чтения должна возрастать, а скорость записи не должна уменьшаться в сравнении со скоростью чтения и записи одиночного диска.

На основании результатов тестирования контроллера GIGABYTE SATA2 можно сделать только один вывод. Использовать данный контроллер для создания массивов RAID 0 и RAID 1 имеет смысл только в том случае, когда все остальные RAID-контроллеры (Marvell 9128, ICH10R) уже задействованы. Хотя представить себе подобную ситуацию довольно сложно.

Контроллер Marvell 9128

Контроллер Marvell 9128 продемонстрировал гораздо более высокие скоростные характеристики в сравнении с контроллером GIGABYTE SATA2 (рис. 14-17). Собственно, различия проявляются даже при работе контроллера с одним диском. Если для контроллера GIGABYTE SATA2 максимальная скорость последовательного чтения составляет 102 Мбайт/с и достигается при размере блока данных 128 Кбайт, то для контроллера Marvell 9128 максимальная скорость последовательного чтения составляет 107 Мбайт/с и достигается при размере блока данных 16 Кбайт.

При создании массива RAID 0 с размером страйпа 64 и 32 Кбайт максимальная скорость последовательного чтения увеличивается до 211 Мбайт/с, а последовательной записи - до 185 Мбайт/с. То есть при указанных размерах страйпа максимальная скорость последовательного чтения возрастает на 97%, а максимальная скорость последовательной записи - на 73%.

Существенной разницы по скоростным показателям массива RAID 0 с размером страйпа 32 и 64 Кбайт не наблюдается, однако применение страйпа 32 Кбайт более предпочтительно, поскольку в этом случае скорость последовательных операций при размере блока менее 128 Кбайт будет немного выше.

При создании массива RAID 1 на контроллере Marvell 9128 максимальная скорость последовательных операций практически не изменяется в сравнении с одиночным диском. Так, если для одиночного диска максимальная скорость последовательных операций составляет 107 Мбайт/с, то для RAID 1 она равна 105 Мбайт/с. Также заметим, что для RAID 1 скорость выборочного чтения немного ухудшается.

В целом же нужно отметить, что контроллер Marvell 9128 обладает неплохими скоростными характеристиками и его вполне можно задействовать как для создания RAID-массивов, так и для подключения к нему одиночных дисков.

Контроллер ICH10R

RAID-контроллер, встроенный в ICH10R, оказался самым высокопроизводительным из всех протестированных нами (рис. 18-25). При работе с одиночным диском (без создания RAID-массива) его производительность фактически такая же, как и производительность контроллера Marvell 9128. Максимальная скорость последовательного чтения и записи составляет 107 Мбайт и достигается при размере блока данных 16 Кбайт.

Рис. 18. Скорость последовательных
и выборочных операций
для диска Western Digital WD1002FBYS (контроллер ICH10R)

Если говорить о массиве RAID 0 на контроллере ICH10R, то максимальная скорость последовательного чтения и записи не зависит от размера страйпа и составляет 212 Мбайт/с. От размера страйпа зависит лишь размер блока данных, при котором достигается максимальное значение скорости последовательного чтения и записи. Как показывают результаты тестирования, для RAID 0 на базе контроллера ICH10R оптимально использовать страйп размером 64 Кбайт. В этом случае максимальное значение скорости последовательного чтения и записи достигается при размере блока данных всего 16 Кбайт.

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

© Андрей Егоров, 2005, 2006. Группа компаний ТИМ.

Посетители форума задают нам вопрос: «Какой уровень RAID самый надежный?» Все знают, что наиболее распространенным является уровень RAID5, однако он отнюдь не лишен серьезных недостатков, которые неочевидны для неспециалистов.

RAID 0, RAID 1, RAID 5, RAID6, RAID 10 или что такое уровни RAID?

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

JBOD (Just a Bunch of Disks) – это простое объединение (spanning) жестких дисков, которое уровнем RAID формально не является. Томом JBOD может быть массив из одного диска или объединение нескольких дисков. Контроллеру RAID для работы с таким томом не требуется проведение каких-либо вычислений. На нашей диаграмме диск JBOD служит в качестве «ординара» или отправной точки – его значения надежности, производительности и стоимости совпадают с соответствующими показателями единичного жесткого диска.

RAID 0 (“Striping”) избыточности не имеет, а информацию распределяет сразу по всем входящим в массив дискам в виде небольших блоков («страйпов»). За счет этого существенно повышается производительность, но страдает надежность. Как и в случае JBOD, за свои деньги мы получаем 100% емкости диска.

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

Хороший уровень – RAID 1 (“Mirroring”, «зеркало»). Он имеет защиту от выхода из строя половины имеющихся аппаратных средств (в общем случае – одного из двух жестких дисков), обеспечивает приемлемую скорость записи и выигрыш по скорости чтения за счет распараллеливания запросов. Недостаток заключается в том, что приходится выплачивать стоимость двух жестких дисков, получая полезный объем одного жесткого диска.

Изначально предполагается, что жесткий диск – вещь надежная. Соответственно, вероятность выхода из строя сразу двух дисков равна (по формуле) произведению вероятностей, т.е. ниже на порядки! К сожалению, реальная жизнь – не теория! Два винчестера берутся из одной партии и работают в одинаковых условиях, а при выходе из строя одного из дисков нагрузка на оставшийся увеличивается, поэтому на практике при выходе из строя одного из дисков следует срочно принимать меры – вновь восстанавливать избыточность. Для этого с любым уровнем RAID (кроме нулевого) рекомендуют использовать диски горячего резерва HotSpare . Достоинство такого подхода – поддержание постоянной надежности. Недостаток – еще большие издержки (т.е. стоимость 3-х винчестеров для хранения объема одного диска).

Зеркало на многих дисках – это уровень RAID 10 . При использовании такого уровня зеркальные пары дисков выстраиваются в «цепочку», поэтому объем полученного тома может превосходить емкость одного жесткого диска. Достоинства и недостатки – такие же, как и у уровня RAID1. Как и в других случаях, рекомендуется включать в массив диски горячего резерва HotSpare из расчета один резервный на пять рабочих.

RAID 5 , действительно, самый популярный из уровней – в первую очередь благодаря своей экономичности. Жертвуя ради избыточности емкостью всего одного диска из массива, мы получаем защиту от выхода из строя любого из винчестеров тома. На запись информации на том RAID5 тратятся дополнительные ресурсы, так как требуются дополнительные вычисления, зато при чтении (по сравнению с отдельным винчестером) имеется выигрыш, потому что потоки данных с нескольких накопителей массива распараллеливаются.

Недостатки RAID5 проявляются при выходе из строя одного из дисков – весь том переходит в критический режим, все операции записи и чтения сопровождаются дополнительными манипуляциями, резко падает производительность, диски начинают греться. Если срочно не принять меры – можно потерять весь том. Поэтому, (см. выше) с томом RAID5 следует обязательно использовать диск Hot Spare.

Помимо базовых уровней RAID0 - RAID5, описанных в стандарте, существуют комбинированные уровни RAID10, RAID30, RAID50, RAID15, которые различные производители интерпретируют каждый по-своему.

Суть таких комбинаций вкратце заключается в следующем. RAID10 – это сочетание единички и нолика (см. выше). RAID50 – это объединение по “0” томов 5-го уровня. RAID15 – «зеркало» «пятерок». И так далее.

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

RAID 6 отличается от RAID 5 тем, что в каждом ряду данных (по-английски stripe ) имеет не один, а два блока контрольных сумм. Контрольные суммы – «многомерные», т.е. независимые друг от друга, поэтому даже отказ двух дисков в массиве позволяет сохранить исходные данные. Вычисление контрольных сумм по методу Рида-Соломона требует более интенсивных по сравнению с RAID5 вычислений, поэтому раньше шестой уровень практически не использовался. Сейчас он поддерживается многими продуктами, так как в них стали устанавливать специализированные микросхемы, выполняющие все необходимые математические операции.

Согласно некоторым исследованиям, восстановление целостности после отказа одного диска на томе RAID5, составленном из дисков SATA большого объема (400 и 500 гигабайт), в 5% случаев заканчивается утратой данных. Другими словами, в одном случае из двадцати во время регенерации массива RAID5 на диск резерва Hot Spare возможен выход из строя второго диска... Отсюда рекомендации лучших RAIDоводов: 1) всегда делайте резервные копии; 2) используйте RAID6 !

Недавно появились новые уровни RAID1E, RAID5E, RAID5EE. Буква “Е” в названии означает Enhanced .

RAID level-1 Enhanced (RAID level-1E) комбинирует mirroring и data striping. Эта смесь уровней 0 и 1 устроена следующим образом. Данные в ряду распределяются точь-в-точь так, как в RAID 0. То есть ряд данных не имеет никакой избыточности. Следующий ряд блоков данных копирует предыдущий со сдвигом на один блок. Таким образом как и в стандартном режиме RAID 1 каждый блок данных имеет зеркальную копию на одном из дисков, поэтому полезный объем массива равен половине суммарного объема входящих в массив жестких дисков. Для работы RAID 1E требуется объединение трех или более дисков.

Мне очень нравится уровень RAID1E. Для мощной графической рабочей станции или даже для домашнего компьютера – оптимальный выбор! Он обладает всеми достоинствами нулевого и первого уровней – отличная скорость и высокая надежность.

Перейдем теперь к уровню RAID level-5 Enhanced (RAID level-5E) . Это то же самое что и RAID5, только со встроенным в массив резервным диском spare drive . Это встраивание производится следующим образом: на всех дисках массива оставляется свободным 1/N часть пространства, которая при отказе одного из дисков используется в качестве горячего резерва. За счет этого RAID5E демонстрирует наряду с надежностью лучшую производительность, так как чтение/запись производится параллельно с бОльшего числа накопителей одновременно и spare drive не простаивает, как в RAID5. Очевидно, что входящий в том резервный диск нельзя делить с другими томами (dedicated vs. shared). Том RAID 5E строится минимум на четырех физических дисках. Полезный объем логического тома вычисляется по формуле N-2.

RAID level-5E Enhanced (RAID level-5EE) подобен уровню RAID level-5E, но он имеет более эффективное распределение spare drive и, как следствие, – более быстрое время восстановления. Как и уровень RAID5E, этот уровень RAID распределяет в рядах блоки данных и контрольных сумм. Но он также распределяет и свободные блоки spare drive, а не просто оставляет под эти цели часть объема диска. Это позволяет уменьшить время, необходимое на реконструкцию целостности тома RAID5EE. Входящий в том резервный диск нельзя делить с другими томами – как и в предыдущем случае. Том RAID 5EE строится минимум на четырех физических дисках. Полезный объем логического тома вычисляется по формуле N-2.

Как ни странно, никаких упоминаний об уровне RAID 6E на просторах Интернета я не нашел - пока такой уровень никем из производителей не предлагается и даже не анонсируется. А ведь уровень RAID6E (или RAID6EE?) можно предложить по тому же принципу, что и предыдущий. Диск HotSpare обязательно должен сопровождать любой том RAID, в том числе и RAID 6. Конечно, мы не потеряем информацию при выходе из строя одного или двух дисков, но начать регенерацию целостности массива крайне важно как можно раньше, чтобы скорее вывести систему из «критического» режима. Поскольку необходимость диска Hot Spare для нас не подлежит сомнению, логичным было бы последовать дальше и «размазать» его по тОму так, как это сделано в RAID 5EE, чтобы получить преимущества от использования бОльшего количества дисков (лучшая скорость на чтении-записи и более быстрое восстановление целостности).

Уровни RAID в «числах».

В таблицу я собрал некоторые важные параметры почти всех уровней RАID, чтобы можно было сопоставить их между собой и четче понять их суть.

Уровень
~~~~~~~

Избы-
точ-
ность
~~~~~~~

Исполь-
зование емкости дисков
~~~~~~~

Произво-
дитель-
ность
чтения

~~~~~~~

Произво-
дитель-
ность
записи

~~~~~~~

Встроен-
ный диск
резерва

~~~~~~~

Мин. кол-во дисков
~~~~~~~

Макс. кол-во дисков

~~~~~~~

Отл

Отл

Отл

Отл

Все «зеркальные» уровни – RAID 1, 1+0, 10, 1E, 1E0.

Давайте еще раз попробуем досконально разобраться, чем же различаются эти уровни?

RAID 1.
Это – классическое «зеркало». Два (и только два!) жестких диска работают как один, являясь полной копией друг друга. Выход из строя любого из этих двух дисков не приводит к потере ваших данных, так как контроллер продолжает работу с оставшимся диском. RAID1 в цифрах: двукратная избыточность, двукратная надежность, двукратная стоимость. Производительность на запись эквивалентна производительности одного жесткого диска. Производительность чтения выше, так как контроллер может распределять операции чтения между двумя дисками.

RAID 10.
Суть этого уровня в том, что диски массива объединяются парами в «зеркала» (RAID 1), а затем все эти зеркальные пары в свою очередь объединяются в общий массив с чередованием (RAID 0). Именно поэтому его иногда обозначают как RAID 1+0 . Важный момент – в RAID 10 можно объединить только четное количество дисков (минимум – 4, максимум – 16). Достоинства: от "зеркала" наследуется надежность, от «нуля» – производительность как на чтение, так и на запись.

RAID 1Е.
Буква "E" в названии означает "Enhanced", т.е. "улучшенный". Принцип этого улучшения следующий: данные блоками "чередуются" ("striped") на все диски массива, а потом еще раз "чередуются" со сдвигом на один диск. В RAID 1E можно объединять от трех до 16 дисков. Надежность соответствует показателям "десятки", а производительность за счет большего "чередования" становится чуть лучше.

RAID 1Е0.
Этот уровень реализуется так: мы создаем "нулевой" массив из массивов RAID1E. Следовательно, общее количество дисков должно быть кратно трем: минимум три и максимум – шестьдесят! Преимущество в скорости при этом мы вряд ли получим, а сложность реализации может неблагоприятно отразиться на надежности. Главное достоинство – возможность объединить в один массив очень большое (до 60) количество дисков.

Сходство всех уровней RAID 1X заключается в их показателях избыточности: ради реализации надежности жертвуется ровно 50% суммарной емкости дисков массива.

RAID – аббревиатура, расшифровываемая как Redundant Array of Independent Disks – “отказоустойчивый массив из независимых дисков” (раньше иногда вместо Independent использовалось слово Inexpensive). Концепция структуры, состоящей из нескольких дисков, объединенных в группу, обеспечивающую отказоустойчивость родилась в 1987 году в основополагающей работе Паттерсона, Гибсона и Катца.

Исходные типы RAID-массивов

RAID-0
Если мы считаем, что RAID это “отказоустойчивость”(Redundant…), то RAID-0 это “нулевая отказоустойчивость”, отсутствие ее. Структура RAID-0 это “массив дисков с чередованием”. Блоки данных поочередно записываются на все входящие в массив диски, по порядку. Это повышает быстродействие, в идеале во столько раз, сколько дисков входит в массив, так как запись распараллеливается между несколькими устройствами.
Однако во столько же раз снижается надежность, поскольку данные будут потеряны при выходе из строя любого из входящих в массив дисков.

RAID-1
Это так называемое “зеркало”. Операции записи производятся на два диска параллельно. Надежность такого массива выше, чем у одиночного диска, однако быстродействие повышается незначительно (или не повышается вовсе).

RAID-10
Попытка объединить достоинства двух типов RAID и лишить их присущих им недостатков. Если взять группу RAID-0 с повышенной производительностью, и придать каждому из них (или массиву целиком) “зеркальные” диски для защиты данных от потери в результате выхода из строя, мы получим отказоустойчивый массив с повышенным, в результате использования чередования, быстродействием.
На сегодняшний день “в живой природе” это один из наиболее популярных типов RAID.
Минусы – мы платим за все вышеперечисленные достоинства половиной суммарной емкости входящих в массив дисков.

RAID-2
Остался полностью теоретическим вариантом. Это массив, в котором данные кодируются помехоустойчивым кодом Хэмминга, позволяющим восстанавливать отдельные сбойные фрагменты за счет его избыточности. Кстати различные модификации кода Хэмминга, а также его наследников, используются в процессе считывания данных с магнитных головок жестких дисков и оптических считывателей CD/DVD.

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

RAID-5
Попытка обойти это ограничение породила следующий тип RAID, в настоящее время он получил, наряду с RAID-10, наибольшее распространение. Если запись на диск “блока избыточности” ограничивает весь массив, давайте его тоже размажем по дискам массива, сделаем для этой информации невыделенный диск, тем самым операции обновления избыточности окажутся распределенными по всем дискам массива. То есть мы также как и в случае RAID-3(4) берем дисков для хранения N информации в количестве N + 1 диск, но в отличие от Type 3 и 4 этот диск также используется для хранения данных вперемешку с данными избыточности, как и остальные N.
Недостатки? А как же без них. Проблема с медленной записью отчасти была решена, но все же не полностью. Запись на массив RAID-5 осуществляется, тем не менее, медленнее, чем на массив RAID-10. Зато RAID-5 более “экономически эффективен”. Для RAID-10 мы платим за отказоустойчивость ровно половиной дисков, а в случае RAID-5 это всего один диск.

Однако скорость записи снижается пропорционально увеличению количества дисков в массиве (в отличие от RAID-0, где она только растет). Это связано с тем, что при записи блока данных массиву нужно заново рассчитать блок избыточности, для чего прочитать остальные “горизонтальные” блоки и пересчитать в соответствии с их даными блок избыточности. То есть на одну операцию записи массив из 8 дисков (7 дисков данных + 1 дополнительный) будет делать 6 операций чтения в кэш (остальные блоки данных со всех дисков, чтобы рассчитать блок избыточности), вычислять из этих блоков блок избыточности, и делать 2 записи (запись блока записываемых данных и перезапись блока избыточности). В современных системах частично острота снимается за счет кэширования, но тем не менее удлиннение группы RAID-5 хотя и вызывает пропорциональное увеличение скорости чтения, но также и соответственное ему снижение скорости записи.
Ситуация со снижением производительности при записи на RAID-5 иногда порождает любопытный экстремизм, например, http://www.baarf.com/ ;)

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

RAID-6
Дальнейшее развитие идеи RAID-5. Если мы рассчитаем дополнительную избыточность по иному нежели применяемому в RAID-5 закону, то мы сможем сохранить доступ к данным при отказе двух дисков массива.
Платой за это является дополнительный диск под данные второго “блока избыточности”. То есть для хранения данных равных объему N дисков нам нужно будет взять N + 2 диска.Усложняется “математика” вычисления блоков избыточности, что вызывает еще большее снижение скорости записи по сравнению с RAID-5, зато повышается надежность. Причем в ряде случаев она даже превышает уровень надежности RAID-10. Нетрудно увидеть, что RAID-10 тоже выдерживает выход из строя двух дисков в массиве, однако в том случае, если эти диски принадлежат одному “зеркалу” или разным, но при этом не двум зеркальным дискам. А вероятность именно такой ситуации никак нельзя сбрасывать со счета.

Дальнейшее увеличение номеров типов RAID происходит за счет “гибридизации”, так появляются RAID-0+1 ставший уже рассмотренным RAID-10, или всяческие химерические RAID-51 и так далее.
В живой природе к счастью не встречаются, обычно оставаясь “сном разума” (ну, кроме уже описанного выше RAID-10).