Raid 1 stripe size какой выбрать. Уровни RAID — краткие теоретические сведения

Энтузиасты наверняка знают, как выполнять эти действия, но для тех, кто только собирается знакомиться с массивами, подобный материал может быть полезным. Да простят меня сторонники AMD, объяснять я буду на примере указанного выше стенда «Wintelidia».

Прежде всего, необходимо переключить в BIOS режим работы чипсетного контроллера в режим RAID.

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

Предположим, с этим все хорошо. Если ОС еще не установлена, можно войти в меню самого контроллера и создать массив в его утилите. Для этого нужно успеть нажать CTRL+I во время загрузки.

Если же есть возможность загрузиться с отдельного диска, проще всего поставить фирменные драйверы Intel и воспользоваться консолью Rapid Storage Technology. При наличии подходящих дисков будет доступна кнопка «Создать».

На первом шаге необходимо выбрать тип массива.

Затем выполнить непосредственно настройку. Есть возможность не создавать RAID с нуля, а взять за основу одиночный диск с данными. Кроме того, для всех массивов (кроме «зеркала») можно выбрать размер полосы данных, он же размер страйпа (stripe size). Это определяет размер блоков, на которые разбиваются данные. Большие значения полезны для работы с большими файлами, маленькие – прежде всего для маленьких транзакций в стиле СУБД (хотя все сильно зависит от СУБД, типа массива, вида нагрузки, настроения разработчиков прошивки контроллера и прочих особенностей). Обычно лучше оставлять настройку по умолчанию.

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

Таким образом, повышается скорость операций записи, но одновременно увеличивается риск потери данных в случае сбоев. Мы все делаем «бэкапы» (правда ведь???) и ждем от RAID-0 максимальной производительности, так что во всех тестах этих массивов кэш будет включен.

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

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

В моем случае отключение кэша через Intel RST почему-то не работало – после перезагрузки он включался вновь. Пришлось воспользоваться «Диспетчером устройств», а именно снять галку «Разрешить кэширование записей для этого устройства» в свойствах RAID массива.

Эта настройка и Intel RST взаимосвязаны, после снятия галки параметр «Кэш данных диска» также переходит в состояние «Выключен» и остается таким после перезагрузок.

В итоге будут протестированы следующие конфигурации:

  • Vertex 3 RAID-0, размер страйпа 32 Кбайта;
  • Vertex 3 RAID-0, размер страйпа 128 Кбайт;
  • Vertex 3 RAID-0, подключение через порты SATA-II;
  • Vertex 3 RAID-0, медленный ЦП (активны два ядра, HT отключен, частота 2400 МГц, память 1066 МГц CL7);
  • Vertex 3 RAID-1, кэш массива и дисков включен;
  • Vertex 3 RAID-1, кэш массива и дисков выключен;
  • Crucial M4 RAID-0, размер страйпа 32 Кбайта;
  • Crucial M4 RAID-1, кэш массива и дисков включен;
  • Crucial M4 RAID-1, кэш массива и дисков выключен;
  • Одиночный Vertex 3;
  • Одиночный Crucial M4;
  • Жесткий диск WD5000AAKX.

Тестирование в классических бенчмарках

Crystal Disk Mark

Скорость линейного чтения, Мбайт/с

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

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

Включите JavaScript, чтобы видеть графики

На записи все меняется. Маленькие M4 слабы на запись, поэтому даже одиночный Vertex 3 обходит RAID-0 из двух дисков Crucial. Можно заметить, что отключенный кэш несущественно снижает скорость «зеркал». Скорость случайного чтения (блок 512 Кбайт), Мбайт/с

Включите JavaScript, чтобы видеть графики

Удивительно, но на чтении крупными блоками «страйпы» существенно замедляются и лидерами оказываются массивы RAID-1, причем без кэшей. На ошибку не похоже – и Vertex 3, и M4 ведут себя одинаково. Скорость случайной записи (блок 512 Кбайт), Мбайт/с

Включите JavaScript, чтобы видеть графики

В данном случае картина осталась похожей на ту, что была на линейной записи. Разве что механический диск замедлился почти вдвое. Скорость случайного чтения (блок 4 Кбайт), Мбайт/с

Включите JavaScript, чтобы видеть графики

Обычно так оно и происходит: во время проверки чистого времени доступа на чтение массивы только мешают. Скорость случайной записи (блок 4 Кбайт), Мбайт/с

Включите JavaScript, чтобы видеть графики

