Различные варианты дисковых конфигураций

Продолжение перевода Adam Backman «OpenEdge Revealed:Mastering the OpenEdge Database with OpenEdge Management».

Конфигурации различные по стоимости : сравнение

Казалось бы — нет ничего проще, чем дисковая подсистема. Нет, это не так — всё гораздо сложнее. Когда вы покупаете диск, в действительности вы платите деньги за две важные характеристики  :  дисковую емкость и производительность. Для примера, если вам необходима емкость в 72Gb, то можно приобрести как и один диск ёмкостью 72Gb, так и четыре диска по 18Gb. Емкостные характеристики последнего решения абсолютно такие же, как и в первом случае, но данная конфигурация может быть  производительней до четырех раз, чем один диск. Каждый диск  совершает в среднем около 100 операций ввод-вывода (I/O) в секунду  вне зависимости от своей емкости. А с системы из четырех дисков возможно снять до 400 операций ввода-вывода в секунду.

Есть определенные причины, по которым дешевле покупать диски большего размера

  • 72Gb диски ненамного дороже, чем один 18Gb диск. Покупка  четырех 18Gb дисков для достижения емкости в 72Gb заметно удорожит стоимость такого решения.
  • Необходимы посадочные места под эти диски в корзине. Больше посадочных мест – больше стоимость.
  • Может понадобиться большее количество дисковых контроллеров для эффективной загрузки дисков – это так же сказывается на стоимости.

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

Физическое размещение данных на дисках

Обращения к 25 процентам дорожек у внешней стороны диска в среднем на 10-15 процентов быстрее, чем к 25 процентам дорожек у внутренней кромки диска. Это свойство можно использовать  при составлении вашей дисковой конфигурации.  Некоторые операционные системы и производители дисковых систем позволяют выбирать физическое расположение разделов на дисках;   другие же размещают первый раздел диска на внешней кромке диска и последний раздел – на внутренней.  В обоих случаях использование внешней стороны диска дает больший потенциал для производительности. В больших многодисковых системах продукционные данные занимают порядка 75-80 процентов каждого диска. Это позволяет отнести внутренние области дисков на статичные области хранения – резервные копии или вспомогательные области.

Утилизация кэша

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

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

Резюме  – иметь кэш это прекрасно и предоставляет определенные выгоды, но это совсем не ключевой показатель при выборе дисковой системы.

Повышение надежности при помощи RAID-массивов.

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

Резервирование почти всегда повышает надежность дисковой системы.  Общепринятым способом достижения надежности является использование RAID-массивов ( Redundant Array of Inexpensive Disks – дисковый массив недорогих дисков с избыточностью). Существуют два типа RAID-массивов:

  • Программный.  Программный RAID – дешевый. Однако он всегда будет менее производительным, чем аппаратный RAID, так как он нагружает CPU сервера необходимостью управления дополнительными операциями ввода-вывода.
  • Аппаратный.  Наиболее часто используются уровни RAID 0,   RAID 1, RAID 5 и RAID 10. Главное различие между этими уровнями RAID – различный уровень фокусировки на надежность и производительность.

Следующий раздел обсуждает различные уровни RAID-массивов:

  • RAID 0: Чередование
  • RAID 1: Зеркалирование
  • RAID 10 или 1 + 0
  • RAID 5

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

RAID 0: Чередование

RAID 0: Чередование обладает следующими характеристиками

  • Высокая производительность – прирост производительности для случайного чтения и записи
  • Низкая надежность – нет защиты от сбоев
  • Повышенный риск – При сбое одного диска весь массив повреждается

Иллюстрация1 показывает как работает чередование

На иллюстрации 1 массив RAID 0 состоит из трех дисков.  Данные распределены по всем трем дискам. Количество информации, размещаемое на одном диске называется chunk или stripe (дословно – кусок, полоска).  На иллюстрации видно, как страйпы физически распределяются по всему RAID-массиву.

Примечание: размер страйпа является настраиваемой величиной – от самой малой (8K) до довольно больших значений (несколько мегабайт). Возможность изменения размера страйпа зависит от конкретного производителя оборудования. Обратитесь к документации производителя, чтобы узнать каким образом изменить данный параметр.

Тестирование показало, что размер страйпа 128K и больше является оптимальным с точки зрения быстродействия для базы данных OpenEdge с размером блока базы 8K.  (Блок 8k наиболее эффективный размер блока для базы данных OpenEdge).  В операционной системе этот набор страйпов выглядит для пользователя как обычная файловая система или “диск”. На иллюстрации 1, к примеру, зададим размер страйпа  равным 128K. В этом случае файл размером 384K распределится по всем трем дискам. Для чтения такого файла все три диска выполнят операцию чтения одновременно.

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

RAID1: зеркалирование

RAID 1: Характеристики

  • Средняя производительность – лучше чем у обычных дисков из-за использования стратегии «оптимистичного чтения»
  • Дороговизна — высокая стоимость на единицу объема – 100% избыточность. Это справедливо и для контроллеров,если нам нужно обеспечивать отказоустойчивость и на этом уровне
  • Высокая надежность – потеря диска не вызывает перерывов в работе
  • Хорош для последовательного чтении и записи – последовательные файлы лучше размещать на RAID1-устройстве.

