Должен ли я использовать свою базу данных вне конфигурации RAID 5?


13

Я слышал, что производительность записи RAID 5 может быть ужасающей в разы. Хотя мне нужна избыточность, которую она обеспечивает, я не хочу жертвовать временем вставки / обновления базы данных.

Это то, о чем я должен беспокоиться, и если да, что бы рекомендовать для обеспечения избыточности при хорошей производительности записи?


1
Какая БД? Oracle + RAID 5 раньше был нет-нет. Не уверен, что это все еще так.
cagcowboy

В этом конкретном примере база данных работает на MySql и MSSQL.
Скотт Саад

Немного больше конкретики в вопросе относительно приложения (смесь чтения / записи в БД, требования времени и времени восстановления) могут получить более подходящий ответ; эти вещи могут иметь значение в лучшем решении.
Джей Стивенс

Ответы:


23

RAID 10 обычно рекомендуется, так как ввод / вывод очень случайный. Вот пример. Расчеты немного упрощены, но довольно представительны.

Допустим, у вас есть массив из 6 дисков, и ваши диски могут выполнять 100 операций ввода-вывода в секунду (IOPS). Если у вас 100% операций чтения, будут использованы все шесть дисков, и у вас будет около 600 IOPS для RAID 10 и RAID 5.

В худшем случае 100% пишет. В этом случае производительность RAID 10 будет снижена вдвое (поскольку каждая запись идет на два диска), поэтому он получит 300 IOPS. RAID-5 преобразует каждую запись в две операции чтения, за которыми следуют две операции записи, поэтому он получит 1/4 производительности или около 150 IOPS. Это довольно большой успех.

Фактический шаблон чтения / записи будет где-то между этими двумя крайностями, но именно поэтому RAID 10 обычно рекомендуется для баз данных.

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


22

Транзакционные базы данных

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

  • Чтение в блоке четности

  • Чтение в старом блоке (при условии, что он еще не находится в кэше) для XOR значения с блоком четности.

  • Запись нового блока четности (старый блок четности XOR старый блок данных XOR новый блок данных)

  • Запись нового блока данных.

Если система не использует кэширование с обратной записью, это означает, что все эти операции находятся на критическом пути для завершения ввода-вывода. Зачастую это происходит при записи в базу данных - фактически Microsoft (например) имеет программу сертификации оборудования SAN для использования с сервером SQL, которая требует от поставщиков гарантировать такое поведение. Иногда старое оборудование RAID-5 не использовало эту оптимизацию и должно было пересчитать соотношение по всей полосе.

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

RAID-50 находится где-то посередине, а том разделен на несколько томов RAID-5, которые в свою очередь чередуются. На RAID-50, составленном из групп с чередованием по схеме 3 + 1, запись генерирует не более трех дополнительных запросов ввода-вывода. Если вы чувствуете такую ​​склонность, вы можете рассматривать RAID-5 и RAID-10 как особые случаи RAID-50. RAID-50 в основном используется для обеспечения больших объемов на многих физических дисках

Существуют и другие схемы контроля четности, такие как RAID-6 (схема контроля четности с двумя избыточными дисками в каждом наборе). Современные диски достаточно велики, чтобы повторная сборка массива могла занимать довольно много времени - достаточно долго, чтобы риск отказа второго диска во время перестройка довольно значительная. RAID-6 снижает этот риск благодаря наличию второго диска с проверкой четности, для которого требуется три сбоя диска, которые могут привести к потере данных. Трюк, аналогичный схемам RAID-50, можно использовать для создания массивов RAID-60.

Наконец, одна зеркальная пара (известная как RAID-1) может обеспечить избыточность и достаточно хорошую производительность для некоторых задач. В частности, вы, вероятно, обнаружите, что RAID-1 обеспечивает достаточную пропускную способность для достаточно большого трафика журнала базы данных. Подробнее об этом ниже.

Если у вас высокая нагрузка на запись, вы, вероятно, получите выигрыш в производительности от тома RAID-10. Это может быть выигрышным, поскольку вы, вероятно, сможете получить требуемую пропускную способность с меньшего количества физических дисков, при условии, что на дисках достаточно места). Некоторые элементы, такие как журналы или временные области на сервере базы данных, должны быть на томах RAID-1 или RAID-10, поскольку они получают большой объем трафика записи.

бревна

Тома журналов характеризуются в основном последовательным шаблоном доступа к данным и, по сути, представляют собой кольцевой буфер, состоящий из команд типа «записать эти данные в этот блок». Они записываются как ядро ​​ядра СУБД как обработчик и обрабатываются как потребитель с помощью функции чтения журнала. Одна зеркальная пара на самом деле будет обрабатывать довольно много журнального трафика.

Чтение тяжелых систем и файловых серверов

В системах с большим объемом чтения, таких как хранилище данных, вы можете использовать один или несколько томов RAID-5. На файловом сервере доступ к диску будет в основном осуществляться на основе целого файла, поэтому при записи, вероятно, будет записано большинство блоков, которые в любом случае составляют блок четности. В этом случае производительность Penalyt для RAID-5 будет легче.

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

Кэширование с обратной записью и RAID-5

На SAN или внутреннем RAID-контроллере с кэшем с резервным питанием от батареи вы можете включить кэширование с обратной записью. Это кэширует записи и возвращает управление приложению. Контроллер сообщает о завершении ввода / вывода. Однако, это не обязательно записывает данные на диск немедленно. Это средство позволяет существенно оптимизировать операции чтения / записи с контролем четности RAID-5 и может снизить потери производительности при записи для томов RAID-5x.

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

Резюме

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

