Мтс

Дисковые массивы RAID: что это, и зачем нужно? Что такое рейд массив – разновидности и настройка

В интернете есть масса статей с описанием RAID. Например, эта описывает все очень подробно. Но как обычно, читать все не хватает времени, поэтому надо что-нибудь коротенькое для понимания - а надо оно или нет, и что лучше использовать применительно к работе с СУБД (InterBase, Firebird или что то иное - на самом деле все равно). Перед вашими глазами - именно такой материал.

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

RAID 0 (Stripe)

Грубо говоря, это последовательное объединение двух (или более) физических дисков в один "физический" диск. Годится разве что для организации огромных дисковых пространств, например, для тех, кто работает с редактированием видео. Базы данных на таких дисках держать нет смысла - в самом деле, если даже у вас база данных имеет размер 50 гигабайт, то почему вы купили два диска размером по 40 гигабайт, а не 1 на 80 гигабайт? Хуже всего то, что в RAID 0 любой отказ одного из дисков ведет к полной неработоспособности такого RAID, потому что данные записываются поочередно на оба диска, и соответственно, RAID 0 не имеет средств для восстановления в случае сбоев.

Конечно, RAID 0 дает ускорение в работе из-за чередования чтения/записи.

RAID 0 часто используют для размещения временных файлов.

RAID 1 (Mirror)

Зеркалирование дисков. Если Shadow в IB/FB это программное зеркалирование (см. Operations Guide.pdf), то RAID 1 - аппаратное зеркалирование, и ничего более. Упаси вас от использования программного зеркалирования средствами ОС или сторонним ПО. Надо или "железный" RAID 1, или shadow.

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

Насчет производительности - по записи выигрыш 0, по чтению - возможно до 1.5 раз, т. к. чтение может производиться "параллельно" (поочередно с разных дисков) . Для баз данных ускорение мало, в то время как при параллельном обращении к разным (!) частям (файлам) диска ускорение будет абсолютно точно.

RAID 1+0

Под RAID 1+0 имеют в виду вариант RAID 10, когда два RAID 1 объединяются в RAID 0. Вариант, когда два RAID 0 объединяются в RAID 1 называется RAID 0+1, и "снаружи" представляет собой тот же RAID 10.

RAID 2-3-4

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

RAID 5

Для него нужно минимально 3 диска. Данные четности распределяются по всем дискам массива

Обычно говорится, что "RAID5 использует независимый доступ к дискам, так что запросы к разным дискам могут выполняться параллельно". Следует иметь в виду, что речь идет, конечно, о параллельных запросах на ввод-вывод. Если такие запросы идут последовательно (в SuperServer), то конечно, эффекта распараллеливания доступа на RAID 5 вы не получите. Разумеется, RAID5 даст прирост производительности, если с массивом будут работать операционная система и другие приложения (например, на нем будет находиться виртуальная память, TEMP и т. п.).

Вообще RAID 5 раньше был наиболее часто используемым массивом дисков для работы с СУБД. Сейчас такой массив можно организовать и на SATA дисках, причем он получится существенно дешевле, чем на SCSI. Цены и контроллеры вы можете посмотреть в статьях
Причем, следует обратить внимание на объем покупаемых дисков - например, в одной из упомянутых статей RAID5 собирается из 4-х дисков объемом 34 гиг, при этом объем "диска" получается 103 гигабайта.

Тестирование пяти контроллеров SATA RAID - http://www.thg.ru/storage/20051102/index.html .

Adaptec SATA RAID 21610SA в массивах RAID 5 - http://www.ixbt.com/storage/adaptec21610raid5.shtml .

Почему RAID 5 - это плохо - https://geektimes.ru/post/78311/

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

Объем дискового массива RAID5 расчитывается по формуле (n-1)*hddsize, где n - число дисков в массиве, а hddsize - размер одного диска. Например, для массива из 4-х дисков по 80 гигабайт общий объем будет 240 гигабайт.

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

Статья RAID-5 must die . И еще о потерях данных на RAID5 .

Примечание. На 05.09.2005 стоимость SATA диска Hitachi 80Gb составляет 60 долларов.

RAID 10, 50

Дальше идут уже комбинации из перечисленных вариантов. Например, RAID 10 это RAID 0 + RAID 1. RAID 50 - это RAID 5 + RAID 0.

Интересно, что комбинация RAID 0+1 в плане надежности оказывается хуже, чем RAID5. В копилке службы ремонта БД есть случай сбоя одного диска в системе RAID0 (3 диска) + RAID1 (еще 3 таких же диска). При этом RAID1 не смог "поднять" резервный диск. База оказалась испорченной без шансов на ремонт.

Для RAID 0+1 требуется 4 диска, а для RAID 5 - 3. Подумайте об этом.

RAID 6

