Я ищу несколько советов о том, как лучше настроить мои диски / разделы для SQL Server. Вот некоторые из моих основных проблем:
Как должны быть отделены файлы SQL (файлы данных, журналы, временные данные)?
Лучше ли RAID много HDD и разделить пространство или сделать несколько RAID с меньшим количеством дисков для каждого RAID?
Должны ли данные и файлы журналов иметь другой тип RAID?
Должны ли базы данных по умолчанию (master, msdb и т. Д.) Находиться на C: или они должны находиться в том же месте, что и другие файлы данных / журналов?
источник
Это большой вопрос «это зависит».
Я не могу ответить на вопрос о том, как создать для вас вопрос по отдельным 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? ,
Линия Bototm: узнайте свою рабочую нагрузку и свои возможности подсистемы ввода-вывода, а затем реализуйте соответственно.
Я надеюсь, что это полезно для вас.
PS Что касается базы данных tempdb, то здесь очень много червей, связанных с тем, как вы должны ее настроить, и есть все виды противоречивой информации. Я написал исчерпывающий пост в блоге о конфигурации файла данных tempdb в разделе «Заблуждения вокруг TF 1118» .
источник
Короткий ответ для серверов, которые я настроил, всегда был
Логи на отдельных физических дисках, рейд 1 или 10 (чередование + зеркалирование)
База данных на собственных дисках, в зависимости от производительности, обычно требуется RAID5
Много кеша на рейд контроллере
Желательно снова поместить свою ОС и файл подкачки Windows в отдельный массив, обычно это просто зеркало (Raid 1). Это позволяет разделить все операции записи, чтобы высокая производительность не затягивала все.
В прошлом я сталкивался с тем, что запись в базу данных + запись в журнал + запись в файл подкачки приведет к срыву массива Raid5, а производительность окажется в ручной корзине. Проблема в том, что ваша производительность будет хорошей в тестировании, разработке и т. Д. Но когда вы начнете повышать производительность и использование, эта проблема будет выглядеть «на ровном месте» и стремительно возрастают жалобы пользователей.
источник
Здесь есть намного лучшие ребята из MSSQL, чем у меня, но в целом я бы предложил следующее;
ОС и код на C: - это должны быть локальные диски, должна быть пара массивов RAID1 - для этого мы используем 2 x 2,5-дюймовых диска SAS 146GB 10krpm, но вы можете использовать 2 x SATA 7.2 диска. Данные должны быть на довольно быстром (10krpm или лучше) массиве RAID 1/10, 5/50/6/60 любого необходимого размера - мы держим наши на FC SAN LUN, обычно на дисковой группе 'tier 2' / 10krpm , Журналы должны быть на отдельной ОЧЕНЬ БЫСТРОЙ (15krpm) маленькой (10 ГБ или меньше?) Паре массивов RAID 1 - мы держим наши на FC SAN LUN, обычно на очень маленькой дисковой группе 'tier1' / 15krpm или на 'tier0' / ссд групп.
В любом случае вы хотите, чтобы каждый из этих блоков на отдельных шпинделях / массивах работал, конечно, все будет работать на одном диске, но я думаю, вы ищете баланс производительности и затрат.
Мы храним наш master / tempdb с нашими обычными базами данных, но вы можете разбить его на отдельный массив данных LUN.
Надеюсь это поможет.
источник