В чем-то вроде хранилища данных вы все еще можете жевать пространство с большими, сильно индексированными таблицами фактов, поэтому вы можете получить небольшую выигрышную цену с объемами данных RAID-5 или RAID-50. Однако журналы и базу данных tempdb все равно следует размещать на томе RAID-10, поскольку они, вероятно, будут выполнять большую работу во время обработки ETL. Однако экономия на диске, вероятно, будет довольно небольшой.


Кэш с обратной записью: если вы покупаете RAID-контроллер с кэш-памятью обратной записи с «батарейным питанием», обратите внимание, что батарея не входит в комплект. Убедитесь, что у вашего поставщика есть один.
Дэвид Хикс

Некоторые делают, некоторые нет. У меня есть довольно много Adaptec 2200, которые не поставляются с батареями. Некоторые идут с ними как стандарт.
ConcernedOfTunbridgeWells

1
У вас есть ошибка в вашем ответе. Вам не нужно читать каждый диск, чтобы пересчитать четность. Запись становится 2 чтения и 2 записи. Другие 12 дисков в вашем примере массива из 14 дисков не будут затронуты RAID5.
TorgoGuy

На самом деле, я верю, что мужчина прав. Вы можете прочитать и XOR четность со старым значением блока и снова с новым значением блока. Никогда не видел, что описано ранее, но это будет работать.
ConcernedOfTunbridgeWells

3

Ну, это сильно зависит от вашей ошибки / терпимости к риску. У RAID5 много проблем . У моего сервера БД в настоящее время есть два зеркальных диска, и если бы я увеличил их масштаб, я бы выбрал что-то с большей четкостью, возможно, RAID6 или RAID10.

Кроме того, если ваше приложение критично ко времени безотказной работы, я бы порекомендовал вместо этого использовать два сервера баз данных с репликацией: master-master или hot spare или что-то еще. RAID только помогает против сбоев диска, но на сервере может быть гораздо больше ошибок :)


3

Зависит от того, сколько ты пишешь.

Если это довольно легкое «веб-приложение», то вряд ли вы увидите снижение производительности на RAID5.

Если вы создаете хранилище данных объемом несколько ГБ с большими ETL, буфер записи на RAID 5 будет быстро переполнен, и вы попадете прямо в «низкую производительность записи» RAID 5.

Каждая запись RAID5 вызовет как минимум 3 записи (плюс расчет CRC). При буферизации это нормально и быстро (небольшие короткие всплески активности - отдельные записи обновлений и вставок). Если это постоянные записи (большие объемные вставки / обновления), то это будет замечено.

Это баланс между производительностью и пространством. RAID 10 (зеркало чередующихся дисков) обеспечивает как производительность, так и отказоустойчивость, но снижение емкости на 50%.

RAID5 дает большую емкость, хорошую производительность чтения, но низкую (большую) производительность записи.


2

RAID 1, это мой окончательный ответ

Причины:

зеркальная пара обеспечивает достаточную избыточность для неисправных дисков, а RAID продолжает функционировать до последнего диска.

Зеркальная пара дает большую производительность ввода-вывода для операций чтения, если вы аккуратно размещаете свои данные и индексы ... [подсказка: Используйте отдельные тома для данных и их индекса (ов)]. Вы можете добиться еще большей производительности, дуплексируя свои контроллеры.


Почему не RAID 1 + 0?
Брайан Ноблаух


2

Краткий ответ: нет.

Длинный ответ: если у вас нет очень маленькой базы данных или минимальных требований, нет. Извлечение данных в значительной степени зависит от операций дискового ввода-вывода в секунду, а накладные расходы на чередование будут со временем поглощать доступ к диску, особенно при длительных запусках запросов. Большинство баз данных работают в стиле RAID 10 или с определенными томами, содержащими разделы данных. Да, RAID 10 будет стоить вам в записи, но ваша производительность чтения (с правильной настройкой) будет расти .


1

Какую рекомендацию получить избыточность при хорошей производительности записи?

Большой кэш обратной записи. Увеличьте объем ОЗУ на вашем аппаратном RAID-контроллере или объем ОЗУ, доступный для вашего программного решения RAID (т. Е. Для MDADM в Linux увеличьте системную ОЗУ, всплывающие подсказки для MDADM, чтобы в противном случае использовать неиспользуемую системную ОЗУ в качестве кэша записи). Этот совет применим для заданных значений «большой» - если вы будете часто (5% времени?) Записывать данные со скоростью, достаточной для заполнения кеша записи, независимо от его размера, это не будет иметь большого значения.


1

На самом деле речь идет об отделении файлов данных, файлов журналов от файла ОС. Запись в журналы последовательно. Данные подвергаются множеству случайных операций чтения и некоторых случайных операций записи.

Создавая конфигурации RAID, которые поддерживают эти характеристики, вы значительно повышаете производительность

Raid 1 - зеркальное отображение отлично подходит для файлов журналов Raid 10 хорошо подходит для ваших файлов данных. Также стоит обратить внимание на разделение TempbDB и резервных копий на отдельные диски. Добавление файловых групп - это еще один способ повысить производительность. Когда дело доходит до SAN, это не так ясно. Это зависит от того, строите ли вы конкретные конфигурации рейдов для каждого LUN или полагаетесь на количество шпинделей.


0

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

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


0

Запуск базы данных из RAID5 обычно является ошибкой. Я видел это только в двух случаях: хорошо спроектированные базы данных, которые требовали интенсивного чтения с небольшим количеством операций записи, и базы данных, в которых «потеря пространства» из-за RAID5 не была политически жизнеспособной.

RAID5 разрушит производительность транзакций.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.