В отличие от RAID 5, который использует четность для защиты данных от одиночных неисправностей, в RAID 6 та же четность используется для защиты от двойных неисправностей. Соответственно, процессор более мощный, чем в RAID 5, и дисков требуется уже не 3, а минимум 5 (три диска данных и 2 диска контроля четности). Причем, количество дисков в raid6 не имеет такой гибкости, как в raid 5, и должно быть равно простому числу (5, 7, 11, 13 и т. д.)

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

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

Rebuild time

У любого массива RAID, который остается работоспособным при сбое одного диска, существует такое понятие, как rebuild time . Разумеется, когда вы заменили сдохший диск на новый, контроллер должен организовать функционирование нового диска в массиве, и на это потребуется определенное время.

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

Время восстановления функционирования массива в нормальном режиме напрямую зависит от объема дисков. Например, Sun StorEdge 3510 FC Array при размере массива 2 терабайта в монопольном режиме делает rebuild в течение 4.5 часов (при цене железки около $40000). Поэтому, при организации массива и планировании восстановления при сбое нужно в первую очередь думать именно о rebuild time. Если ваша база данных и бэкапы занимают не более 50 гигабайт, и рост в год составляет 1-2 гигабайта, то вряд ли имеет смысл собирать массив из 500-гигабайтных дисков. Достаточно будет и 250-гигабайтных, при этом даже для raid5 это будет минимум 500 гигабайт места для размещения не только базы данных, но и фильмов. Зато rebuild time для 250 гигабайтных дисков будет примерно в 2 раза меньше, чем для 500 гигабайтных.

Резюме

Получается, что самым осмысленным является использование либо RAID 1, либо RAID 5. Однако, самая частая ошибка, которую делают практически все - это использование RAID "подо все". То есть, ставят RAID, на него наваливают все что есть, и... получают в лучшем случае надежность, но никак не улучшение производительности.

Еще часто не включают write cache, в результате чего запись на raid происходит медленнее, чем на обычный одиночный диск. Дело в том, что у большинства контроллеров эта опция по умолчанию выключена, т.к. считается, что для ее включения желательно наличие как минимум батарейки на raid-контроллере, а также наличие UPS.

Текст
В старой статье hddspeed.htmLINK (и в doc_calford_1.htmLINK) показано, как можно получить существенное увеличение производительности путем использования нескольких физических дисков, даже для IDE. Соответственно, если вы организуете RAID - положите на него базу, а остальное (temp, OS, виртуалка) делайте на других винчестерах. Ведь все равно, RAID сам по себе является одним "диском", пусть даже и более надежным и быстродействующим.
признан устаревшим. Все вышеупомянутое вполне имеет право на существование на RAID 5. Однако перед таким размещением необходимо выяснить - каким образом можно делать backup/restore операционной системы, и сколько по времени это будет занимать, сколько времени займет восстановление "умершего" диска, есть ли (будет ли) под рукой диск для замены "умершего" и так далее, т. е. надо будет заранее знать ответы на самые элементарные вопросы на случай сбоя системы.

Я все-таки советую операционную систему держать на отдельном SATA-диске, или если хотите, на двух SATA-дисках, связанных в RAID 1. В любом случае, располагая операционную систему на RAID, вы должны спланировать ваши действия, если вдруг прекратит работать материнская плата - иногда перенос дисков raid-массива на другую материнскую плату (чипсет, raid-контроллер) невозможен из-за несовместимости умолчательных параметров raid.

Размещение базы, shadow и backup

Несмотря на все преимущества RAID, категорически не рекомендуется, например, делать backup на этот же самый логический диск. Мало того что это плохо влияет на производительность, но еще и может привести к проблемам с отсутствием свободного места (на больших БД) - ведь в зависимости от данных файл backup может быть эквивалентным размеру БД, и даже больше. Делать backup на тот же физический диск - еще куда ни шло, хотя самый оптимальный вариант - backup на отдельный винчестер.

Объяснение очень простое. Backup - это чтение данных из файла БД и запись в файл бэкапа. Если физически все это происходит на одном диске (даже RAID 0 или RAID 1), то производительность будет хуже, чем если чтение производится с одного диска, а запись - на другой. Еще больше выигрыш от такого разделения - когда backup делается во время работы пользователей с БД.

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

Все современные материнские платы оснащены интегрированным 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).

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).

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

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

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

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

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

Что такое RAID массив?

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

Так что, если вы хотите или ускорить свой диск или просто обезопасить информацию зависит лишь от вас. Точнее сказать, зависит от выбора нужной конфигурации «Рейда», эти конфигурации и отмечены порядковыми номерами 1, 2, 3…

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

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

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

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

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

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

