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

Какой будет оптимальная конфигурация диска для SQL Server 2008 R2?

У нас есть новый сервер Dell R710, который поставляется со следующей конфигурацией хранилища:

8 дисков SAS 10k 6 Гбит / с по 146 ГБ
1 x интегрированный контроллер Perc H700 (2 x 4 диска - 2 порта, каждый с поддержкой 4 дисков)

  1. Какой была бы оптимальная конфигурация, если бы мы были сразу после выступления?

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

  3. Как в пункте 2 выше, но с диском горячего резервирования?

Мы планируем использовать Windows 2008 R2 и SQL Server 2008 R2.

Увеличение емкости хранилища не является главной задачей.

Просканировав Server Fault и другие ресурсы, я сначала подумал:

2 диска в RAID 1 для ОС
4 диска в RAID 10 для файлов данных
2 диска в RAID 1 для журналов транзакций

Я также подумал о том, чтобы поместить tempdb либо на диски журнала транзакций, либо на диски ОС?

Я знаю, что это старый вопрос, но он все еще актуален.

Сначала несколько замечаний по производительности. Как вы упомянули, есть три "части": файлы данных, файлы журналов и tempdb.

1) файлы данных: обычно произвольный ввод-вывод. Если это рабочая нагрузка с большим количеством операций чтения, RAID 5 - хороший выбор. Если есть значительные записи, то отдавайте предпочтение RAID 1 + 0

2) файлы журнала: обычно последовательная запись. RAID 1 + 0 является оптимальным, но, вероятно, излишним, учитывая ваши ограничения, к которым я вскоре перейду. Лучше всего разделить их по соображениям производительности и безопасности (http://support.microsoft.com/kb/2033523/en-us)

3) tempdb: часто является узким местом и требует большого количества случайных операций чтения / записи. Не обязательно быть «безопасным», потому что SQL воссоздает его при запуске.

Один из вариантов, который вы использовали, - это настроить два набора RAID 1 + 0. Файлы данных могут находиться на одном, файлы журналов и ОС - на другом. Что лучше поставить tempdb на первое или второе, зависит от вашей рабочей нагрузки. Если много записи, то поместите ее вместе с данными (чтобы файлы журналов не были узкими местами), но если файлы журналов не вызывают беспокойства, то tempdb лучше положить с ними.

Это также было бы безопасным вариантом, потому что многие диски должны выйти из строя, чтобы вы потеряли данные.

Другой вариант - RAID 1 для файлов журнала (2 диска). Тогда вы можете использовать RAID 1 + 0 / RAID 5 для файлов данных (3-4 диска). Затем вы можете выделить другие диски для tempdb. Вам не нужно использовать RAID 0, вы можете просто создать несколько файлов для tempdb и назначить по одному на каждый диск.

Если вы хотите добавить горячий резерв, вы окажетесь в сложной ситуации из-за количества дисков: RAID 1 + 0 требует четного числа. Обратите внимание, что RAID 5 имеет небольшой риск потери данных во время перестройки, потому что это длительный процесс и вам необходимо вычислить четность.

РЕДАКТИРОВАТЬ Я еще немного почитал, и RAID 5 больше не рекомендуется - это не совсем безопасно из-за перестройки. RAID 1 + 0 - действительно правильный выбор. См., Например: http://en.community.dell.com/dell-groups/dtcmedia/m/mediagallery/19861480/download.aspx (стр. 9-10 в PDF). Один (из нескольких) источников: http://www.reddit.com/r/sysadmin/comments/ydi6i/dell_raid_5_is_no_longer_recommended_for_any/.

Универсальные заметки

  1. предохраняйте файлы журналов от фрагментации. Убедитесь, что вы размер их разумно с большим фактором автоматического роста.
    http://www.sqlskills.com/blogs/kimberly/8-steps-to-better-transaction-log-throughput/

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

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

Partition_Offset ÷ Stripe_Unit_Size

Stripe_Unit_Size ÷ File_Allocation_Unit_Size
http://technet.microsoft.com/en-us/library/dd758814(v=sql.100).aspx

  1. если возможно, установите размер кластера 64 КБ

Я предполагаю, что:

  1. Только для производительности: RAID 0 (это будет рассматриваться как только 1 диск с общим объемом памяти 1168 ГБ;

  2. Для производительности, но с отказоустойчивостью данных: RAID 5 + 0 (требуется минимум 6 дисков), или вы также можете выбрать конфигурацию RAID 1 + 0, сделав 4 пары RAID 1 и сделав массив из 4x2 дисков в RAID 0 ;

                                     RAID 0
                                       ║
       ╔═════════════════╦═════════════╩═══════════╦══════════════════════╗
       ║                 ║                         ║                      ║
     RAID 1           RAID 1                    RAID 1                 RAID 1 
    (2x146GB)        (2x146GB)                 (2x146GB)              (2x146GB)
    

Для общего дискового пространства 584 ГБ, который будет рассматриваться как один единственный диск из-за функции очистки RAID 0.

В 3, если вы предпочитаете иметь диск с горячим резервом, вам может пригодиться RAID 0 + 5.

РЕДАКТИРОВАТЬ # 1

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

Более того, это очень незначительно, если ваши администраторы баз данных или программисты создают правильные индексы для правильных данных в своей базе данных. Имея четыре диска, которые быстро удаляются вместе, и обеспечивая отказоустойчивость с помощью RAID 1, я считаю, что у вас не возникнет проблем.

Надеюсь, это поможет! знак равно

Это помогает?