Сегодня на рынке присутствует множество моделей жёстких дисков от таких именитых производителей, как Hitachi, Maxtor, Seagate и Western Digital. Для дома или офиса одного привода обычно бывает достаточно. Но для корпоративных сетей, кластеров или файловых серверов часто необходимо использовать несколько жёстких дисков. При этом возникает проблема — серьёзные контроллеры массивов RAID стоят довольно дорого.

Многие материнские платы оснащены встроенными контроллерами RAID, но не все из них подходят для организации файлового сервера. Большинство контроллеров поддерживают только простейшие режимы 0 и 1, а также комбинацию двух режимов RAID 0+1 (чередование и зеркалирование). Хотя массив RAID 0 даёт большую ёмкость и великолепную производительность, он, в то же время, повышает вероятность потери данных. Чем больше приводов в массиве RAID 0, тем более вероятна потеря данных из-за сбоя одного жёсткого диска. Хорошим компромиссом можно считать массив RAID 0+1, где дублируются два массива RAID 0, но при этом суммарный объём жёстких дисков следует делить наполовину.
Если нужна высокая ёмкость и надёжность, то хорошим решением будет массив RAID 5, который распределяет данные по всем дискам, а также добавляет информацию чётности поочерёдно на каждый диск. Общая ёмкость такого массива равна сумме объёмов всех приводов за минусом объёма одного жёсткого диска. Но подобное решение не так просто реализовать, как кажется. Вычисление информации чётности, а также восстановление данных в реальном времени в случае сбоя привода потребляет немало вычислительных ресурсов CPU. Для решения этой проблемы можно купить довольно дорогой контроллер RAID со встроенным блоком XOR или приобрести дешёвую модель, которая будет использовать центральный процессор для вычисления операций XOR.
Но почему мы игнорируем программную реализацию RAID 5? Если средств у вас немного, то, помимо использования простого RAID-контроллера без блока XOR, можно развернуть программный массив RAID 5. Windows Server может внести в массив RAID 5 все существующие приводы, так что даже RAID-контроллер вам не понадобится. Впрочем, если вам нужны простые файловые службы, то можно даже не тратиться на дорогой Windows Server, — с некоторыми модификациями можно построить мощный массив RAID и под Windows XP. Только помните, что Windows XP поддерживает одновременное подключение, максимум, десяти сетевых клиентов.

Развёртываем массив RAID 5 под Windows XP