Маленькие запросы на запись можно кэшировать, поэтому производительность большинства систем значительно выше, чем на чтении. Исключение составляют конфигурации без кэша, особенно плачевно смотрится M4. Судя по всему, настройка отключает его 128-мегабайтный кэш, без которого SSD сваливается до уровня жесткого диска. А SandForce’ам кэш не ставят, им и так хорошо.

Кстати, обратите внимание, насколько сильно проявилась процессорозависимость. Загрузка ЦП в этом тесте действительно высока. Скорость случайного чтения (блок 4 Кбайт, длина очереди 32), Мбайт/с

Включите JavaScript, чтобы видеть графики

На глубокой очереди «марвеловские герои» просто потрясающи – сто тысяч IOPS за смешные деньги. Скорость случайной записи (блок 4 Кбайт, длина очереди 32), Мбайт/с

Включите JavaScript, чтобы видеть графики

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

PCMark 7

Windows Defender, Мбайт/с

Включите JavaScript, чтобы видеть графики


importing pictures, Мбайт/с

Включите JavaScript, чтобы видеть графики


Video editing, Мбайт/с

Включите JavaScript, чтобы видеть графики


Windows Media Center, Мбайт/с

Включите JavaScript, чтобы видеть графики


adding music, Мбайт/с

Включите JavaScript, чтобы видеть графики


starting applications, Мбайт/с

Включите JavaScript, чтобы видеть графики


gaming, Мбайт/с

Включите JavaScript, чтобы видеть графики


storage score, баллы

Включите JavaScript, чтобы видеть графики

Разнообразие есть только в тесте importing pictures, в нем доминируют Vertex’ы.

Мы столкнулись с такой проблемой, что большинство серверов, приобретаемых пользователями наших программ, поставляются с дисковым массивом, сконфигурированным в уровень RAID 5. Впоследствии системные администраторы не хотят тратить время на переконфигурирование, или просто боятся что-то менять в уже настроенном и работающем компьютере. В результате производительность работы с базой данных, установленной на такой сервер, оказывается меньше, чем была на старом, который проработал на предприятии 3-4 года. Наверное, стремление поставщиков сконфигурировать дисковый массив именно в RAID пятого уровня можно объяснить желанием удивить клиента огромным размером дискового пространства. Сисадмины, в свою очередь, часто просто не обладают достаточными знаниями о том как работает RAID массив того или иного уровня. Цель данной статьи дать ответы на два вопроса:

Почему нельзя использовать RAID 5 для сервера базы данных?

Как оптимальным образом сконфигурировать RAID контроллер для размещения базы данных сервера Firebird?

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

Как работает RAID 5?

Рассмотрим упрощенную схему работы массива из четырех дисков. Один из дисков выделяется для хранения контрольной суммы. Три – доступны для размещения данных. На рисунке ниже, диски с полезной информацией названы A, B и C. Диск D хранит контрольные суммы.

Минимальный объем информации, который контроллер считывает или записывает на один диск, называется стрипом (strip). В параметрах большинства контроллеров, с которыми нам приходилось сталкиваться, указывается не размер стрипа, а размер страйпа (stripe) – блока информации, который распределяется на все диски массива. На рисунке ниже один страйп выделен более темным цветом:


Размер страйпа равен размеру стрипа помноженного на количество дисков в массиве. Т.е. в случае с четырьмя дисками и размером страйпа 64К, минимальное количество информации, которое контроллер способен записать или считать с диска, равняется 64 / 4 = 16К.

Контрольная сумма, которая попадает на диск D, рассчитывается по следующей формуле:

D = A xor B xor C

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


При запросе блока информации с диска B контроллер восстановит его по формуле:

B = A xor C xor D

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

  1. Прочитать данные стрипов с дисков B и C. Две операции чтения.
  2. Рассчитать новую контрольную сумму. Две операции xor.
  3. Запись информацию на диск A и контрольную сумму на диск D. Две операции записи.

Итого, два чтения, две записи и две операции xor. Было бы удивительно, если бы при таком объеме работы, общая производительность не падала. Теперь становится очевидным почему RAID 5 не подходит для размещения файла базы данных.

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

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

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

Какой уровень RAID выбрать?

Если RAID 5 не подходит, то какой уровень выбрать для размещения файла базы данных? При количестве дисков меньше четырех единственным вариантом является зеркало (mirror) – RAID 1. Если в массиве от четырех дисков и больше, то оптимальным с точки зрения производительности и надежности является RAID 10 – объединение (RAID 0) нескольких зеркал (RAID 1). Иногда можно встретить написание как RAID 1+0. На рисунке ниже представлен массив RAID 10 из четырех дисков. Темным тоном выделены данные одного страйпа. Штриховка показывает дубликат этого страйпа.

