Производительность сервера SYBASE на RAID 5 массиве
Благодаря простоте и надёжности в работе массива RAID 5 обычно на нём и останавливаются, выбирая конфигурацию, особо не разбираясь в том, как он будет работать в конкретной задаче. Также сервера могут поставляться с уже сконфигурированным RAID 5 на 3-х и более дисках. Получая такие серверы системные администраторы не хотят тратить время на переконфигурирование, или просто боятся что-то менять в уже настроенном и работающем компьютере. В результате производительность работы с базой данных, установленной на такой новый сервер, оказывается меньше, чем была на старом, который проработал на предприятии 3-4 года.
Стремление поставщиков сконфигурировать дисковый массив именно в RAID пятого уровня можно объяснить желанием удивить клиента огромным размером дискового пространства. Сисадмины, в свою очередь, часто просто не обладают достаточными знаниями о том как работает RAID массив того или иного уровня.
Цель данной статьи - найти ответы на вопросы:
- Правильно ли использовать RAID 5 для сервера базы данных?
- Как оптимальным образом сконфигурировать RAID-контроллёр для размещения базы данных сервера Sybase?
Принцип работы RAID 5
В прошлой статье RAID-массивы. Обзор и характеристики. я описал общие принципы работы RAID-массивов, включая 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
Сервер Sybase обменивается с дисковой подсистемой страницами данных. Оптимальный размер страницы в большинстве случаев составляет 8К, что намного меньше размера страйпа и в большинстве случаев даже меньше чем размер стрипа. Ситуации, когда на диск записываются последовательно расположенные страницы, также достаточно редки. Таким образом, если в нашем примере происходит запись информации на диск А, то контроллеру придется выполнить следующие операции:
- Прочитать данные стрипов с дисков B и C. Две операции чтения.
- Рассчитать новую контрольную сумму. Две операции xor.
- Запись информацию на диск 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 10.