Чтобы Windows XP смогла работать с RAID 5, необходимо воспользоваться hex-редактором (тем же Ultra Edit или Hacker"s View), а также взять CD с Windows XP. Сначала следует скопировать некоторые файлы во временную папку:
C:\windows\system32\drivers\dmboot.sys
C:\windows\system32\dmconfig.dll
C:\windows\system32\Dmadmin.exe
Затем откройте эти файлы с помощью hex-редактора:
Затем файлы в каталоге Windows System32 следует заменить нашими модифицированными версиями. Но простое переписывание здесь не подойдёт, поскольку Windows самостоятельно восстановит оригинальные версии файлов.
Если ваш диск отформатирован под FAT32, то просто загружайтесь в DOS и перезапишите файлы вручную. Но так как FAT32 не обеспечивает никакой защиты файлов, мы настоятельно не рекомендуем использовать эту файловую систему.
В окружении NTFS вам придётся загрузиться с CD Windows XP и запустить консоль восстановления системы (recovery console). Это можно выполнить, нажав «R» в первом меню. Но перед этим модифицированные файлы следует скопировать на дискету.
После загрузки консоли восстановления перейдите в каталог Windows:
C:
cd\windows
Теперь скопируйте все файлы один за другим с помощью следующих команд. Все файлы располагаются в двух различных каталогах.
copy a:\dmboot.sys system32\drivers
copy a:\dmboot.sys system32\dllcache
copy a:\dmconfig.dll system32
copy a:\dmconfig.dll system32\dllcache
copy a:\dmadmin.exe system32
copy a:\dmadmin.exe system32\dllcache

Создаём массив RAID 5



Теперь перезагрузите систему. В Windows запустите консоль управления (правый щелчок по значку «Мой компьютер», затем «Управление») и выберите «Управление дисками». Здесь следует перевести все жёсткие диски, которые будут использоваться в массиве RAID 5, в динамические. Для этого нажмите правой клавишей мыши на нужном диске и выберите «Преобразовать в динамический диск». Ну, а затем можно создавать новый том.


После модификации файлов, как показано выше, Windows XP сможет поддерживать программный массив RAID 5.


Для нашего тестового массива мы использовали четыре привода Western Digital WD740 Raptor.


Следующие опции в окнах...


...не отличаются от тех, которые задаются при создании обычного тома.
Как только Windows закончит создание тома, вы можете работать с новым массивом RAID 5 под Windows как с обычным жёстким диском.

Худший случай: если привод выйдет из строя?

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


На этом скриншоте показано, как выглядит программа управления дисками через несколько секунд после удаления жёсткого диска из массива. Затем мы снова подключили кабель. Из соображений безопасности Windows не будет включать жёсткий диск в массив автоматически. Все другие жёсткие диски массива были отмечены как «failed redundancy» — избыточность не работает.

Выберите «repair volume», после чего начнётся процесс восстановления массива.


Конечно, нам нужен один свободный привод.


Процесс восстановления начался!

Переносим массив Windows RAID на другие системы



Мы устанавливали массив RAID 5 на плате Asus P5DGC-V, оснащённой южным мостом ICH6.
Многие администраторы опасаются не только сбоя привода, но и выхода из строя контроллера. Обычно под рукой никогда не бывает идентичной или, по крайней мере, совместимой модели контроллера, поэтому массив сложно или невозможно запустить на другом контроллере. Основной проблемой будет то, что форматы RAID у разных RAID-контроллеров обычно не совместимы друг с другом.
Конечно, мы пожелали проверить, существует ли такая проблема с массивами Windows RAID: можно ли перенести существующий массив RAID, просто подключив жёсткие диски к другому компьютеру?
Основная тестовая машина работала на Asus P5GDC-V. Она базируется на чипсете Intel 915G с южным мостом ICH6, который обеспечивает четыре «родных» порта Serial ATA. К ним мы и подключили четыре жёстких диска Western Digital WD740 Raptor.
Когда мы выбирали вторую систему для переноса массива RAID, мы специально нашли контроллер SATA, который несовместим с ICH6. Плата AOpen AX4SPE MAX II базируется на чипсете 865P со старым добрым южным мостом ICH5. С одной стороны, он не является AHCI-совместимым. С другой стороны, этот мост обеспечивает только два порта, поэтому мы подключили два оставшихся привода к контроллеру Silicon Image Sil3114, тоже установленному на плату AOpen.
Следует признать, что мы не ожидали лёгкого переноса массива. Но всё, что нам пришлось сделать, — просто подключить кабели SATA к свободным портам на плате, и всё сразу же заработало. Нам не пришлось думать ни о порядке подключения приводов к портам, ни о типе контроллера, к которому подключались диски. Приводы можно свободно подключать к контроллерам ICH5 и Sil3114.


Перенос массива RAID 5 из четырёх дисков на другую систему оказался очень лёгким. Ничего не надо было конфигурировать, да и порты SATA можно выбирать произвольно.

Тестовая конфигурация

Процессоры Intel (Socket 775)
FSB 800 МГц (Двухканальная DDR) Процессор Intel Pentium 4 520 (2,8 ГГц)
Материнская плата
Socket LGA-775 ASUS P5GDC-V Deluxe
Чипсет Intel 915P
BIOS 1002
Память
DDR SDRAM 2x 512 Crucial Ballistic
Задержки: CL 2,5-3-3-7
Общее аппаратное обеспечение
Графическая карта Линейка nVidia GeForce 6
GPU: nVidia GeForce 6800 GT
Память: 256 Мбайт GDDR3 SDRAM
Жёсткий диск I — ОС Hitachi HDS722525VLSA80
250 Гбайт, кэш 8 Мбайт, 7200 об/мин
Жёсткий диск II — RAID Western Digital WD 740 Raptor
74 Гбайт, кэш 8 Мбайт, 10 000 об/мин
DVD/CD-ROM MSI MS-8216 16x DVD
Программное обеспечение
Графическая карта nVidia nVidia Detonator 61.77
Драйвер чипсета Intel Installation Utility 6.0.1.1002
DirectX 9.0c
ОС Windows XP Professional 5.10.2600, Service Pack 1
Тесты и измерения
Офисные приложения ZD WinBench 99 — Business Disk Winmark 2.0 c"t h2benchw
High-End приложения ZD WinBench 99 — High-End Disk Winmark 2.0
Измерение производительности c"t h2benchw
Производительность ввода/вывода Intel I/O meter 2003.05.10

Заключение

Честно говоря, результат установки массива RAID 5 под Windows XP оказался намного лучше, чем мы ожидали. Перенос управления RAID-массивом с контроллера на операционную систему, конечно, нельзя назвать производительным решением, однако здесь мы получаем высокий уровень гибкости и совместимости, столь редко встречающийся в области хранилищ данных. Любая система Windows XP технически способна поддерживать массивы RAID, конечно, если вы подключите требуемое количество жёстких дисков. И здесь совершенно не важно, какие контроллеры SATA вы будете использовать. А для включения поддержки RAID 5 под Windows XP следует изменить всего три файла.
Симуляция сбоя одного жёсткого диска прошла без всяких проблем, причём с процессом повторной перестройки массива смогут справиться даже не слишком опытные пользователи. Кроме того, на перестройку требуется примерно столько же времени, сколько и в случае использования аппаратных RAID-решений. Не следует упоминать, что доступ к функциям создания и изменения массива RAID доступен только пользователям с определёнными правами, то есть на пути неосторожных пользователей и злоумышленников встанет подсистема безопасности Windows.
Ещё одним преимуществом массива RAID 5 под Windows XP является великолепная цена. Кроме покупки жёстких дисков, всё, что вам нужно, — обеспечить необходимое количество портов SATA на вашей материнской плате или контроллере. Ну, а от покупки дорогого RAID-контроллера вполне можно и отказаться.
Наконец, перейдём к недостаткам такого решения. Программный массив RAID 5 под Windows работает не так быстро, как аппаратные решения. Однако файловым серверам не всегда нужна максимальная производительность. Если вам нужно установить сервер для нечастого доступа с небольшим объёмом трафика, то Windows RAID будет вполне достаточно. Но будьте осторожны. Как только вы создадите массив RAID, вы не сможете перенести его на аппаратный контроллер RAID. Для этого придётся переставлять весь массив.
...

R-Studio определяет и обрабатывает программные или аппаратные RAID как обычные диски/тома. Но как поступить в случае, если сам RAID поврежден, а имеются только диски (образы дисков), из которых он состоял? В данной ситуации для восстановления данных можно воспользоваться R-Studio. Число необходимых для восстановления данных исправных дисков зависит от структуры массива RAID. Например, для зеркального тома (RAID 1) необходим только один диск, в то время как в случае повреждения тома RAID5 для восстановления данных потребуется по крайней мере два исправных диска.

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

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

Рассмотрим, как работать с массивами RAID в R-Studio на примере простого тома RAID5:

Простой RAID 5
Параметры:
1. Число дисков: 3
2. Объекты R-Studio: #1 SCSI(3:0), #2 SCSI(3:1), #3 SCSI(3:2)
3. Размер Блока (Block Size): 64 KB
4. Смещение (Offset): 0
5. Порядок блоков (Blocks order): Левый Асинхронный (Непрерывный) (Left Asynchronous (Continuous))

1 2 PD
3 PD 4
PD 5 6

Где PD означает parity of data

Для создание виртуального RAID:
1.
Проверьте, чтобы был установлен флажок Сразу применять изменения (Apply changes immediately).


Кликните по изображению для его увеличения

2. Перетащите при помощи мыши на вкладку Родительские объекты (Parents) с левой панели соответствующие объекты, которые будут составлять том RAID5. Затем расположите объекты в правильном порядке, например, SCSI(3:0), SCSI(3:1), SCSI(3:2).

3. После этого задайте необходимый порядок блоков (blocks order) и смещение (offset, в секторах). Как только R-Studio определит исправную файловую систему , на левой панели Диски (Drives) появится новый объект Partition 1. С данным разделом можно работать как с реальным объектом.

Например, для того, чтобы просмотреть структуру папок/файлов созданного виртуального RAID5, нужно дважды щелкнуть мышью по объекту Partition 1.


Кликните по изображению для его увеличения




Кликните по изображению для его увеличения

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

Размер блока * (число дисков -1)

Для нашего случая минимальный размер файла будет 64KB (размер блока) * (три диска - один диск (2)), что дает 128 KB.

Определить параметры RAID"а можно автоматически в R-Studio или найти их вручную. Об этом можно прочитать в наших статьях:
.
.

Пользователь также может создавать, сохранять, редактировать и загружать собственные конфигурации RAID. Недостающие объекты можно заменять объектами Пропущенный Диск или Свободное Пространство (Missing Disk или Empty Space). Для более подробной информации воспользуйтесь Руководством Пользователя R-Studio: .

Возможность включения/отключения объектов
Для включения/отключения объектов в/из состава виртуального RAID или набора томов достаточно установить/снять соответствующий флажок Вкл (On) на вкладке Родительские объекты (Parents). Данная возможность позволяет, например, проверить, какой диск на самом деле не является частью RAID5.
R-Studio заменяет отключенный объект объектом Пропущенный Диск (empty space) идентичного размера.

Рассмотрим еще один более сложный том RAID5.

Сложный RAID 5
Теперь в качестве объектов виртуального RAID5 будем использовать образы дисков .
Параметры:
1. Число дисков: 3
2. Объекты R-Studio: файлы образов дисков : Y:\Disk1.dsk, Y:\Disk2.dsk, Y:\Disk3.dsk
3. Размер Блока (Block Size): 4 KB
4. Смещение (Offset): 16 MB (32768 секторов)
5. Порядок блоков (Blocks order): Пользовательский (Custom)

PD 1 2
PD 3 4
PD 5 6
7 PD 8
9 PD 10
11 PD 12
13 14 PD
15 16 PD
17 18 PD

Для создания данного виртуального RAID:
1. Нажмите кнопку Создать виртуальные тома или RAID (Create virtual volume sets or RAIDs) и выберите Создать Виртуальный том RAID5 (Create Virtual RAID5). Виртуальный том RAID5 появится на левой панели Диски (Drives), а на правой панели главного окна R-Studio для созданного RAID5 появится дополнительная вкладка Родительские объекты (Parents).


Кликните по изображению для его увеличения

Проверьте, чтобы флажок Сразу применять изменения (Apply changes immediately) был снят, так как созданный RAID будет редактироваться.

2. Перетащите при помощи мыши на вкладку Родительские объекты (Parents) с левой панели соответствующие объекты, которые будут составлять том RAID5.


Кликните по изображению для его увеличения

Затем расположите объекты в правильном порядке, например, I:\Disk1.dsk, I:\Disk2.dsk, I:\Disk3.dsk.
Задайте Порядок блоков RAID Пользовательский , Размер блока (Block size) и смещение (Offset). Не изменяйте значение параметра Порядок блоков (Blocks order).

3. В поле Число рядов: (Rows count:) вкладки Родительские объекты (Parents) введите значение 9. Значение параметра Порядок блоков (Blocks order) изменится на Пользовательский (Custom).


Кликните по изображению для его увеличения

Задайте порядок блоков при помощи соответствующей таблицы вкладки Родительские объекты (Parents). Используйте окно Последовательности RAID (RAID Sequences ) для навигации по таблице.

При помощи клавиатуры: используйте клавиши управления курсором для навигации, цифровые клавиши и клавиша "p" для ввода соответствующих значений.
При помощи мыши: щелкнуть правой кнопкой мыши по необходимой ячейке и выбрать из контекстного меню соответствующее значение или четность (parity). Если таблица достаточно большая, то лучше вводить цифровые значения при помощи клавиатуры.
Исправления: если вы ввели некоторые значения неверно, то R-Studio укажет вам на это. Перейдите к соответствующей ячейке и введите правильное значение. Для удаления содержимого ячейки используйте клавишу Del.
Удаление содержимого всей таблицы: щелкните правой кнопкой мыши по таблице и выберите пункт контекстного меню Очистить все (Clear all).

4. Закончив заполнение таблицы, нажмите кнопку Применить (Apply) на вкладке Родительские объекты (Parents).


Кликните по изображению для его увеличения

Как только R-Studio определит файловую систему, на левой панели Диски (Drives) появится новый объект Direct Volume. С данным разделом можно работать как с реальным объектом.

Например, для того, чтобы просмотреть структуру папок/файлов созданного виртуального RAID5, нужно дважды щелкнуть мышью по объекту Direct Volume


Кликните по изображению для его увеличения

Для проверки того, что RAID5 создан правильно, можно просмотреть в R-Studio графический файл, дважды щелкнув по нему мышью.


Кликните по изображению для его увеличения

Тома, созданные различными менеджерами дисков и томов.

R-Studio способна обнаруживать такие тома и автоматически собирать их из компонентов. В настоящее время поддерживаются следующие менеджеры:

  • Windows и


    Кликните по изображению для его увеличения

    Обратите внимание, может появиться две копии WSS (или другого объекта, который был распознан Windows), один собранный R-Studio, другой самой Windows. Их содержание может быть достаточно разным, если файловая система объекта повреждена.

    При выборе WSS R-Studio подсвечивает его компоненты. Она также подсвечивает storage space, который может быть создан самой Windows их тех же компонентов.

    Закладка WSS Компоненты позволяет вручную подключать или отключать компоненты, например, если они так повреждены, что R-Studio не в состоянии распознать их как часть WSS.


    Кликните по изображению для его увеличения

    Выберите объект из списка и нажмите на кнопку Подключить. R-Studio показывает объект, который она распознает как компонент storage space, синим цветом.


    Кликните по изображению для его увеличения

    Можно мгновенно переключиться на конфигурацию, которую R-Studio считает наиболее вероятной, нажатием на кнопку Пересобрать.

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

Концепция RAID

RAID (англ. Redundant Array of Independent Disks - избыточный массив независимых дисков) (хотя более точной, возможно, будет "вольная интерпретация": массив независимых дисков с избыточным ресурсом) - это аппаратная или программная подсистема, в которой хранимые данные распределяются (часто с дублированием) по нескольким жёстким дискам (физическим или виртуальным). Наиболее эффективной, как с точки зрения надёжности, так и с точки зрения производительности, является аппаратная RAID-подсистема. Тем не менее, программная реализация также может принести немалую пользу, и в Linux есть все необходимые компоненты для организации программного RAID-массива.

Различные типы RAID-массивов

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

На уровне RAID 0 два или более диска используются только для повышения производительности, поскольку разделяют между собой данные при чтении/записи. Здесь "избыточность" фактически отсутствует.

Массив RAID 1 является первым уровнем, обеспечивающим избыточность. Этот режим часто называют "зеркалированием" (mirroring), поскольку данные дублируются на всех дисках массива. Степень надёжности возрастает, но производительность операции записи снижается, так как запись одних и тех же данных выполняется несколько раз. Для организации RAID 1 требуется не менее двух дисков.

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

В массиве RAID 5 при записи разделяются и данные, и информация о контроле чётности. Поэтому RAID 5 считался наиболее эффективным и экономичным уровнем до появления новых разработок в этой области: RAID 5EE , RAID 6 , RAID 10 и комбинированных уровней RAID 1+0 , RAID 5+0 , RAID 1+5 . Для организации массива RAID 5 требуется не менее трёх дисков.

О дальнейшем развитии концепции RAID-массивов можно узнать на указанных выше страницах Wikipedia. Особый интерес представляет сравнение "RAID 10 versus RAID 5 in Relational Databases" на англоязычной странице.

Поддержка программной реализации RAID появилась в ядре Linux, начиная с версии 2.0, хотя для практического использования первая версия вряд ли годилась: возможности её были весьма ограничены, и содержала она изрядное количество ошибок. Начиная с ядер версии 2.4 ситуация улучшилась, и современные реализации RAID в Linux вполне пригодны для практического применения.

Создание и конфигурирование RAID-массива

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

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

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

Итак, для начала в VirtualBox необходимо создать собственно виртуальную машину для Linux (с ядром версий 2.6), выбрать для неё подходящий размер памяти и создать три жёстких диска с одинаковым объёмом (по 20 Гб для каждого диска будет вполне достаточно). После загрузки Linux-системы (можно использовать любой live-DVD или его ISO-образ) для работы потребуется эмулятор терминала (текстовой консоли).

Для разметки разделов на диске можно воспользоваться утилитой fdisk , но более удобной является её "наследница" cfdisk с псевдографическим интерфейсом, которую можно запустить из консоли следующей командой:

cfdisk /dev/sda

После запуска следует создать раздел свопинга (например, размером 1ГБ), а оставшееся пространство (19 ГБ) отдать корневому разделу. При этом важно установить для обоих разделов тип Linux RAID (шестнадцатеричный код fd ). После этого нужно обязательно записать сделанные изменения и выйти из cfdisk .

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

sfdisk -d /dev/sda | sfdisk /dev/sdb sfdisk -d /dev/sda | sfdisk /dev/sdc

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

В результате будут получены три диска с одинаковыми разделами и установленным типом Linux RAID. Теперь можно приступать непосредственно к созданию RAID-массива.

Создание дисков RAID-массива

Для создания RAID-массива потребуется утилита mdadm из одноимённого пакета. Сама операция создания выполняется с помощью команд, приведенных в листинге 1.

Листинг 1. Создание дисков RAID-массива
mdadm --create /dev/md0 --metadata=0.90 --level=1 --raid-devices=3 \ /dev/sda1 /dev/sdb1 /dev/sdc1 mdadm --create /dev/md1 --metadata=0.90 --level=1 --raid-devices=3 \ /dev/sda2 /dev/sdb2 /dev/sdc2

Первый ключ команды обязательно должен определять основной режим функционирования mdadm . В данном случае используется ключ --create (краткая форма -C ) - режим создания. После этого ключа указывается имя создаваемого RAID-устройства.

Ключ --metadata (краткая форма -e ) определяет используемый для данного диска формат метаданных (суперблока). Значение 0.90 (а также его аналоги 0 и default ) при создании RAID-массива используется по умолчанию, поэтому в приведённом примере его можно было бы и не включать в команду. Формат 0.90 допускает использование в RAID-массиве до 28 устройств-компонентов, а также определяет максимальный размер этих устройств (не более 2 ТБ).

Ключ --level=1 определяет уровень RAID-массива. Ключ --raid-devices=3 определяет количество устройств-компонентов в создаваемом RAID-массиве. Завершает командную строку список устройств, из которых будет сформирован RAID-массив.

Запуск в эксплуатацию

Дисковый массив успешно создан, но пока ещё пуст. Потребуется установить Linux-систему, чтобы проверить работу созданной RAID-подсистемы. Перед установкой следует позаботиться о том, чтобы раздел, выделенный для свопинга, корректно распознавался программой установки. Для этого используется следующая команда:

mkswap /dev/md0 setup

Установка Linux-системы выполняется в "штатном" режиме за исключением одной особенности: при выборе разделов вместо привычных /dev/sda1 и /dev/sda2 пользователю предлагаются /dev/md0 и /dev/md1 соответственно. Загрузчик, разумеется, должен быть установлен в MBR.

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

Если в установленной Linux-системе используется загрузчик grub , то в файл /boot/grub/grub.conf необходимо внести следующие изменения:

  • в строке splashimage=... имя раздела (hd0,1) заменяется на имя (md0,1)
  • в строке root (hd0,1) аналогичным образом выполняется замена на (md0,1)

Если система загружается с помощью lilo (этот загрузчик всё ещё используется в некоторых дистрибутивах), то потребуется отредактировать файл /etc/lilo.conf :

  • добавить в начальной (общей) секции строку: raid-extra-boot = mbr-only
  • заменить строку boot = /dev/sda на строку boot = /dev/md0

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

Теперь можно перезагрузить систему и проверить, как работает система на RAID-массиве.

Учёт и контроль

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

Команда mdadm сама по себе выполняет активизацию RAID-массива и в принципе не требует наличия файла конфигурации, но будет обращаться к нему, если в явной форме указано его имя ("стандартное" имя - /etc/mdadm.conf ). Использование файла конфигурации рекомендуется по двум причинам:

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

Команда mdadm --detail --scan позволяет получить значения текущих параметров настройки RAID-массива. Но для извлечения более подробной информации следует воспользоваться следующей комбинацией команд (опять же, потребуются права root):

echo "DEVICE /dev/sd*" > /etc/mdadm.conf mdadm --detail --scan >> /etc/mdadm.conf

Управление RAID-массивом

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

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

Текущее состояние RAID-массива проверяется по содержимому вышеупомянутого файла /proc/mdstat . После удаления третьего диска содержимое этого файла будет выглядеть приблизительно так, как на рисунке 1.

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

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

sfdisk -d /dev/sda | sfdisk /dev/sdc

После этого подготовленный "новый" диск добавляется в существующий RAID-массив:

mdadm /dev/md0 -a /dev/sdc1 mdadm /dev/md1 -a /dev/sdc2

Теперь система продолжает функционировать в нормальном режиме - все три RAID-устройства-компонента подключены и работают. В этом можно убедиться, снова просмотрев содержимое файла /proc/mdstat .

Дополнительные замечания

Имитировать отказ одного из RAID-дисков можно и с помощью специальных ключей команды mdadm , как показано ниже:

mdadm /dev/md0 --set-faulty /dev/sdc1 или mdadm /dev/md0 --fail /dev/sdc1

После того, как диск объявлен "неработающим", его можно удалить из RAID-массива:

mdadm /dev/md0 --remove /dev/sdc1

Сразу после логического удаления устройства-компонента его можно заменить физически. Ещё раз следует отметить, что "аппаратные" жёсткие диски настоятельно рекомендуется заменять только идентичными устройствами, а компоненты в виде логических разделов непременно должны быть заменены разделами точно такого же размера.

Когда замена устройства-компонента проведена, можно добавить обновлённый компонент в RAID-массив с помощью упоминавшейся выше команды:

mdadm /dev/md0 --add /dev/sdc1

Заключение

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

Ресурсы для скачивания

static.content.url=http://www.сайт/developerworks/js/artrating/

Zone=Linux, Open source

ArticleID=758669

ArticleTitle=Создание программного RAID-массива на Linux-платформе

Создаем 1,5-Тб RAID-массив в домашних условиях

Объемы информации растут быстрыми темпами. Так, согласно данным аналитической организации IDC, в 2006 году на Земле было сгенерировано около 161 млрд. Гб информации, или 161 экзабайт. Если представить этот объем информации в виде книг, то получится 12 обычных книжных полок, только длина их будет равна расстоянию от Земли до Солнца. Многие пользователи задумываются о приобретении все более емких накопителей, благо цены на них снижаются, и за 100 долларов сейчас можно приобрести современный винчестер на 320 Гб.

Большинство современных материнских плат имеют на борту интегрированный RAID-контроллер с возможностью организовывать массивы уровней 0 и 1. Так что всегда можно приобрести пару SATA-дисков и объединить их в RAID-массив. В данном материале как раз рассматривается процесс создания RAID-массивов уровней 0 и 1, сравнение их производительности. В качестве тестируемых взяты два современных жестких диска Seagate Barracuda ES (Enterprise Storage) максимальной емкости – 750 Гб.

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

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

В июле 1992 года была создана организация RAID Advisory Board (RAB), которая занимается стандартизацией, классифицированием и изучением RAID. В настоящее время RAB определила семь стандартных уровней RAID. Избыточный массив независимых дисковых накопителей обычно реализуется с помощью платы контроллера RAID. В нашем случае жесткие диски подключались к интегрированному RAID-контроллеру материнской платы abit AN8-Ultra на базе чипсета nForce 4 Ultra. Для начала рассмотрим возможности, предлагаемые чипсетом для построения RAID-массивов. nForce 4 Ultra позволяет создавать RAID-массивы уровней 0, 1, 0+1, JBOD.

RAID 0 (Stripe)

Расслоение дисков, также известное как режим RAID 0, уменьшает число обращений к дискам при чтении и записи для многих приложений. Данные делятся между несколькими дисками в массиве так, чтобы операции чтения и записи проводились одновременно для нескольких дисков. Этот уровень обеспечивает высокую скорость выполнения операций чтения/записи (теоретически - удвоение), но низкую надежность. Для домашнего пользователя – наверное, самый интересный вариант, позволяющий добиться существенного роста скорости чтения и записи данных с накопителей.

RAID 1 (Mirror)

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

Системы RAID 0 могут дублироваться с помощью RAID 1. Расслоение и зеркалирование дисков (RAID 0+1) обеспечивает более высокую производительность и защиту. Оптимальный способ по соотношению надежность/быстродействие, однако, требует большого количества накопителей.

JBOD

JBOD – данная аббревиатура расшифровывается как "Just a Bunch of Disks", то есть просто группа дисков. Данная технология позволяет объединять в массив диски различной емкости, правда, прироста скорости в этом случае не происходит, скорее, даже наоборот.

У рассматриваемого нами интегрированного RAID-контроллера NVIDIA RAID есть и другие интересные возможности:

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

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

Установка резервного диска. Технологии зеркалирования дисков позволяют пользователям назначать резервные диски, которые могут быть сконфигурированы в качестве горячего резерва, защищая дисковый массив в случае сбоя. Общий резервный диск может защитить несколько массивов дисков, а специальный резервный диск может служить в качестве горячего резерва для определенного дискового массива. Поддержка резервного диска, который обеспечивает дополнительную защиту поверх зеркалирования, традиционно ограничивалась высокоуровневыми многодисковыми системами. Технология хранения NVIDIA переносит эту возможность на ПК. Специальный резервный диск может заменить неисправный, пока не закончится ремонт, что позволяет команде поддержки выбирать любое удобное время для ремонта.

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

Кросс-контроллер RAID. В отличие от конкурентных многодисковых (RAID) технологий, решение NVIDIA поддерживает как Serial ATA (SATA), так и параллельные ATA накопители в рамках одного RAID массива. Пользователям необязательно знать семантику каждого жесткого диска, так как различия в их настройках очевидны.

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

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

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

Пользовательский интерфейс NVIDIA. Благодаря интуитивно понятному интерфейсу любой пользователь, даже не имеющий опыта работы с RAID, может легко использовать и управлять технологией хранения NVIDIA (также известной как NVIDIA RAID). Несложный «мышиный» интерфейс позволит быстро определить диски для конфигурирования в массиве, активизировать расслоение и создать зеркальные томы. Конфигурация может быть легко изменена в любое время с помощью того же интерфейса.

Подключаем и конфигурируем

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

Сначала подключаем диски к материнской плате. Необходимо подключить диски к первому и второму или третьему и четвертому SATA-разъемам, так как первые два относятся к первичному (Primary) контроллеру, а вторая пара – к вторичному (Secondary).

Включаем компьютер и заходим в BIOS. Выбираем пункт Integrated Peripherals, далее – пункт RAID Config. Нашему взору предстает следующая картинка:

Ставим RAID Enable, затем включаем RAID для того контроллера, куда подключили диски. На данном рисунке – это IDE Secondary Master и Slave, но нам нужно поставить Enabled в пункте SATA Primary или Secondary, в зависимости от того, куда вы подключили накопители. Нажимаем F10 и выходим из BIOS.

После перезагрузки появляется окошко конфигурирования RAID-дисков, чтобы настроить, нажимаем F10. NVIDIA RAID BIOS – именно тут и нужно выбрать, как именно сконфигурировать диски. Интерфейс очень понятный, просто выбираем нужные диски, размер блока, и все. После этого нам предложат отформатировать диски.

Для корректной работы RAID-массива в ОС Windows необходимо установить драйвер NVIDIA IDE Driver – он обычно имеется на диске с драйверами, идущем в комплекте с материнской платой.

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

Жесткий диск Seagate Barracuda ES был представлен в июне прошлого года. Винчестер был разработан для поддержки решений хранения данных, использующих наиболее быстрорастущие приложения – серверы большего объема, объемные медиа-материалы, а также различные схемы защиты данных.

Barracuda ES имеет интерфейс SATA, максимальную емкость в 750 Гб, а скорость вращения шпинделя составляет 7200 об/мин. Благодаря поддержке технологии Rotational Vibration Feed Forward (RVFF), повысилась надежность при работе в близко стоящих мультидисковых системах. Также стоит отметить технологию Workload Management, которая защищает диск от перегрева, что положительно сказывается на надежности дисков.

Как уже было отмечено выше, накопитель оснащен интерфейсом SATA II, поддерживает NCQ и имеет 8/16 Мб кэш. Доступны также 250, 400 и 500 Гб варианты.

На тестирование компания Seagate любезно предоставила два топовых накопителя ST3750640NS емкостью 750 Гб, оснащенных 16 Мб кэш-памяти. По своим техническим характеристикам диски Barracuda ES являются почти полной копией обычных десктопных винчестеров, и лишь более требовательны к условиям окружающей среды (температура, вибрация). Плюс, есть отличия в поддержке фирменных технологий.

Технические характеристики :

Скорость вращения шпинделя

7200 об/мин

Объем буфера

Среднее время ожидания

4,16 мс (номинальное)

Число головок (физическое)

Число пластин

Емкость

Интерфейс

SATA 3 Гбит/с, поддержка NCQ

Число пластин

Тип сервопривода

встроенный

Допустимые перегрузки при работе (чтение)

Допустимые перегрузки при хранении

Уровень шума

27 дБА (холостой режим )

Размеры

147х101,6х26,1 мм

720 граммов

Внешний вид

Так выглядит сам накопитель.

Примечательно, что диски отличаются как прошивками, так и контроллерами – в одном случае используется чип ST micro, в другом – Agere.

В комплекте с ним идет миниатюрный джампер, который переключает режим работы интерфейса с 3 Гбит/с на 1,5 Гбит/с.

Тестирование

Конфигурация тестового стенда :

Процессор

AMD Athlon 64 3000+

Материнская плата

Abit AN8-Ultra, nForce4 Ultra

Память

2х512Mb PC3200 Patriot (PSD1G4003K), 2,5-2-2-6-1Т

Основной жесткий диск

WD 1600JB, PATA, 8 Мб кэш, 160 Гб

Видеокарта

PCI-Express x16 GeForce 6600GT Galaxy 128 Мб

Корпус

Bigtower Chieftec BA-01BBB 420 Вт

Операционная Система

Windows XP Professional SP2

Несколько слов о системе охлаждения. Винчестеры установлены в корзину, которая охлаждалась одним 92 мм вентилятором Zalman ZM-F2. Для сравнения результаты испытуемого сравним еще с тремя жесткими дисками: IDE Samsung SP1604N, 2 Мб кэш, 160 Гб WD 1600JB, IDE, 8 Мб кэш, 160 Гб, WD4000YR емкостью 400 Гб, SATA, 16 Мб кэш, Seagate 7200.10 емкостью 250 Гб, SATA, 16 Мб кэш.

При тестировании использовалось следующее программное обеспечение:

  • FC Test 1.0 build 11;
  • PC Mark 05;
  • AIDA 32 3.93 (входящий в нее плагин для тестирования накопителей).

Ввиду того, что результаты Seagate Barracuda ES практически идентичны (разница укладывается в погрешность измерения) результатам Seagate Barracuda 7200.10 750 Гб, ранее, было решено не включать результаты тестирования одиночного накопителя, дабы не перегружать графики лишней информацией.

Результаты тестирования в программе AIDA 32 3.93:

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