Чтобы создать массив нужно не так много: материнская плата с поддержкой RAID, два идентичных жестких диска (это важно ). Они должны быть одинаковы не только в объеме, но и по кэшу, интерфейсу и т. д. Желательно, чтобы и производитель был один и тот же. Теперь включаем компьютер и , там ищем параметр SATA Configuration и ставим на RAID . После перезагрузки компьютера должно появится окно в которой мы увидим информацию о дисках и рейдах. Там мы должны нажать CTRL+I , чтобы начать настройку рейда, то есть, добавлять или удалять из него диски. Потом начнется и ее настройка.

Сколько всего этих рейдов? Их несколько, а именно RAID 1 , RAID 2 , RAID 3 , RAID 4 , RAID 5 , RAID 6 . Более подробно я расскажу только о двух из них.

  1. RAID 0 – позволяет создавать дисковый массив для того, чтобы увеличить скорость чтения/записи.
  2. RAID 1 – позволяет создавать зеркальные дисковые массивы для защиты данных.

RAID 0, что это такое?

Массив RAID 0 , который еще называют «Striping» использует от 2 до 4 жестких дисков, редко больше. Работая совместно, они повышают производительность. Таким образом, данные при таком массиве разбивается на блоки данных, а потом записываются сразу на несколько дисков.

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

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

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

RAID 1, что это такое?

Массив RAID 1 , его еще называют Mirroring – зеркало. Если говорить о недостатке, то в RAID 1 объем одного из жестких дисков вам как-бы «недоступен», потому что, он используется для дублирования первого диска. В RAID 0 это место доступно.

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

Если вы выбрали RAID 1, то знайте, что производительность упадет, но если данные вам важны, то используйте данных подход.

RAID 2-6, что это такое?

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

RAID 2 – нужен для массивов, которые используют код Хемминга (не интересовался, что за код). Принцип работы примерно, как в RAID 0, то есть информация также разбивается на блоки и поочередно записываются на диски. Остальные диски используются для хранения кодов коррекции ошибок, при помощи которых, в случае выхода из строя одного из дисков, можно восстановить данные.

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

RAID 3, 4, 5, 6 – про эти массивы я не буду здесь писать, так как, необходимая информация уже есть на Википедии , если хотите узнать о данных массивах, то читаем.

Какой выбрать RAID массив?

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

Есть важная информация, которая должна быть в целости и сохранности? Тогда на помощь приходит RAID 1. При выборе жестких дисков, также их характеристики должны быть идентичными.

Вывод

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

Сегодня мы поговорим о RAID-массивах . Разберемся, что это такое, зачем это нам надо, какое оно бывает и как все это великолепие использовать на практике.

Итак, по порядку: что такое RAID-массив или просто RAID ? Расшифровывается эта аббревиатура как "Redundant Array of Independent Disks" или "избыточный (резервный) массив независимых дисков". Говоря по-простому, RAID-массив это совокупность физических дисков, объединенных в один логический.

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

RAID-массивы бывают аппаратные и программные.

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

Программные RAID-массивы создаются средствами ОС. Т.е. во время загрузки операционная система "понимает", что у нее несколько физических дисков и только после старта ОС, посредством программного обеспечения диски объединяются в массивы. Естественно сама операционная система располагается не на RAID-массиве , поскольку устанавливается до его создания.

"Зачем все это нужно?" - спросите Вы? Отвечаю: для повышения скорости чтения/записи данных и/или повышения отказоустойчивости и безопасности.

"Каким образом RAID-массив может увеличить скорость или обезопасить данные?" - для ответа на этот вопрос рассмотрим основные типы RAID-массивов , как они формируются и что это дает в результате.

RAID-0 . Называемый так же "Stripe" или "Лента". Два или более жестких дисков объединяются в один путем последовательного слияния и суммирования объемов. Т.е. если мы возьмем два диска объемом 500Гб и создадим из них RAID-0 , операционной системой это будет восприниматься как один диск объемом в терабайт. При этом скорость чтения/записи у этого массива будет вдвое больше, нежели у одного диска, поскольку, например, если база данных расположена таким образом физически на двух дисках, один пользователь может производить чтения данных с одного диска, а другой пользователь производить запись на другой диск одновременно. В то время как в случае расположения базы на одном диске, сам жесткий диск задачи чтения/записи разных пользователей будет выполнять последовательно. RAID-0 позволит выполнять чтение/запись параллельно. Как следствие - чем больше дисков в массиве RAID-0 , тем быстрее работает сам массив. Зависимость прямопропорциональная - скорость возрастается в N раз, где N - количество дисков в массиве.
У массива RAID-0 есть только один недостаток, который перекрывает все плюсы от его использования - полное отсутствие отказоустойчивости. В случае смерти одного из физических дисков массива, умирает весь массив. Есть старая шутка на эту тему: "Что обозначает "0" в названии RAID-0 ? - объем восстанавливаемой информации после смерти массива!"

