Рекомендуемая настройка диска/раздела для SQL Server

Рекомендуемая настройка диска/раздела для SQL Server

Я ищу совет относительно наилучшего способа настройки моих дисков/разделов для SQL Server. Вот некоторые из моих основных опасений:

Как следует разделять файлы SQL (файлы данных, журналы, временные файлы)?

Что лучше — объединить в RAID множество жестких дисков и разбить пространство на разделы или создать несколько RAID-массивов с меньшим количеством дисков для каждого RAID-массива?

Должны ли файлы данных и журналов находиться на другом типе RAID?

Должны ли базы данных по умолчанию (master, msdb и т. д.) располагаться на диске C: или они должны находиться в том же месте, что и другие файлы данных/журналов?

решение1

Вот хорошая запись в блоге:http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

Белая книга по выравниванию диска:http://msdn.microsoft.com/en-us/library/dd758814.aspx

Короче говоря, ваша ОС должна быть на RAID 1, ваши файлы данных на RAID 10 (предпочтительно), а файлы журналов на RAID 1.

Статья о производительности SQL:http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

PDF-файл с 10 лучшими советами по повышению производительности:http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf

Также не забудьте поместить TEMPDB на отдельный диск из соображений производительности. Я уверен, что Пол Рэндал придет сюда и немного позже взорвет вам мозг, объяснив, почему.

MS говорит, почему для tempdb:http://msdn.microsoft.com/en-us/library/ms175527.aspx

решение2

Это большой вопрос, который зависит от обстоятельств.

Я не могу ответить на вопрос о том, как создать отдельные RAID-массивы, поскольку я не эксперт в области хранения данных, но я могу помочь вам с остальным.

Первое, что вам нужно учесть, это какова рабочая нагрузка на различные базы данных - OLTP (чтение/запись) или DSS/DW (чтение в основном). Для рабочих нагрузок чтения/записи вам следует рассмотреть RAID 1 или RAID 10 (RAID 1+0), так как они обеспечивают избыточность и отличную производительность чтения/записи. Для рабочих нагрузок чтения в основном вы можете использовать RAID 5. Причина, по которой RAID 5 не следует использовать для рабочих нагрузок чтения/записи, заключается в том, что вы платите штрафом за производительность при записи.

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

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

Разделение реальных баз данных снова зависит от рабочей нагрузки и возможностей базовой подсистемы ввода-вывода — например, для хранения данных на отдельных RAID-массивах может потребоваться более высокая степень разделения, чем в SAN.

Tempdb — это особый случай сам по себе, так как обычно это сильно загруженная база данных и должна храниться отдельно от других баз данных. Системные базы данных не должны интенсивно использоваться и могут размещаться где угодно, пока есть избыточность.

Вот ссылка на технический документ, который я помог написать и который должен вам помочь:Проектирование физического хранилища базы данных. Также убедитесь, что ваша подсистема ввода-вывода может справиться с ожидаемой рабочей нагрузкой — см. этот технический документ:Лучшие практики ввода-вывода перед развертыванием. Наконец, убедитесь, что вы используете правильный размер полосы RAID (обычно 64 КБ или выше на новых системах), правильный размер единицы распределения NTFS (обычно 64 КБ) и что на системах до Windows Server 2008 вы правильно установили смещение раздела диска. Информацию об этом, а также ссылки на дополнительную информацию о них и о том, почему вам следует настроить их таким образом, см. в этой записи блога:Правильно ли настроены смещения разделов диска, размеры полос RAID и единицы распределения NTFS?.

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

Надеюсь, это будет вам полезно.

P.S. Что касается tempdb, то это большой ящик червей относительно того, как вам следует его настроить, и есть всякая противоречивая информация. Я написал исчерпывающую запись в блоге о конфигурации файла данных tempdb наЗаблуждения о TF 1118.

решение3

Короткий ответ для серверов, которые я настраивал, всегда был таким:

Журналы на отдельных физических дисках, рейд 1 или 10 (чередование + зеркалирование)

База данных на собственных дисках, в зависимости от потребностей производительности, обычно RAID5

Большой объем кэша на RAID-контроллере(ах)

Предпочтительно снова разместить ОС и файл подкачки Windows на отдельном массиве, обычно просто на зеркале (Raid 1). Это позволяет разделить все операции записи, чтобы высокая производительность не тормозила все.

В прошлом я сталкивался с тем, что запись в базу данных + запись в журнал + запись в файл подкачки затормозит массив Raid5, и производительность полетит к чертям. Проблема в том, что производительность будет хорошей при тестировании, разработке и т. д. Но когда вы попадете в производство и использование взлетит до небес, эта проблема появится «из ниоткуда», и жалобы пользователей взлетят до небес.

решение4

Здесь есть гораздо более опытные специалисты по MSSQL, чем я, но в целом я бы посоветовал следующее:

ОС и код на C: - это должны быть локальные диски, это должна быть пара массивов RAID1 - мы используем 2 x 2,5-дюймовых диска SAS 146 ГБ 10 krpm для этого, но вы можете использовать 2 x диска SATA 7.2. Данные должны быть на довольно быстром (10 krpm или лучше) массиве RAID 1/10, 5/50/6/60 любого нужного вам размера - мы храним наши на FC SAN LUN, обычно на группе дисков «tier 2»/10 krpm. Журналы должны быть на отдельной ОЧЕНЬ БЫСТРОЙ (15 krpm) небольшой (10 ГБ или меньше?) паре массивов RAID 1 - мы храним наши на FC SAN LUN, обычно на очень маленькой группе дисков «tier1»/15 krpm или на группе «tier0»/ssd.

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

Мы храним нашу базу данных master/tempdb вместе с нашими обычными базами данных, но вы можете разбить ее на отдельный массив данных LUN.

Надеюсь это поможет.

Связанный контент