Я слышал, что производительность записи RAID 5 временами может быть ужасной. Хотя мне нужна обеспечиваемая им избыточность, я не хочу жертвовать временем вставки / обновления базы данных.
Это то, о чем я должен беспокоиться, и если да, то каковы были бы рекомендации, чтобы получить избыточность? с участием хорошая производительность записи?
Обычно рекомендуется использовать RAID 10, поскольку ввод-вывод очень случайный. Вот пример. Расчеты немного упрощены, но довольно представительны.
Допустим, у вас есть массив из 6 дисков, и ваши диски могут выполнять 100 операций ввода-вывода в секунду (IOPS). Если у вас 100% операций чтения, будут использоваться все шесть дисков, и у вас будет около 600 операций ввода-вывода в секунду для RAID 10 и RAID 5.
Наихудший сценарий - 100% запись. В этом сценарии производительность RAID 10 упадет вдвое (поскольку каждая запись идет на два диска), поэтому он получит 300 операций ввода-вывода в секунду. RAID-5 преобразует каждую запись в два чтения, за которыми следуют две записи, поэтому он получит 1/4 производительности или около 150 операций ввода-вывода в секунду. Это довольно большой успех.
Фактическая модель чтения / записи будет где-то посередине между этими двумя крайностями, но именно поэтому для баз данных обычно рекомендуется RAID 10.
Однако, если у вас нет загруженного сервера базы данных, вы даже можете использовать RAID-6. Я часто делаю это, если знаю, что база данных не будет узким местом, поскольку она обеспечивает гораздо большую безопасность, чем RAID 10 или RAID 5.
Транзакционные базы данных
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. На файловом сервере доступ к диску в основном будет осуществляться на основе всего файла, поэтому запись, вероятно, в любом случае будет записывать большинство блоков, составляющих блок четности. В этом случае пенализ производительности для 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. Однако экономия на дисках, вероятно, будет довольно небольшой.
Ну, это сильно зависит от вашей терпимости к ошибкам / риску. RAID5 имеет много вопросов. На моем сервере БД в настоящее время есть два зеркальных диска, и если бы я увеличил его, я бы выбрал что-то с большей четностью, возможно, RAID6 или RAID10.
Кроме того, если ваше приложение критично по времени безотказной работы, я бы, вероятно, порекомендовал вместо этого иметь два сервера баз данных с репликацией, мастер-мастер, горячий резерв или что-то еще. RAID помогает только против сбоев дисков, но на сервере может пойти не так много всего :)
Зависит от того, сколько вы пишете.
Если это довольно легкое «веб-приложение», то вряд ли вы заметите снижение производительности RAID5.
Если вы создаете хранилище данных на несколько ГБ с большими ETL, то буфер записи на RAID 5 быстро переполнится, и вы сразу же столкнетесь с «плохой производительностью записи» RAID 5.
Каждая запись в RAID5 вызывает как минимум 3 записи (плюс вычисление CRC). При буферизации это нормально и быстро (небольшие короткие всплески активности - обновления и вставки отдельных записей). Если это постоянные записи (большие объемные вставки / обновления), это будет замечено.
Это баланс между производительностью и пространством. RAID 10 (зеркало чередующихся дисков) обеспечивает производительность и отказоустойчивость, но снижает емкость на 50%.
RAID5 обеспечивает большую емкость, хорошую производительность чтения, но низкую (большую) производительность записи.
RAID 1, это мой окончательный ответ
Причины:
зеркальная пара обеспечивает достаточную избыточность для отказавших дисков, и RAID продолжает работать до последнего диска.
зеркальная пара обеспечивает большую производительность ввода-вывода при чтении, если вы аккуратно размещаете свои данные и индексы ... [подсказка: используйте отдельные тома для данных и их индекса (ов)]. Вы можете получить еще большую производительность, установив дуплекс для ваших контроллеров.
Для нескольких хороших руководств "почему бы и нет" это всегда было очень популярно среди администраторов баз данных Oracle, с которыми я работал ...
Битва против любого рейда 5 - http://www.miracleas.com/BAARF/
Короткий ответ: нет.
Длинный ответ: если у вас нет очень маленькой базы данных или очень минимальных требований, нет. Получение данных сильно зависит от операций ввода-вывода на диске в секунду, а накладные расходы на чередование со временем съедают доступ к вашему диску, особенно с длинными запусками запросов. Большинство баз данных работают в стиле RAID 10 или с определенными томами, содержащими разделы данных. Да, RAID 10 будет стоить вам записи, но производительность чтения (при правильной настройке) снизится. путь вверх.
каковы были бы рекомендации, чтобы получить избыточность с хорошей производительностью записи?
Большой кэш обратной записи. Увеличьте оперативную память на вашем аппаратном RAID-контроллере или оперативную память, доступную для вашего программного решения RAID (например, для MDADM Linux увеличьте системную оперативную память, MDADM предлагает использовать неиспользуемую системную оперативную память в качестве кеша записи). Этот совет справедлив для заданных значений «большой» - если вы будете часто (в 5% случаев?) Записывать данные со скоростью, достаточной для заполнения кеша записи, независимо от его размера, то это не будет иметь большого значения.
На самом деле речь идет об отделении ваших файлов данных, файлов журнала от файла ОС. Журналы записываются последовательно. Данные вызывают много случайных чтений и некоторые случайные записи
Создавая конфигурации RAID, поддерживающие эти характеристики, вы значительно повышаете производительность.
Raid 1 - зеркальное отображение отлично подходит для файлов журналов Raid 10 подходит для ваших файлов данных. Также стоит обратить внимание на разделение TempbDB и резервных копий на отдельные диски. Добавление файловых групп - еще один способ повысить производительность. Когда дело доходит до SAN, это не так однозначно. Это зависит от того, создаете ли вы определенные конфигурации рейдов для каждого LUN или полагаетесь на количество шпинделей.
В духе недавняя статья в блоге StackOverflow говоря, что мы не должны повторно представлять ответы, уже доступные в Интернете, я указываю на этот
RAID-5 не уникален с точки зрения избыточности, которую он обеспечивает, он просто делает это, потребляя меньше дополнительных дисков, чем некоторые альтернативы. Вы можете выбрать что-то другое с такой же или лучшей избыточностью и лучшей производительностью записи.
Запуск базы данных вне RAID5 обычно является ошибкой. Я видел это только в двух случаях: хорошо спроектированные базы данных с интенсивным чтением и небольшим количеством операций записи и базы данных, в которых «бесполезная трата места» из-за RAID5 не была политически жизнеспособной.
RAID5 снизит производительность транзакций.
Кроме того, если вы рассматриваете RAID5, посмотрите, сможете ли вы заставить RAID6 работать. Теоретическая надежность намного лучше, хотя реальная надежность часто хуже из-за незрелых реализаций.