RAID-1 . Называемый так же "Mirror" или "Зеркало". Два или более жестких дисков объединяются в один путем параллельного слияния. Т.е. если мы возьмем два диска объемом 500Гб и создадим из них RAID-1 , операционной системой это будет восприниматься как один диск объемом в 500Гб. При этом скорость чтения/записи у этого массива будет такая же, как у одного диска, поскольку, чтение/запись информации производятся на оба диска одновременно. RAID-1 не дает выигрыша в скорости, однако обеспечивает большую отказоустойчивость, поскольку в случае смерти одного из жестких дисков, всегда есть полный дубль информации, находящийся на втором диске. При этом необходимо помнить, что отказоустойчивость обеспечивается только от смерти одного из дисков массива. В случае если данные были удалены целенаправленно, то они удаляются со всех дисков массива одновременно!

RAID-5 . Более безопасный вариант RAID-0. Объем массива рассчитывается по формуле (N - 1) * DiskSize RAID-5 из трех дисков по 500Гб, мы получим массив объемом в 1 терабайт. Суть массива RAID-5 в том, что несколько дисков объединятся в RAID-0, а на последнем диске хранится так называемая "контрольная сумма" - служебная информация, предназначенная для восстановления одного из дисков массива, в случае его смерти. Скорость записи в массиве RAID-5 несколько ниже, поскольку тратится время на расчет и запись контрольной суммы на отдельный диск, зато скорость чтения такая же, как в RAID-0.
Если один из дисков массива RAID-5 умирает, резко падает скорость чтения/записи, поскольку все операции сопровождаются дополнительными манипуляциями. Фактически RAID-5 превращается в RAID-0 и если своевременно не позаботиться восстановлением RAID-массива есть существенный риск потерять данные полностью.
С массивом RAID-5 можно использовать так называемый Spare-диск, т.е. запасной. Во время стабильной работы RAID-массива этот диск простаивает и не используется. Однако в случае наступления критической ситуации, восстановление RAID-массива начинается автоматически - на запасной диск восстанавливается информация с поврежденного с помощью контрольных сумм, расположенных на отдельном диске.
RAID-5 создается как минимум из трех дисков и спасает от одиночных ошибок. В случае одновременного появления разных ошибок на разных дисках RAID-5 не спасает.

RAID-6 - является улучшенным вариантом RAID-5. Суть та же самая, только для контрольных сумм используется уже не один, а два диска, причем контрольные суммы считаются с помощью разных алгоритмов, что существенно повышает отказоустойчивость всего RAID-массива в целом. RAID-6 собирается минимум из четырех дисков. Формула расчета объема массива выглядит как (N - 2) * DiskSize , где N - количество дисков в массиве, а DiskSize - объем каждого диска. Т.е. при создании RAID-6 из пяти дисков по 500Гб, мы получим массив объемом в 1,5 терабайта.
Скорость записи RAID-6 ниже чем у RAID-5 примерно на 10-15%, что обусловлено дополнительными временными затратами на расчет и запись контрольных сумм.

RAID-10 - так же иногда называется RAID 0+1 или RAID 1+0 . Представляет собой симбиоз RAID-0 и RAID-1. Массив строится минимум из четырех дисков: на первом канале RAID-0, на втором RAID-0 для повышения скорости чтения/записи и между собой они в зеркале RAID-1 для повышения отказоустойчивости. Таким образом, RAID-10 совмещает в себе плюс первых двух вариантов - быстрый и отказоустойчивый.

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

RAID-60 - та же самая идея: фактически имеем RAID-6, собранный из нескольких массивов RAID-0.

Так же существуют другие комбинированные массивы RAID 5+1 и RAID 6+1 - они похожи на RAID-50 и RAID-60 с той лишь разницей, что базовыми элементами массива являются не ленты RAID-0, а зеркала RAID-1.

Как Вы сами понимаете комбинированные RAID-массивы: RAID-10 , RAID-50 , RAID-60 и варианты RAID X+1 являются прямыми наследниками базовых типов массивов RAID-0 , RAID-1 , RAID-5 и RAID-6 и служат только для повышения либо скорости чтения/записи, либо повышения отказоустойчивости, неся при этом в себе функционал базовых, родительских типов RAID-массивов .

Если перейти к практике и поговорить о применении тех или иных RAID-массивов в жизни, то логика довольно проста:

RAID-0 в чистом виде не используем вообще;

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

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

RAID-6 используется там, где просто страшно или есть реальная угроза смерти сразу нескольких дисков в массиве. На практике встречается достаточно редко, в основном у параноиков;

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

Опять же, если еще упростить, то приходим к выводу, что там где нет большой и объемной работы с файлами вполне достаточно RAID-1 - операционная система, AD, TS, почта, прокси и т.д. Там же, где требуется серьезная работа с файлами: RAID-5 или RAID-10 .

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

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