Помогите мне выбрать комбинацию уровней RAID для экземпляра SQL Server 2008

11

Я собираюсь восстановить один сервер IBM 3400 с нуля. Этот сервер выделен для экземпляра SQL Server 2008, работающего в Windows 2008 R2.

Я собираюсь сделать новую конфигурацию RAID. У меня есть 6 дисков SCSI 73 ГБ внутри машины и контроллер IBM ServerRAID 8K. Что было бы хорошим способом установить уровни RAID? Должен ли я иметь два, три или одно поле на моем контроллере?

Я собираюсь сделать одно из следующих решений:

  1. Используйте весь диск и создайте пул RAID 10.
  2. Используйте 4 диска для пула RAID 1e и используйте его для хранения данных базы данных и ОС, а другие 2 диска в пуле RAID 0 и используйте его для хранения журналов базы данных.
  3. Некоторая другая комбинация.

Лучше размер полосы больше?

Этот сервер будет подписчиком реплицированной базы данных. Его основной задачей будет создание отчетов и извлечение данных, при этом только агент репликации выполняет запись. Размер базы данных составляет около 90 ГБ.

adopilot
источник
Вы используете термины RAID1E и RAID10 взаимозаменяемо?
Джек говорит, попробуйте topanswers.xyz
Кроме того, 3x73 ~ 220 ГБ - насколько вы ожидаете, что ваша БД объемом 90 ГБ будет расти с каждым годом?
Джек говорит, попробуйте topanswers.xyz
@JackDouglas Эта база данных объемом 90 ГБ с 2006 года по настоящее время, я думаю, что она может вырасти в следующие два года максимум на 30%
пилот
Мне нравится чрезмерно выделять хранилище при создании сервера с нуля. Есть ли у вас хранилище второго уровня (например, SATA)? Это может быть очень удобно для приличного количества передышки, особенно когда вы попадаете в ситуацию с DR.
Джек говорит, попробуйте topanswers.xyz

Ответы:

6

Я голосую за вариант 1. Имейте в виду, что RAID 0 означает «нет защиты» - имеют ли значение ваши журналы? (да, они делают).

Это также имеет преимущество простоты

Документы SQL Server говорят:

Для оптимизированного параллелизма ввода / вывода используйте размер полосы 64 КБ или 256 КБ.

Но обычно хорошо идти с контроллером по умолчанию IMO

Джек говорит, попробуйте topanswers.xyz
источник
5

Заметки:

  • Двоичные файлы ОС + будут 40 ГБ
  • 6 дисков не оставляют вам много вариантов
  • Где вы хотите ваши резервные копии?
  • Пусть контроллер RAID выбирает размер полосы (зависит от уровня RAID). Это микрооптимизация, и вы увидите противоречивые данные
  • Скорость записи файла журнала определяет вашу пропускную способность
  • Вы должны предусмотреть свободное пространство = в 1,2 раза большую таблицу внутри вашего MDF для перестроения индекса
  • RAID 0 = идиотский на сервере, который имеет данные любого значения

Я бы пошел на один массив RAID 10

ГБН
источник
4

Я бы выбрал либо два тома RAID1 с тремя зеркалами в каждом, либо RAID10 с чередованием двух наборов из трех зеркал.

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

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

Подойдет ли вам два тома RAID1 или один RAID10, зависит от вашего приложения. Если вполне вероятно, что вам нужно все пространство, перейдите на RAID10, в противном случае я бы предложил один том для системы и индексов, а другой - для страниц данных. Если вы выберете два тома, убедитесь, что ваш контроллер позволяет расширять RAID1 до RAID10 на случай, если вам потребуется расширение.

Саймон Рихтер
источник
+1 за упоминание проблемы зеркалирование не решает (хотя бы само по себе). Можно настроить очистку для более регулярного выполнения в Linux, то же самое для Windows? Однако вы повторяете миф о том, что индексы и данные в идеале должны быть разделены - есть аргумент для разделения журналов, но индексы и данные лучше всего объединять вместе (по максимально возможному количеству шпинделей)
Джек говорит, что попробуйте topanswers.xyz
Я думаю, что должна быть возможность настроить более частые проверки - однако производительность базы данных обычно сильно падает, поэтому я бы предпочел использовать дополнительные диски и меньше проверок.
Саймон Рихтер
Обычно я держу индексы раздельно, поэтому я могу использовать различное поведение кеша и чтения - чтение полной таблицы обычно выигрывает от чтения, тогда как сканирование индекса делает это реже.
Саймон Рихтер
В моей системе Debian / usr / share / mdadm / checkarray по умолчанию запускается с флагом --idle, поэтому я не ожидаю заметного снижения производительности. В случае OP это будет обрабатываться контроллером RAID, и я предполагаю, что он сделает это независимо от того, есть ли у вас 2 или 3 зеркала, так что попадание (если оно есть) будет в любом случае.
Джек говорит, попробуйте topanswers.xyz
Что касается сканирования индекса, справедливо, но я бы сказал, что это микрооптимизация, а не общие рекомендации по настройке :) Я собираюсь спросить в чате, чтобы узнать, что думают другие - не стесняйтесь вбрасывать ...
говорит Джек попробуйте topanswers.xyz
3

Я согласен с Дугласом. Один общий raid-10 - хорошее начало, если у вас нет свободного места на диске. Меньший размер полосы лучше для доступа к БД. Использование разных разделов только ускоряет работу на одном разделе.

Особенность raid-0 заключается не только в том, что данные могут быть извлечены из резервных копий или могут быть удалены, но также в случае простоев каждый раз, когда ломается ваш диск. Ваша машина обрабатывает некоторые данные, когда простои в течение нескольких дней не имеют значения? Даже при поддержке NBD для получения нового диска может потребоваться около шести дней.

Антти Рыцёля
источник