Оптимальная настройка RAID для SQL server

У нас есть бэкэнд базы данных SQL 2005 для нашего веб-сайта, в настоящее время около 10 ГБ. Читает гораздо больше, чем пишет, хотя точной статистики у меня нет.

мы обновляем наш сервер баз данных, и я думал о том, чтобы получить 4 диска и настроить их в двух массивах RAID 1 - один для файлов данных, а другой для файлов ОС и журналов. Будет ли это оптимальной настройкой или RAID 5 будет лучше для файлов данных? RAID 10 становится немного дорогим и, вероятно, для нас это перебор.

на этом этапе SQL Server должен хранить большую часть базы данных в ОЗУ (8 ГБ), но она будет расти, поэтому я не хочу полностью полагаться на это.

Edit: мы определенно хотим избыточности на рабочем сервере, поэтому RAID 0 сам по себе отсутствует. RAID 10 хорош, но может быть немного дорогим для нас.

10 ответов


ваша концепция использования независимых зеркал RAID 1 является правильной стратегией.

мы реализовали аналогичные сценарии на моей работе, и они работают очень хорошо.

рейд 1

RAID 1 дает вам скорость 1 диска для записи, но 2 диска для чтения.

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

при чтении из массива RAID 1 контроллер будет считывать с обоих дисков, поскольку они имеют одинаковые данные на них.

RAID 5

Это полезно для защиты больших объемов данных. Стоимость RAID 5 увеличивается намного медленнее, чем RAID 1 (или RAID 0+1, Когда вы делаете емкости за пределами размера отдельных дисков) для того же объема данных.

Если вы хотите защитить 600gb с помощью RAID 5, Вы можете этого добиться с приводами 4x200gb или приводами 3x300gb, требуя 800-900gb полного купленного космоса привода. RAID 1 будет 2x600gb дисками, требующими 1,200 gb купленного пространства (с 600gb дисками, являющимися довольно дорогими) или RAID 0+1, позволяющими использовать менее дорогие накопители (т. е.: 4x300gb или 6x200gb), но все еще требует в общей сложности 1,200 gb купленного пространства.

RAID 0+1

предлагает подобные преимущества как RAID 1 принимая его вверх по другой зазубрине с striping через диски. Я предполагаю, что если вас беспокоят более высокие одновременные чтения, вы также будете использовать мультипроцессоры/многоядерные. Вы будете обрабатывать несколько запросов одновременно,и поэтому чередование не поможет. Вы увидите лучшее преимущество на RAID 0+1 для отдельных приложений, использующих большие файлы данных, такие как редактирование видео.

когда я изучал эту же проблему некоторое время назад для клиента, я нашел эту статью очень интересной http://blogs.zdnet.com/Ou/?p=484. На второй странице он дикуссирует переход от RAID 0+1 к независимым массивам RAID 1, создавая много улучшений производительности. Это было в гораздо большем масштабе (диск 20 и диск 16 SAN), но те же концепции. Возможность SQL Server балансировать нагрузку на данные между несколькими томами, а не использовать только базовое неинформированное чередование RAID 0+1-отличная концепция.


Я бы потратил немного времени, убедившись, что ваша база данных эффективно индексируется; контролируйте ее для полного сканирования таблиц, убедитесь, что наиболее частые запросы читают как можно меньше данных; я бы взял эффективно разработанную базу данных на медленном диске над базой данных с неправильными индексами на SSDs.


учитывая, что чтения намного больше, чем записи, RAID 5 будет быстрее для ваших файлов данных.

Если возможно, используйте отдельный массив RAID 1+0 для файлов журнала транзакций.

EDIT: вам понадобится не менее 3 дисков для создания массива RAID 5.


имейте в виду, что ключевым показателем производительности будет скорость поиска, а не скорость передачи данных. То есть типичная база данных, привязанная к диску (поскольку ваша может стать по мере роста), будет ограничена количеством IOs в секунду, которое могут поддерживать диски, а не максимальной скоростью данных, которую они могут поддерживать для последовательного чтения.

Это означает, что если вам интересно, как использовать 4 диска (например), две пары RAID1 должны дать вам лучшую производительность, чем один массив RAID5 с 4 дисками. Конечно, ты не получит столько полезного хранения из двух пар RAID1.


учитывая небольшой размер базы данных, я бы использовал четыре 15krpm 2.5" SFF SAS-диска, настроенных как два отдельных зеркала RAID 1. Я бы запустил их через что-то вроде контроллера Adaptec 5805 PCI-e x 8 SAS. Для безопасности я поместил данные в один массив, а журналы-в другой. Bar memory-отображение всей базы данных, очень большой / дорогой SAN или использование SSDs я уверен, что это будет самая быстрая настройка за деньги.

надеюсь, что это помогает.


две вещи,

теория RAID 1 дает вам два диска для чтения, но не думайте, что это равно в два раза производительности. На самом деле это не так, обычно последовательное чтение spee заканчивается точно так же, как один диск. Удивительно, но это правда ... делайте тесты в реальном мире, не полагайтесь на теорию.

с учетом сказанного, я бы пошел с двумя рейдами 1...но не так, как вы сказали, один для ОС, другой для данных. У меня был бы небольшой раздел OS на одном из они, но определенно дают оба рейда sql server для данных. Дайте sql server все наборы, которые вы можете.

SQL Server может полосовать по парам, вы абсолютно не хотите идти с 0+1, несмотря на то, что кто-то здесь говорит. Они снова смотрят на теоретические критерии, не понимают, что sql server может полосовать все свои данные по дискам и может делать это оптимизированным способом.

Raid 1 предназначен только для избыточности данных...кроме этого, дайте как можно больше sql сервер, и пусть он делает свое дело...очень хорошо, что он делает.

У вас есть 0+1 и разбить его на два raid 1.....сделайте тестирование в реальном мире, вы будете удивлены, что быстрее для работы sql server.


RAID 5 хорош, если вы используете аппаратный контроллер с приличным количеством кэш-памяти с батарейной поддержкой. Выберите размер фрагмента и настройте БД таким образом, чтобы размер полосы (диски данных * размер фрагмента) был равен размеру записи БД. Убедитесь ,что ваш раздел данных [выровнен / кратен] размеру полосы.

в противном случае RAID 1+0 всегда является хорошим выбором для серверов БД.


Я бы также рекомендовал установить набор базовых значений, который позволяет вам делать более обоснованные прогнозы, чем просто поднимать палец в воздух (или спрашивать StackOverflow, кажется смутно и странно похожими на эти две концепции).

с некоторыми базовыми значениями вы также можете измерить эффективность ваших изменений и стать хорошей основой для будущих обновлений...

(Если не известно, возьмите некоторую литературу (или Википедию) по технике производительности. Это целая ветвь материала, которая занимается только этим типом проблем).


кстати, где я работаю, у них есть высокий конец san, который делает tablescan примерно за 2 минуты. Я разбил диски на простые наборы raid 1 и позволил sql server обрабатывать чередование...не Сан. За 2 минуты до 45 секунд.

есть и другие статьи в сети об этом...очень трудно заставить рейда "истинно верующих" принять это, поэтому я так подчеркиваю этот момент.


Я предпочитаю raid 10, который я уже настроил на моем сервере dell R210-II linux. Потрясающая производительность...