Отметим так же, что если массив RAID 5 способен пережить потерю только одного диска, то RAID 10 из m зеркал по два диска выживет в случае потери от одного до m дисков, при условии, что откажут не более чем по одному диску в каждом зеркале.

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


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

Как настроить RAID контроллер?

Размер кэш памяти

Чем больше – тем лучше. Главное, чтобы контроллер имел батарейку (аккумулятор) для сохранения содержимого памяти при аварийном отключении питания. Во многих контроллерах батарейка не входит в стандартную поставку и ее необходимо заказывать отдельно. Без батарейки кэш на запись будет отключен.

Уровень RAID

RAID 10. Если количество дисков меньше четырех, то RAID 1 (зеркало). Почему? Читайте статью с самого начала.

Размер страйпа

Размер страницы базы данных умноженный на количество зеркал в массиве. Например, если в массиве 8 дисков, объединенных в четыре зеркала по два диска, а размер страницы базы данных равен 8К, то размер страйпа следует выставить в 8 * 4 = 32К.

Упреждающее чтение

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

Политика кэша на запись

Выбрать режим write back. Данные будут помещаться в кэш, а потом записываться на диск. Операция записи будет считаться завершенной сразу же после помещения данных в кэш.

Резервный (spare) диск

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

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



RAID 0

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

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

    RAID 10
  • RAID 10 , также иногда называется RAID 1+0 - комбинация двух первых вариантов. (Массив RAID0 из массивов RAID1). Имеет все скоростные преимущества RAID0 и преимущество надежности RAID1, сохраняя недостаток - высокую стоимость дискового массива, так как эффективная ёмкость массива равна половине ёмкости использованных в нём дисков. Для создания такого массива требуется минимум 4 диска. (При этом их число должно быть чётным).
  • RAID 0+1 - Массив RAID1 из массивов RAID0. Фактически не применяется из-за отсутствия преимуществ по сравнению с RAID10 и меньшей отказоустойчивости.

    RAID 1E
  • RAID 1E - Похожий на RAID10 вариант распределения данных по дискам, допускающий использование нечётного числа (минимальное количество - 3)
  • RAID 2, 3, 4 - различные варианты распределенного хранения данных с дисками, выделенными под коды четности и различными размерами блока. В настоящее время практически не используются из-за невысокой производительности и необходимости выделять много дисковой емкости под хранение кодов ЕСС и/или четности.


    RAID 5
  • RAID 5 - массив, также использующий распределенное хранение данных аналогично RAID 0 (и объединение в один большой логический ) + распределенное хранение кодов четности для восстановления данных при сбоях. Относительно предыдущих конфигураций размер Stripe-блока еще больше увеличен. Возможно как одновременное чтение, так и запись. Плюсом этого варианта является то, что доступная для пользователя емкость массива уменьшается на емкость лишь одного диска, хотя надежность хранения данных ниже, чем у RAID 1. По сути, является компромиссом между RAID0 и RAID1, обеспечивая достаточно высокую скорость работы при неплохой надежности хранения данных. При отказе одного диска из массива данные могут быть восстановлены без потерь в автоматическом режиме. Минимальное количество дисков для такого массива - 3.
    "Программные" реализации RAID5, встроенные в южные мосты материнских плат, не отличаются высокой скоростью записи, поэтому годятся далеко не для всех применений.


    RAID 5EE
  • RAID 5EE - массив, аналогичный RAID5, однако кроме распределенного хранения кодов четности используется распределение резервных областей - фактически задействуется , который можно добавить в массив RAID5 в качестве запасного (такие массивы называют 5+ или 5+spare). В RAID 5 массиве резервный диск простаивает до тех пор, пока не выйдет из строя один из основных , в то время как в RAID 5EE массиве этот диск используется совместно с остальными HDD все время, что положительно сказывается на производительность массива. К примеру, массив RAID5EE из 5 HDD сможет выполнить на 25% больше операций ввода/вывода за секунду, чем RAID5 массив из 4 основных и одного резервного HDD. Минимальное количество дисков для такого массива - 4.


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


    RAID 50
  • RAID 50 - объединение двух(или более, но это крайне редко применяется) массивов RAID5 в страйп, т.е. комбинация RAID5 и RAID0, частично исправляющая главный недостаток RAID5 - низкую скорость записи данных за счёт параллельного использования нескольких таких массивов. Общая ёмкость массива уменьшается на ёмкость двух , но, в отличие от RAID6, без потери данных такой массив переносит отказ лишь одного диска, а минимально необходимое число дисков для создания массива RAID50 равно 6. Наряду с RAID10, это наиболее рекомендуемый уровень RAID для использования в приложениях, где требуется высокая производительность в сочетании с приемлемой надёжностью.


    RAID 60
  • RAID 60 - объединение двух массивов RAID6 в страйп. Скорость записи повышается примерно в два раза, относительно скорости записи в RAID6. Минимальное количество дисков для создания такого массива - 8. Информация не теряется при отказе двух дисков из каждого RAID 6 массива.
  • Matrix RAID - технология, реализованная фирмой Intel в своих южных мостах, начиная с ICH6R, позволяющая организовать всего на двух дисках несколько массивов RAID0 и RAID1, одновременно создавая разделы как с повышенной скоростью работы, так и с повышенной надёжностью хранения данных.
  • JBOD (От английского "Just a Bunch Of Disks")- последовательное объединение нескольких физических в один логический, не влияющее на производительность (надёжность при этом падает аналогично RAID0), при этом могут иметь разные размеры. В настоящее время практически не применяется.
  • Данная статья подготовлена Николаем Ведяшкиным, экспертом Сервисного центра компании «Инфосистемы Джет».

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

    Например, добавить сервер БД и перенести на него экземпляр базы данных, добавить резервных накопителей для ускорения РК, сделать апгрейд процессоров и т.д. Однако стоит помнить, что простое наращивание аппаратных мощностей наименее выгодно с точки зрения материальных и временных затрат. Намного эффективнее решать такие проблемы на уровне логики работы ИТ-решений.

    Причины пробуксовки

    Проблемы с производительностью массива часто связаны с тем, что при изначальном конфигурировании не учитываются его архитектура, принципы функционирования и существующие ограничения. Например, ахиллесова пята массивов старого поколения – относительно невысокоая пропускная способность внутренних шин – около 200 Мб/сек. Не так давно один из заказчиков попросил нас проанализировать работу его дискового массива и дать рекомендации по оптимизации. По факту массив был не загружен, при этом его скорость периодически оставляла желать лучшего. Анализ выявил неправильную конфигурацию: в целом в течение суток внутренние диски были загружены примерно одинаково, но пики нагрузки распределялись по ним неравномерно. В итоге одна из внутренних шин перегружалась. То есть массив «буксовал» из-за превышения максимально допустимого порога у одной компоненты. Наша рекомендация – переразбить его для равномерной загрузки внутренних шин – помогла увеличить производительность на 30%.

    Ошибка может закрасться и при подключении серверов к СХД. Пример – неправильная конфигурация дисковой емкости, которая представляется хостам. Дело в том, что некоторые из современных массивов имеют ограничения по такому параметру, как очередь команд (Queue Depth, QD). Здесь стоит немного углубиться в историю. В стандарте SCSI-I SCSI-драйвер сервера должен был дождаться выполнения одной команды и только после этого отправлять следующую. Со стандарта SCSI-II и выше SCSI-драйвер может отправить SCSI-диску одновременно несколько команд (QD). Максимальное количество параллельно обслуживаемых SCSI-команд – одна из важнейших характеристик диска. Параметр IOPS (Input Output Operation per Second) показывает, сколько запросов (SCSI-команд) в секунду способен выполнить SCSI LUN. Получается, что QD и IOPS могут вступать в непримиримое противоречие друг с другом.

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

    Если же QD существенно ниже оптимального значения, производительность также будет хромать. При замечательном времени отклика и не загруженном массиве количество обрабатываемых им запросов будет очень маленьким. Виной всему – длительное ожидание в очереди перед отправкой запросов к СХД.

    Ловим IOPS за хвост

    Что предпринять, если время отклика зашкаливает, а массив не загружен? Или если просто хочется «выжать» из массива еще чуть-чуть?
    Можно:
    • заглянуть в настройки Queue Depth на сервере и сравнить максимально допустимую очередь команд с LUN массива. Скорректировать настройки;
    • посмотреть на статистику с массива. Возможно, на нем копится очередь команд к LUN;
    • разбить один LUN на несколько и соединить на хосте в stripe или хотя бы в конкатенацию в зависимости от конфигурации. Конкатенация полезна в том случае, если нагрузка распределится по всем LUN.
    • выбрать размер stripe unit size на массиве и хосте так, чтобы типичная операция со стороны приложения нагружала как можно меньше физических дисков в массиве.

    Рис. 1. Stripe Unit Size

    Пример из нашего опыта: связка «сервер–массив» у заказчика не показывала заявленный уровень производительности. В результате анализа выяснилось, что серверу был дан очень большой (на несколько терабайт) LUN – работа приложений была неудовлетворительной, а сам LUN был перегружен по очереди команд. Мы рекомендовали разбить этот LUN на несколько и разнести виды нагрузки на разные тома. На сервере «крутились» 4 instance баз данных, в итоге один из них начал работать в 6 раз быстрее, другой – в 2 раза.

    Больше не значит лучше

    ИТ-специалисты компаний-заказчиков не всегда понимают, какой тип RAID лучше подходит для того или иного профиля нагрузки со стороны приложений. Всем известно, что RAID 10 надежен, устойчив к потере нескольких дисков и показывает хорошую скорость на случайных операциях. Не удивительно, что чаще всего выбирают именно этот, весьма дорогостоящий вариант. Однако если профиль нагрузки приложения подразумевает мало операций случайной записи и много операций чтения или последовательной записи, оптимальнее использовать RAID 5. На том же количестве дисков он может работать в 1,5, а то и в 2 раза быстрее. Одна компания обратилась к нам с просьбой улучшить характеристики дискового ввода/ввода для одного из ее приложений. Приложение создавало много операций чтения и незначительное количество операций записи. На массиве был сконфигурирован RAID 10, а из статистики было видно, что практически половина дисков в RAID-группе простаивает. С переходом на RAID 5 из точно такого же количества физических дисков работа приложения улучшить более чем в 1,5 раза.

    Мы будем рады вашим конструктивным комментариям.

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

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

    Собственно, на заре распространения SSD потребительского класса были достаточно популярны рассуждения о том, RAID-массив из какого количества винчестеров сможет обеспечить производительность, сравнимую со скоростью флэш-накопителя. Конечно, сейчас эти времена уже безвозвратно ушли. Внедрение стандарта SATA 6 Гбит/сек и появление нового поколения контроллеров для твердотельных накопителей привело к тому, что скорости современных SSD ушли слишком далеко от того уровня быстродействия, который могут обеспечить традиционные магнитные диски. Однако возник другой не менее интересный вопрос: можно ли дополнительно увеличить производительность дисковой подсистемы, если в массив RAID 0 собрать несколько SSD?

    Действительно, причин, по которым технология RAID не должна оказывать положительный эффект в случае с SSD, на первый взгляд не видно. Твердотельные накопители показывают хорошее быстродействие при работе с небольшими блоками данных, а чипсетные RAID-контроллеры предлагают прямую связь с процессором с пропускной способностью, вполне достаточной для получения скоростей, превосходящих SATA 6 Гбит/сек в несколько раз. Так что существенного увеличения производительности работы можно ожидать и от RAID 0 на базе SSD. Идея кажется особенно привлекательной ещё и потому, что она не сопряжена ни с какими дополнительными затратами. Общая ёмкость массива RAID 0 представляет собой сумму ёмкостей входящих в него накопителей, а стоимость SSD прямо пропорциональна их ёмкости. То есть, если для создания массива пользоваться «бесплатным» RAID-контроллером встроенным в чипсет материнской платы, то в итоге мы получим примерно такую же стоимость хранения гигабайта информации, как и в случае одиночного диска большего размера.

    Учитывая кажущуюся привлекательность создания RAID 0 массивов из твердотельных накопителей, мы решили проверить их работу на практике. Компания Kingston любезно согласилась предоставить нам на тесты два 120-гигабайтных и один 240-гигабайтный SSD своей топовой серии HyperX, что и дало возможность прямого сравнения RAID 0 массива из двух дисков с одиночным накопителем аналогичного объёма.

    Подробнее о Kingston HyperX SSD

    Накопители серии Kingston HyperX SSD – это типичные решения на базе контроллеров SandForce второго поколения, нацеленные на энтузиастов. Они базируются на хорошо знакомом нам чипе SF-2281 и комплектуются 25-нм синхронной NAND-памятью производства компаний Intel или Micron. Проще говоря, накопители HyperX используют производительный вариант актуальной платформы SandForce и по своим внутренностям аналогичны таким популярным моделям как Corsair Force Series GT или OCZ Vertex 3.

    Выделяет Kingston HyperX SSD в ряду подобных SandForce-накопителей разве только более броский дизайн корпуса, да и фирменная программа Toolbox, позволяющая просматривать различную информацию о диске, включая значение атрибутов S.M.A.R.T.

    Утилита эта поразительно похожа на OCZ Toolbox с вырезанной функцией обновления прошивки (для этого у Kingston предлагается специализированная программа) и без возможности Secure Erase.



    Как и у всех других накопителей с контроллерами SandForce, диски Kingston HyperX SSD с ёмкостью 120 и 240 Гбайт отличаются по производительности. В официальных спецификациях это отражается следующим образом:



    Причина различий состоит в количестве используемых в составе SSD оконечных NAND-устройств. Так как 25-нм кристаллы MLC флэш-памяти имеют объём 8 Гбайт, 120-гигабайтный диск содержит 16 флэш-устройств, в то время как более ёмкая модификация укомплектована 32 устройствами. Учитывая, что контроллер SandForce SF-2281 имеет восьмиканальную архитектуру, накопители с разной емкостью вынуждены использовать для каждого канала технику чередования обращений к флэш-устройствам с разной кратностью. Так, в случае 120-гигабайтного SSD чередование двукратное, а в случае 240-гигабайтного накопителя – четырёхкратное. Большая кратность чередования гарантирует более высокую производительность, так как вместо ожидания готовности NAND-устройства после очередной операции контроллер имеет возможность перейти к обслуживанию следующего устройства. По сути это похоже на реализацию подхода RAID 0, но внутри накопителя, на уровне контроллера SandForce.

    Тестовая система

    Для тестирования SSD-накопителей мы собрали специальную систему, построенную на материнской плате с набором логики Intel H67, который, как известно, обладает парой SATA 6 Гбит/сек портов. Именно на этих портах мы и испытываем твердотельные накопители.

    В целом, тестовая конфигурация включает следующий набор оборудования:

    Процессор – Intel Core i5-2400 (Sandy Bridge, 4 ядра, 3.1 ГГц, технологии EIST и Turbo Boost –отключены);
    Материнская плата - Foxconn H67S (версия BIOS A41F1P01);
    Память - 2 x 2 GB DDR3-1333 SDRAM DIMM 9-9-9-24-1T;
    Системный накопитель – Crucial m4 256 Гбайт (CT256M4SSD2);
    Тестовые накопители:

    Kingston HyperX 120 Гбайт (SH100S3/120G, прошивка 332);
    Kingston HyperX 240 Гбайт (SH100S3/240G, прошивка 332);

    Операционная система - Microsoft Windows 7 SP1 Ultimate x64;
    Драйверы:

    Intel Chipset Driver 9.2.0.1030;
    Intel HD Graphics Driver 15.22.1.2361;
    Intel Management Engine Driver 7.1.10.1065;
    Intel Rapid Storage Technology 10.8.0.1003.

    Проблемы конфигурирования RAID 0 из SSD

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

    Наша стандартная тестовая платформа основывается на LGA1155-процессоре и системной плате с чипсетом H67, SATA-контроллер которого имеет встроенную поддержку RAID-массивов. Для её активации необходима смена режима работы SATA-контроллера с AHCI на RAID в BIOS. Однако простое изменение соответствующей опции в BIOS Setup приведёт скорее всего к неработоспособности операционной системы, выражающейся в возникновении «синего экрана» на этапе загрузки. Причина состоит в том, что драйвер RAID в Windows по умолчанию отключен. Обойти эту проблему можно двумя путями. Либо заново, уже в RAID-режиме, переустановить Windows, и тогда необходимый драйвер автоматически включится при установке. Либо, непосредственно перед изменением настроек SATA-контроллера в BIOS, установить в 0 значение переменной Start, находящейся в системном реестре в ветке HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Iastorv, а затем переустановить драйвер SATA-контроллера Intel Rapid Storage Technology (RST) уже в RAID-режиме.

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



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



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

    И хотя скорость одиночного Kingston HyperX SSD 120 Гбайт при работе с блоками данных растёт при увеличении размера блока, это ещё ничего не значит.


    Драйвер Intel Rapid Storage Technology (RST) способен достаточно интеллектуально обращаться с очередью запросов, обеспечивая высокую скорость RAID 0-массива из SSD и при использования небольших страйп-блоков. В доказательство этого мы оценили базовые характеристики производительности RAID 0-массива из пары Kingston HyperX SSD 120 Гбайт с разными размерами страйпа.

    Data stripe size = 4 KB:



    Data stripe size = 8 KB:



    Data stripe size = 16 KB:



    Data stripe size = 32 KB:



    Data stripe size = 64 KB:



    Data stripe size = 128 KB:



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



    При создании RAID-массивов важно иметь в виду и ещё одну немаловажную деталь. Как только массив сформирован, он начинает рассматриваться системой как единое целое, и прямой доступ к составляющим его накопителям становится невозможен. Это – достаточно неприятный момент, сулящий серьёзные практические неудобства. Имея RAID-массив из SSD дисков, вы не сможете ни обновить их прошивку, ни посмотреть параметры S.M.A.R.T., ни выполнить операцию Secure Erase. Но что самое неприятное, учитывая специфику такого массива, операционная система не сможет передать накопителям команду TRIM, посредством которой возможно эффективное противодействие деградации производительности SSD.

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

    Скорость случайного и последовательного чтения/записи «свежего» накопителя

    Для измерения скорости случайного и последовательного чтения и записи мы используем тест CrystalDiskMark 3.0.1. Этот бенчмарк удобен тем, что позволяет измерять скоростные характеристики SSD-накопителей как на случайных несжимаемых данных, так и при использовании полностью сжимаемых шаблонных данных. Поэтому, на приводимых далее диаграммах приводится по два числа – максимальная и минимальная скорость работы накопителя. Реальные же показатели, соответственно, будут лежать внутри изображённых диапазонов в зависимости от того, как их сможет уплотнить контроллер SF-2281.

    Заметим, что приведенные в этом разделе результаты тестов производительности относятся к «свежему» (FOB - Fresh Out-of-Box) недеградировавшему состоянию накопителя.


















    С точки зрения практических показателей быстродействия 120-гигабайтный SSD работает существенно медленнее своего 240-гигабайтного собрата. Тем не менее, RAID 0-массив из пары 120-гигабайтных дисков всё же превосходит по скорости единичный накопитель ёмкостью 240 Гбайт. Как видим, технология RAID 0 позволяет получить выигрыш в скорости линейных операций и при работе с небольшими блоками при использовании очереди запросов большой глубины. Обычные случайные же операции с 4-килобайтными блоками не ускоряются, более того, наблюдается даже некоторое замедление, обусловленное задержками на необходимость дополнительного арбитража.

    Деградация и производительность в устойчивом состоянии

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

    Например, если мы будем непрерывно записывать данные на флэш-накопитель, зависимость скорости записи от времени примет примерно следующий вид.



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

    Впрочем, картина катастрофического падения скорости, показанная на графике выше, несколько искусственна и характерна лишь для случая непрерывной и безостановочной записи. В реальности же, находясь в состоянии покоя, контроллеры современных SSD-дисков частично восстанавливают производительность, предварительно освобождая неиспользуемые страницы флэш-памяти. На это направлено два ключевых алгоритма: Idle-Time Garbadge Collection (сборка мусора) и TRIM. Однако в случае с массивом RAID 0 ситуация осложняется тем, что операционная система не имеет прямого доступа к SSD, в результате чего технология TRIM не работает. В связи с этим вполне вероятна ситуация, что спустя какое-то время эксплуатации единичный диск может оказаться существенно лучше RAID-массива.

    Никто не мешает проверить это предположение. Для получения картины деградации дисков и RAID 0 массива мы, основываясь на методике SNIA SSSI TWG PTS, провели специальные тесты. Их суть состоит в том, что мы последовательно измерили скорость операций записи в четырёх случаях. Вначале - для «свежего» состояния массива и накопителей. Затем – после полного двукратного заполнения информацией накопителей и RAID-массива. Далее – после получасовой паузы, дающей контроллеру возможность частично восстановить производительность накопителя за счёт операции сборки мусора. И в завершение – после подачи команды TRIM.

    Измерения выполнялись при помощи синтетического бенчмарка IOMeter 1.1.0 RC1, в котором мы отслеживали скорость случайной записи при работе с выровненными относительно страниц флэш-памяти блоками объёмом 4 Кбайт с глубиной очереди запросов 32 команды. При тестировании использовалось заполнение псевдослучайными данными.



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

    Всё это означает, что те скорости записи, которые были приведены на диаграммах в предыдущем разделе, отражают лишь незначительную часть общей картины. На самом же деле, после того, как SSD перейдут из свежего в использованное состояние, соотношение результатов коренным образом поменяется. Скорость записи в этом случае будет совсем иной: результаты её измерения бенчмарком CrystalDiskMark 3.0.1 приводятся на следующих диаграммах.









    Как видим, в процессе использования скорость работы RAID 0 массива из SSD снижается до такой степени, что на операциях с 4-килобайтными блоками он становится даже медленнее одиночного 120-гигабайтного накопителя, производительность которого поддерживается на хорошем уровне командой TRIM. Так что в реальной жизни создание массива RAID 0 из SSD оправдывается преимущественно высокими скоростями чтения, которые не подвержены снижению по мере заполнения накопителя данными.

    Тесты в Futuremark PCMark 7

    Известный тест PCMark 7 включает отдельный бенчмарк для измерения производительности дисковой подсистемы. Причём, он имеет не синтетическую природу, а, напротив, основывается на том, как работают с диском реальные приложения. Этот бенчмарк воспроизводит настоящие сценарии-трассы задействования диска в распространённых задачах и замеряет скорость их выполнения. Причём, воспроизведение потока команд делается не сплошняком, а так, как это происходит в реальности – с определёнными паузами, обусловленными необходимостью обрабатывать поступающие данные. Результатом теста является общий индекс производительности дисковой подсистемы и показатели скорости в отдельных сценариях в мегабайтах в секунду. Заметьте – производительность в сценариях в абсолютном выражении получается относительно невысокой, так как в неё вносят вклад те самые моделируемые паузы между отдельными операциями ввода-вывода. Иными словами, то, что выдаёт PCMark 7, – это скорость дисковой подсистемы со стороны приложения. Такие величины дают нам информацию не столько о чистой производительности накопителей, сколько о том, какой практический выигрыш способен привнести тот или иной SSD при реальной работе.

    Тестирование в PCMark 7 мы выполняли с накопителями, находящимися в «использованном» состоянии, в котором они работают в реальных системах большинство времени. Влияние на результаты в этом случае оказывает не только скорость контроллера и установленной в накопителе флэш-памяти, но и эффективность работы внутренних алгоритмов SSD, направленных на восстановление производительности.



    Интегральный показатель PCMark 7 – прекрасный ориентир для тех потребителей, кто не хочет вдаваться в подробности и довольствуется простой иллюстрацией относительной производительности накопителей. И, если верить в полученные рейтинги, массив RAID 0 обладает в целом лучшим быстродействием, чем одиночный диск аналогичной ёмкости. Если принять во внимание, что большинство жизненных сценариев использования дисковой подсистемы предполагает преобладание операций чтения, полученные результаты кажутся вполне логичными и заслуживающими доверия.

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





















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

    Тесты в Intel NAS Performance Toolkit

    Intel NASPT – это ещё один основанный на использовании реальных сценариев тест дисковой подсистемы. Также как и PCMark 7, он воспроизводит заранее подготовленные типовые шаблоны дисковой активности, попутно измеряя скорость их прохождения. Данный бенчмарк вместе с PCMark 7 позволяет получить отличную иллюстрацию производительности дисковой подсистемы в реальных задачах. Также как и в предыдущем случае, тестирование мы выполняли с накопителями, находящимися в устоявшемся «использованном» состоянии.



    Intel NASPT совершенно однозначно ставит на первое место по производительности RAID 0 массив, состоящий из пары 120-гигабайтных накопителей. Причём, скорость такого двухдискового массива по данным теста превосходит производительность одного SSD почти что вдвое. Впрочем, столь заметный успех технологии RAID способны омрачить некоторые результаты, полученные в индивидуальных подтестах.




































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

    Выводы

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

    Создание массива RAID 0 – это один из традиционных путей для повышения производительности дисковой подсистемы. Этот приём вполне работает и для SSD, объединение в массив пары дисков действительно позволяет нарастить как линейные скорости, так и быстродействие операций над небольшими блоками с глубокой очередью запросов. Так, в процессе тестов нам удалось получить для массива поистине впечатляющие скорости последовательного чтения и записи, существенно превосходящие пропускную способность интерфейса SATA 6 Гбит/сек.

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

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

    Однако использование SSD в составе массива вызывает некоторые дополнительные неудобства. Для накопителей, собранных в массив, невозможно отслеживание их «состояния здоровья» и обновление прошивок. Кроме того, система, состоящая из пары SSD, имеет более низкую надёжность, чем один диск, причём выход из строя хотя бы одного накопителя приведёт к потере всех хранящихся в массиве данных.