Иллюстрация 2 показывает пример зеркалирования

На иллюстрации 2  диск слева является основным диском, второй диск работает как параллельный или зеркальный диск ( зеркальная информация  на этом диске маркируется буквой P).  Роль параллельного диска – хранить точную и синхронную копию всей информации, которая расположена на основном диске.  Если основной диск отказывает, то информация может быть получена с параллельного диска.

Удостоверьтесь, что  система хранения поддерживают горячую замену “hot swap”. В этом случае замена вышедшего из строя диска может производиться без остановки системы. Большинство RAID1 устройств обладают таким свойством. Необходимо отметить, что период ресинхронизации после такой замены оказывает заметное влияние на производительность массива.

Оба диска на самом деле содержат одинаковые данные . При операциях чтения, диск у которого головки чтения/записи находятся ближе всего к запрашиваемым данным и выполняет чтение. Это называется оптимистическим чтением (“optimistic read”).  Данная функция позволяет массиву быть до 15 процентов призводительнее, чем одиночный диск.  Настраивая зеркалирование важно не перепутать физические и логические разделы, ведь зеркалирование имеет смысл только для физических дисков.

RAID 10 или 1 + 0

RAID 1 + 0, более известный как RAID10 имеет следующие характеристики:

  • Высокая надёжность – используется зеркалирование и чередование
  • Высокая производительность – хорош для случайного чтения и записи
  • Дорогой – такой же дорогой, как и RAID1

RAID 10 снимает проблему надежности для массивов с чередования путем добавления зеркалирования.

На иллюстрации 3 диски изображенные слева  – основные диски. Информация этих основных дисков зеркалируется на диски изображенные справа (так же как и в RAID1). Основные диски объединены между собой чередованием (Это — RAID0) . Иными словами говоря, RAID10 является массивом типа RAID0, сегментами которого являются массивы RAID1 .

Данное решение самое производительное относительно других рассмотренных конфигураций. RAID10 поддерживает и чередование (striping) и оптимистичное чтение (optimistic read). Это наиболее предпочтительная конфигурация для большинства приложений, так как она предоставляет высокую производительность и доступность наряду с низкими затратами на  балансировку нагрузки.

RAID 5

RAID 5 обладает следующими характеристиками:

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

RAID 5 дешевле чем другие типы RAID. Потери в емкости массива составляют всего 20 процентов. Это место необходимо для хранения информации о контрольных суммах для восстановления  (сравните  с RAID 1 или 10, где такие потери составляют 50 процентов). Как бы то ни было – эта экономия на стоимости в самом начале проекта сведется на нет потерей производительности в процессе работы с массивом.

Недостаток RAID5 сильнее всего проявляется во время операций записи, которые в системах OLTP ((Online Transaction Processing) оперативная обработка транзакций) происходят очень часто. Каждая операция записи на диск средствами ОС порождает несколько операций записи на дисковом массиве: сохраняются собственно сами данные, затем вычисляется контрольная сумма для восстановления, которая записывается тоже. Все операции проходят через один и тот же контроллер, таким образом запись обходится в три раза дороже, чем на обычном диске: происходят запись информации, расчет четности, запись четности.

Зеркалируемые системы обычно подключаются через два контроллера, чтобы позволить параллельную запись. Если ваше приложение использует только чтение в 100% случаев, то вы можете использовать RAID5.  Иначе RAID1 или RAID10 будут лучшим способом защитить ваши данные.

Заявления о том, что RAID5 разделы “такие же быстрые” как RAID1 или RAID10 должны быть внимательно проверены. В тестах или в мелкосерийных задачах, которые не могут использоваться для полноценного тестирования RAID5 потолок производительности массива не достигается, так как есть кэш-память, которая полностью справляется с нагрузкой.  Несмотря на это, на реальных производственных задачах, где кэш уже не сможет справляться со своей задачей вы очень хорошо стукнетесь об этот потолок производительности. Даже создание резервной копии производит значительное количество операций  на запись и заполняет кэш сильно понижая таким образом производительность.

Примечание: Progress Software Corporation не рекомендует использоать RAID5 для баз данных OpenEdge если для этой базы данных свойственна высокая активность на запись.

На иллюстрации 4 показан пятидисковый RAID5-массив. Заметьте, что информация о четности (предваряемая на иллюстрации символом P) перемежается вместе с основной информацией на всех дисках. Если даст сбой один диск, то данные потеряны не будут. Но, тем не менее производительность такого массива резко снизится, так как информация, размещенная на потерянном диске будет восстанавливаться путем расчета из информации о контрольных суммах. Этот процесс состоит из трех шагов:

  1. Получить контрольную сумму
  2. Вычислить данные из информации, полученной в п1
  3. Передать данные пользователю

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

Leave a Reply

You must be logged in to post a comment.