Назад | Перейти на главную страницу

Лучшая конфигурация рейда для моего sql Server 2005

У меня есть база данных SQL SERVER 2005, работающая на сервере Windows 2008 со следующей конфигурацией. СЕРВЕР: HP Proliant ML380 G7 CPU: 1 RAM: 10 GB RAM HHD: 3 * 300 GB HHD с конфигурацией RAID 5.

Он имеет 10 действующих баз данных и 10 баз данных истории с разными размерами от 500 МБ до 6 ГБ. В этих базах данных есть около 100 пользователей, которые будут читать и писать.

Чтений больше, чем записей в секунду, точной статистики у меня нет.

Теперь мы пытаемся обновить наш сервер и думаем о лучшей конфигурации RAID: один для файлов данных, а другой для ОС, файлов журналов и tempdb.

Из моего поиска я обнаружил, что RAID 10 - это хорошо, но также кто-то говорит, что «преимущество RAID 10 - миф», см. Статью ниже.

http://www.zdnet.com/blog/ou/comprehensive-raid-performance-report/484

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

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

Было бы очень полезно иметь такую ​​статистику. Обычно я пытаюсь оценить количество операций ввода-вывода в секунду, которое может потребоваться приложению для бесперебойной работы и быстрого реагирования. Имея такую ​​информацию, я могу затем выполнить своего рода планирование емкости, чтобы оценить, какой уровень RAID является оптимальным для использования, и оценить количество шпинделей / дисков для достижения требуемого IOPS (поскольку каждый диск может обеспечить определенное количество IOPS в зависимости от его скорости вращения. , средняя задержка и среднее время поиска).

Просто наглядный пример. Согласно этот документ, MS SQL Server 2008 генерирует 29000 операций ввода-вывода в секунду в 3557 транзакциях SQL (в секунду). Предположим, у нас есть база данных с такими необходимыми IOPS, где 75% запросов - это READ IOPS, а 25% - WRITE IOPS (1 запрос READ или 1 запрос WRITE равен 1 IOPS). В этом примере не учитываются попадания в кеш.

Теперь, сколько операций ввода-вывода в секунду необходимо для обеспечения базового дискового массива / дисков? Мы можем использовать эту простую формулу, чтобы оценить его

TOTAL_IOPS = REQ_IOPS x READ_IOPS + REQ_IOPS x WRITE_IOPS x RAID_PENALTY

В нашем примере у нас есть REQ_IOPS = 29000, READ_IOPS = 0.75 и WRITE_IOPS = 0.25. Единственная отсутствующая переменная - это так называемый штраф RAID. Один диск SAS (15 000 об / мин) в среднем дает около 200 операций ввода-вывода в секунду. Но когда диск является частью группы RAID, мы не можем получить такое количество операций ввода-вывода в секунду, потому что для записи данных на диск необходимо выполнить какие-то вычисления, чтобы мы могли восстановить его после сбоя диска. Таким образом, RAID1 / 10 (с 2 вспомогательными зеркалами) имеет штраф 2, потому что будет выполнено 2 записи, по одной записи на каждый из дисков, в то время как RAID5 / 50 имеет штраф 4, потому что для каждого изменения на диске мы чтение данных, чтение четности, а затем запись данных и запись четности до завершения операции. RAID6 имеет штраф 6.

Что это значит для нас? Давайте сделаем конфигурацию RAID10 с RAID_PENALTY = 2

TOTAL_IOPS = 29000 x 0.75 +29000 x 0.25 x 2 = 36250 IOPS
TOTAL_DISKS = 36250 / 200 ~ 182 disks

В конфигурации RAID5 с RAID_PENALTY = 4

TOTAL_IOPS = 29000 x 0.75 +29000 x 0.25 x 4 = 50750 IOPS
TOTAL_DISKS = 50750 / 200 ~ 254 disks

Приведенный выше пример показывает нам, что для достижения 29000 IOPS, очевидно, требуется больше дисков в конфигурации RAID5, чем в RAID10. Другой вопрос, какова доступная дисковая емкость таких конфигураций? Если наш диск SAS имеет 500 ГБ, тогда в конфигурации RAID10 у нас будет 500 x 182/2 = 45,5 ТБ, а с RAID5 500 x (254-1) = 126,5 ТБ (для той же конфигурации с RAID10 потребуется 506 дисков !!!). Довольно мило.

Так вам нужен IOPS по лучшей цене? Тогда выберите RAID10, так как он имеет лучшее соотношение цена / количество операций ввода-вывода в секунду. Или вы предпочитаете более высокую емкость, но с аналогичным IOPS? Тогда выберите RAID5, так как он имеет лучшее соотношение цена / МБ.

Наконец, в этой таблице приведены общие характеристики различных уровней RAID, которые могут помочь вам выбрать правильный:

Как видите, RAID10 является наиболее подходящим с точки зрения производительности. RAID5 плохо справляется с записью, так как имеет штраф 4, но обеспечивает лучшую емкость.

AFAIK для SQL Server рекомендуется RAID 0, RAID 1 и RAID 5.
Проверьте эту ссылку: 1