Теория RAID и применение RAID в Oracle системах
По просьбе Грюна выкладываю. Думаю, что вместо понятия Оракл можно применить любую СУБД. ТЕОРИЯ RAID И ПРИМЕНЕНИЕ RAID В ORACLE СИСТЕМАХGaja Krishna Vaidyanatha, Quest Software Inc.ОБЗОРRAID, последний рубеж…эти вояжи Oracle DBA, кто смело вел дела с поставщиками систем хранения данных большой емкости и их заявлениями, и с помощью здравого смысла добился оптимальной производительности ввода/вывода. Много заблуждений и недопонимания окружает технологию RAID. Эта статья даст определение того, что такое RAID и чем не является RAID. Она также объяснит, как работает RAID, включая различия между каждым RAID-уровнем.Кроме того, статья даст вам рекомендации по применению каждого типа RAID с помощью взятых из реальной жизни примеров, которые иллюстрируют оптимизацию ввода/вывода на Больших Базах Данных Oracle (VLDBs ). Основная цель этой статьи – последовательно разъяснить тонкости успешного решения проблем ввода/вывода с учетом подходящей для каждого конкретного случая конфигурации RAID. Несмотря на то, что эта статья не предназначена сделать из вас “RAID-Эксперта”, она предоставит вам достаточный объем информации, чтобы Вы могли поддержать грамотный диалог с вашим Системным Администратором или Администратором Систем Хранения Данных.Мое намерение – развеять мифы, окружающие тесный союз Oracle и RAID и позволить вам заняться более важными делами в жизни, например, выпить кружку-другую пива. Все конфигурации оборудования, рассматриваемые в этой статье, были испытаны на базах данных Oracle размером от 200Гб – 1Tб, однако данные правила применимы ко всем базам данных Oracle.ЧТО ТАКОЕ RAID?Помимо лидирующей марки средства от насекомых, RAID представляет собой технологию для расширения пропускной способности системы ввода/вывода и обеспечения возможности хранения избыточных данных. В зависимости от того, кого Вы спросите, это будет означать Избыточный Массив Недорогих Дисков или Избыточный Массив Независимых Дисков. Но если Вы спрашиваете меня, то я предпочитаю термин “Недорогих”, поскольку при этом, когда я прошу больше дисков, мои друзья из финансового отдела чувствуют себя лучше. И я буду использовать этот термин.Концептуально RAID представляет собой использование двух или более дисков для того, чтобы создать один логический диск, в котором физические диски работают совместно с целью предоставить больший размер дискового пространства и лучшую пропускную способность. На сегодняшний день технология RAID, поддерживаемая многими поставщиками систем хранения данных, стала неотъемлемой частью основы подсистемы ввода/вывода и фундаментом для технологий хранения данных. Применение технологии RAID переопределило методы проектирования, используемые для построения систем хранения, поддерживающих базы данных Oracle. ЧЕМ НЕ ЯВЛЯЕТСЯ RAID?RAID НЕ является лекарством от всех сложных вопросов, связанных с вводом/выводом. Это не панацея от всех ваших проблем с вводом/выводом. Один из мифов о RAID утверждает, что эта технология способна исключить для DBA или SA необходимость самим беспокоиться о проблемах, связанных с вводом/выводом, особенно в случае с системами, основанными на патентованных RAID-решениях. Как и я, Вы вероятно уже побывали по крайней мере на одной презентации, где представитель поставщика уверял вас, что если бы Вы купили их марку дисковых массивов и запустили бы их “easy to use” утилиту конфигурации, Вы бы смогли просто забыть и никогда больше не вспоминали бы о каких-либо проблемах ввода/вывода. Они будут говорить вам, что теперь Вы можете делать более важные вещи, например, настраивать приложение, и что они возьмут на себя все ваши проблемы, связанные с вводом/выводом. И Вы никогда не столкнетесь с ними вновь!Действительно, потенциальная выгода от настройки приложения не может быть сравнима с оптимизацией чего-либо еще. Однако, ваш “сон” будет грубо прерван тем фактом, что некоторые проблемы производительности системного уровня, которые Вы пытаетесь решить, стали хуже из-за вашей слепой веры поставщикам систем хранения данных. Запомните, они простые смертные как Вы и я, и они точно не обладают волшебными силами над их собственными дисками! Диск не может вращаться быстрее, чем предусмотрено его спецификацией, не может обслуживать объемы передаваемых данных, которые превышают его пропускную способность, и не может поддерживать огромное количество параллельных операций ввода/вывода. Это действительно так, независимо от того, кто ваш поставщик оборудования.Одним таким примером подчинения слепой вере является сюжет, когда поставщики систем хранения данных говорят вам, что “Вы не должны беспокоиться о том, где Вы физически размещаете ваши таблицы и индексы”, и что они могли бы быть размещены на одном и тот же наборе дисков. Далее они будут утверждать, что их системы хранения данных и RAID позаботятся обо всех ваших трудах по администрированию и освободят от головной боли в вопросах, касающихся размещения табличных пространств. Неправда! Мой опыт показывает (и я имел время от времени возможность подтвердить это для многих из моих уважаемых заказчиков), что физическая независимость таблиц и индексов является обязательной для приложений, которые используют таблицы и индексы совместно при доступе к данным. Здесь не может быть двух вариантов.Среды пакетной обработки являются типичным примером такого использования, когда приложение выполняет диапазонные сканирования индексов на больших таблицах с последующим чтением соответствующих табличных блоков. В этом случае физическое размещение таблиц и индексов на одном наборе дисков значительно ухудшит производительность. Это действительно так, даже когда архитектура диска поддерживает в своем кэш-буфере сохранение “данных целой дорожки”, чтобы компенсировать стоимость дорогих операций подвода головки диска. RAID может и будет обеспечивать отличную производительность ввода/вывода, если применить его с тем же вниманием, которое администраторы баз данных исторически уделяли планированию простых дисковых решений, т.е. отделению таблиц от соответствующих индексов, если они используются совместно при доступе к данным.С другой стороны, если RAID применен бессистемно, он может ухудшить ситуацию. Некоторые вещи в жизни не меняются…и это одна из них. Здесь также следует упомянуть, что RAID не обладает божественной силой защитить вас от сбоев, связанных с шиной диска, хост-адаптером, интерфейсом, контроллером диска, системой охлаждения, системой питания, сервером, ошибками приложения и человека. Думаю, Вы должны знать! ПОЧЕМУ ВЫ ДОЛЖНЫ УДЕЛЯТЬ ВНИМАНИЕ RAID?Хотя часто системный администратор или администратор баз данных выбирает RAID, следуя “технической моде”, или чтобы произвести впечатление на своих боссов, давайте сосредоточим внимание на двух основных технических причинах перехода на технологию RAID. В контексте производительности системы и ввода/вывода это масштабируемость (scalability) и высокая доступность данных (high availability). Как уже обсуждалось ранее, масштабируемость и доступность данных данных – это секреты нашей безопасной работы в качестве консультантов или администраторов баз данных.Ни один администратор баз данных не был уволен (я надеюсь что это так) из-за того, что база всегда находилась в работоспособном режиме, или потому, что система продолжала обеспечивать быстрое время отклика независимо от уровня нагрузки. В последние несколько лет размер баз данных Oracle вырос очень сильно. Сейчас Oracle фактически поддерживает базы данных размером в питабайты. Вместе с ростом возросла и сложность, с увеличением сложности и размера баз данных появились проблемы управления вводом/выводом, требуемым для таких гигантских систем. Даже если бы мы могли проигнорировать все остальные факторы настройки, размер баз данных сам по себе требует новой техники масштабирования производительности ввода/вывода из-за растущих требований приложений.Рисунок 1 иллюстрирует сказанное выше и то, почему RAID становится неотъемлемой частью в Oracle системах с помощью сравнения верхних ограничений между двумя основными версиями Oracle:ПозицияOracle7Oracle8 и вышеРазмер базы данных32 терабайтаПроизведение (65533 файлов * Размер наибольшего файла, поддерживаемого на вашей Операционной Системе)Табличные пространства102265536Кол-во файлов данных на БД102265533Кол-во столбцов на таблицу2541000Кол-во столбцов на индекс1632Кол-во экстентов на таблицуНеограниченно**НеограниченноКол-во столбцов LOB на таблицу1 LONG/LONGRAW1000 LOBSМакс. размер LOB 2 гигабайта4 гигабайтаМакс. размер поля CHAR255 байт2000 байтМакс. размер поля VARCHAR22000 байт4000 байтРисунок 1* Зависит от Операционной Системы** Доступно, в Oracle 7.3 и выше “Масштабируемость Oracle Системы есть прямая функция масштабируемости подсистемы хранения данных”В дополнение к большему размеру и возросшей сложности сформулируем такие термины как “критически важная система” (“mission critical”), “электронная коммерция” (“e-business”) и “24х7хбез простоев” (“24x7xforever”), и мы найдем еще больше преимуществ от использования RAID. Требования к доступности данных корпоративной системы выросли до круглосуточной работы с еще большим объемом данных, интегрируемых в “хранилища данных предприятия” (“enterprise data stores”) и еще большим количеством пользователей, обращающихся к этим данным.С ростом и расширением бизнес использования этих данных, компании стали сильно зависеть от работы своих приложений и баз данных. Сегодня требование к доступности в 99.999% (чертовы пять девяток) и выше - не редкость для критически важных систем.Эти требования означают, что дисковые сбои не могут стать причиной “бурных аплодисментов публики”. Сбои дисков, приводящие к остановке базы данных или приложения, ведут к потере годовых доходов и репутации. Из-за сильной конкуренции на рынке и регулятивных вопросов многие виды бизнеса не могут позволить себе выдержать такие сбои даже на короткий период времени. Суть сказанного проста: системы хранения данных требуют масштабирования производительности ввода/вывода, соразмерно увеличению объемов данных и без какой-либо потери доступности. RAID предлагает именно это.3 ОСНОВНЫХ ПРИНЦИПА RAIDКогда Вы говорите RAID, 3 термина являются наиболее важными и существенными. Первый – это страйпинг (striping ), второй – зеркалирование (mirroring ) и третий – контроль по четности или просто четность (parity).ЧТО ТАКОЕ СТРАЙПИНГ? Страйпинг – это процесс разделения данных на отдельные части и распределение их на несколько дисков, которые составляют логический том, по принципу “Разделяй и Властвуй”. В результате, “логический том” обладает большим размером и лучшей пропускной способностью ввода/вывода, чем отдельный диск. Страйпинг целиком основан на линейном характере роста производительности за счет добавляемых в том дисков с целью увеличения размера и пропускной способности ввода/вывода логического тома. Увеличение пропускной способности есть результат того, как выполняются операции чтения/записи в stripe-томе.Представьте, что Вы находитесь в бакалейном магазине. Вы и две сотни ваших ближайших друзей и соседей делаете недельный шоппинг. Теперь предположим, что подойдя к кассам Вы обнаружили, что работает только одна из них. Этот бедный кассир может справиться только с ограниченным количеством покупателей в час. Очередь начинает постепенно расти. Тоже самое верно в отношении вашей подсистемы ввода/вывода. Конкретный диск может обслуживать определенное количество операций ввода/вывода в секунду. Все что более этого, и запросы начинают вставать в очередь. Теперь остановитесь и представьте как здорово, когда Вы пришли в магазин и увидели, что все 20 касс открыты. Вы выберете самую короткую очередь и сделаете покупку практически без потери времени. Страйпинг имеет похожий эффект для вашей подсистемы ввода/вывода. Создавая отдельный том из порций данных, размещенных на нескольких дисках, Вы можете линейно увеличивать возможности обработки запросов ввода/вывода, суммируя пропускную способность каждого диска. Теперь при обработке многочисленных запросов ввода/вывода к файлу , расположенному на stripe-томе, они могут быть обслужены несколькими дисковыми устройствами в логическом томе, так как запросы разделены между несколькими дисками. Таким образом, все устройства в stripe-томе могут обслуживать многочисленные запросы ввода/вывода более эффективно. Принцип функционирования “связный и независимый”, определенный для всех устройств в логическом томе, подходит как для операций чтения, так и для операций записи. Необходимо заметить, что страйпинг сам по себе не уменьшает “время отклика” для обслуживаемых запросов ввода/вывода. Однако, он обеспечивает предсказуемое время отклика и способствует достижению лучшей производительности за счет балансирования запросов ввода/вывода между несколькими дисковыми устройствами в stripe-томе.Рисунок 2 показывает 4х-секционный stripe-том (v1) из 4 дисков (1-4). Здесь данные в файле (Данные1) будут распределены на 4 части между 4 дисками (Данные11-Данные14)Диск1Диск2Диск3Диск4Данные11Данные12Данные13Данные14Данные21Данные22Данные23Данные24Рисунок 2ЧТО ТАКОЕ ЗЕРКАЛИРОВАНИЕ?Зеркалирование (mirroring) – это процесс одновременной записи данных на другой член (диск) того же логического тома. Зеркалирование обеспечивает защиту данных путем записи абсолютно одинаковой информации на каждый член тома. Дополнительно зеркалирование может обеспечить улучшение операций чтения, поскольку запросы на чтение могут быть обслужены с любого члена тома. Если Вы когда-либо делали ксерокопирование документа перед тем, как выслать по почте оригинал, значит Вы продублировали данные (создали зеркальную копию). Один из распространенных мифов утверждает, что зеркалирование занимает “вдвое больше” времени для записи данных. Однако во многих тестах и замерах производительности наблюдаемые накладные расходы составляли около 15-20%.Рисунок 3 иллюстрирует 4х-секционный зеркалированный stripe-том (v1) из 8 Дисков (1-8). Полоса данных (Данные1) в файле на томе v1 будет распределена между Дисками (1-4) и затем зеркально отображена на Дисках (5-8). Диски (1-4) и (5-8) называются “Члены Зеркала” тома v1.Диск1Диск2Диск3Диск4Диск5Диск6Диск7Диск8Данные11Данные12Данные13Данные14Данные11Данные12Данные13Данные14Данные21Данные22Данные23Данные24Данные21Данные22Данные23Данные24Рисунок 3ЧТО ТАКОЕ КОНТРОЛЬ ПО ЧЕТНОСТИ?Контроль по четности (или просто четность) – это термин, связанный с обработкой ошибок. Некоторые уровни RAID выполняют вычисления при чтении и записи данных. Эти вычисления в основном производятся при операциях записи. Тем не менее, если один или более дисков в томе недоступны, то в зависимости от уровня RAID, даже операции чтения могут потребовать контроля по четности для восстановления частей данных на сбойных дисках. Контроль по четности используется для определения места расположения записи и проверки достоверности каждой полосы данных, записываемой в stripe-том. Четность применяется в тех типах RAID, которые не поддерживают зеркалирование. Алгоритмы контроля по четности поддерживают возможности Кода Коррекции Ошибок (ECC ), который вычисляет код четности для заданной ‘полосы или порции’ данных в пределах RAID-тома. Размер порции данных зависит от операционной системы и аппаратного обеспечения. Коды, генерируемые алгоритмом контроля по четности, используются для воссоздания данных в случае дискового сбоя(ев). Поскольку алгоритм контроля по четности может работать в обратную сторону, он может восстановить данные, потерянные в результате дисковых сбоев. Это тоже самое, как решать математическую задачу, где Вы знаете ответ (checksum) и часть вопроса, например, 2+X =5, чему равен X? Конечно, X=3.Рисунок 4 иллюстрирует 4х-секционный stripe-том RAID 3 с контролем по четности – v1 с 5 Дисками (1-5). Полоса данных (Данные1) в файле на томе v1 будет разделена между Дисками (1-4) и четность для Данных1 будет храниться на Диске5. Существуют другие типы RAID, которые хранят четность по-другому. Они будут освещены в следующих разделах.Диск1Диск2Диск3Диск4Диск5Данные11Данные12Данные13Данные14Четность1Данные21Данные22Данные23Данные24Четность2Рисунок 4ОБОБЩЕНИЕСтрайпинг дает лучшую производительность ввода/вывода, зеркалирование обеспечивает защиту данных и контроль по четности (когда применимо) предоставляет возможность проверить данные. Используя эти 3 аспекта RAID, мы можем достичь масштабированной, защищенной от сбоев производительности ввода/вывода с высокой доступностью данных.ТИПЫ RAIDRAID может быть реализован как программное решение (software-based), где управляющее программное обеспечение обычно поставляется с OS, или в виде дополнительного ПО “Volume Manager” (например, Veritas Volume Manager). Этот тип RAID также известен как host-based RAID. Такой тип реализации налагает небольшие накладные расходы, поскольку он потребляет ресурсы памяти, пропускной способности и CPU сервера. Обычно эти расходы не являются причиной для беспокойства, но должны быть учтены в планах загрузки ресурсов сервера.RAID может быть представлен решением аппаратного уровня, реализованным в форме микрокоманд в выделенных контроллерных модулях, которые подключают к серверу. Эти контроллеры являются внутренними по отношению к серверу, на котором реализован RAID. Этот тип RAID также известен как встроенный controller-based RAID.RAID может быть также реализован, с использованием внешних контроллеров. Этот тип называется “bridge-based” реализацией и не является предпочтительным, поскольку приводит к более длительным временам обслуживания (“service times”) запросов ввода/вывода. Это обусловлено более длинным каналом ввода/вывода между дисками и сервером. Такая реализация как правило типична для “half-Fiber” и “half-SCSI” подсистем ввода/вывода. Она также распространена в системах хранения данных, которые поддерживают несколько хостов, работающих на нескольких операционных системах. “Bridges” также имеют тенденцию к насыщению (перегрузке), когда система занята запросами ввода/вывода. Предпочтение должно отдаватся hardware-based RAID по сравнению с software-based реализацией, или host-based RAID по отношению к bridge-based RAID. УРОВНИ RAIDИзначально RAID представлял собой очень простой метод логического объединения двух или более дисков, но, как и для всех вещей в нашей индустрии, для него потребовалось наличие большего выбора опциональных возможностей, чтобы удовлетворять различным требованиям. Сегодня наиболее популярны уровни RAID от 0 до 7, но из-за своеобразного способа, которым мы считаем в нашем мире, они дают нам более 8 вариантов. Различия между уровнями основаны на различных конфигурациях ввода/вывода, достигаемых за счет использования нескольких дисков. Из-за свойственной им природы, эти конфигурации предлагают различные уровни и типы защиты данных и характеристики производительности.RAID 0: Этот уровень RAID – ‘обычная’ файловая система, в которой реализован страйпинг. Потеря данных возможна при сбое любого диска. Данные просто разносятся по нескольким дискам. Этот уровень предоставляет хорошую производительность чтения/записи, но без возможности восстановления данных. Рисунок 1 иллюстрирует концепцию страйпинга в логическом томе RAID 0.RAID 1: В очень простых терминах этот уровень RAID обеспечивает зеркалирование и, следовательно, полную избыточность данных. Его часто называют ‘зеркалированный диск’. В большинстве случаев, логический том, который видит операционная система, состоит из двух или более физических дисков. Однако для приложения или базы данных он виден как один логический том. Когда система записывает данные на этот том, она пишет точную копию данных на все члены логического тома. По сравнению с RAID 0, этот уровень RAID требует удвоенного объема дискового пространства. Дополнительно может быть получен некоторый выигрыш при параллельном чтении с двух членов зеркала. По сравнению с отдельным диском, RAID 1 удваивает возможности обработки запросов на чтение с логического тома. На этом уровне RAID не осуществляется контроль по четности. Рисунок 2 иллюстрирует концепцию зеркалирования в томе RAID 1.RAID 0+1: “Сначала Страйпинг, затем Зеркалирование того, что Вы получили”. Этот уровень RAID комбинирует уровни 0 и 1 (страйпинг и зеркалирование). Он также обеспечивает хорошую производительность операций чтения и записи, а также избыточность данных без накладных расходов на контроль по четности. При дисковом сбое восстановление данных не требуется, поскольку данные читаются с уцелевшего члена зеркала. Этот уровень RAID очень широко распространен и наиболее часто применяется для приложений с интенсивным характером записи. Наибольшее неудовлетворение вызывает его стоимость, так как он требует в два раза больше дисковой памяти. Чтобы компенсировать эту стоимость, Вы должны потратить некоторое время на осознание требований к производительности и доступности данных в вашей системе. Рисунок 3 иллюстрирует концепцию страйпинга и зеркалирования в RAID 0+1 томе. Заметьте однако, что если одна из порций данных (скажем Данные11 на Диске 1) становится недоступной из-за сбоя на Диске 1, член зеркала (расположенный на Дисках 1-4) становится целиком недоступен. Это очень важное соображение, так как потеря целого члена зеркала снижает возможности обслуживания операций ввода/вывода в томе на 50%.RAID 1+0: “Сначала Зеркалирование, затем Страйпинг того, что Вы получили”. Этот уровень RAID имеет ту же функциональность, что и RAID 0+1, но лучше подходит для систем с высокими требованиями к доступности данных. В этом случае при потере одного диска члена зеркала, член зеркалированного stripe-тома не становится полностью недоступным. Здесь нужно отметить, что потеря одного диска члена зеркала не уменьшает на 50% возможности обслуживания операций ввода/вывода. С учетом ограничений аппаратной части, RAID 1+0 должен быть предпочтительным методом для конфигураций, которые комбинируют страйпинг и зеркалирование.Рисунок 5 иллюстрирует концепцию RAID 1+0. Заметьте, что если одна порция данных (скажем Данные11 на Диске 1) становится недоступной из-за дискового сбоя на Диске 1, другие диски члена (Диски 2-4) остаются доступными. Только Диск 1 недоступен, однако Диски 2-4 все еще доступны для обслуживания запросов ввода/вывода. Здесь нужно отметить, что RAID 10 является производным от RAID 1+0 с похожими характеристиками производительности и доступности, но с некоторыми отличиями в реализации. Диск1Диск2Диск3Диск4Диск5Диск6Диск7Диск8Данные11Данные11Данные12Данные12Данные13Данные13Данные14Данные14Данные21Данные21Данные22Данные22Данные23Данные23Данные24Данные24Figure 5RAID 2: Этот уровень RAID объединяет страйпинг и избыточность/защиту данных, обеспечиваемую с помощью контроля по четности. По сравнению с RAID 1, этот метод требует меньше дискового пространства, но необходимость вычислять и записывать информацию контроля по четности замедляет операции записи. Этот тип RAID был одной из ранних реализаций концепции “страйпинг с контролем по четности”, использующей известный код Хемминга, но позже он был замещен уровнями RAID 3, 5 и 7. В настоящее время этот уровень RAID применяется очень редко.RAID 3: Аналогично RAID2, на этом уровне RAID для обеспечения избыточности данных используется алгоритм ECC, но вся информация о четности хранится на одном диске. Однако четность для этого уровня RAID хранится на бит/байт уровне в противоположность уровню блок/порция данных. RAID 3 постепенно набирает популярность, но все еще не очень широко распространен. Он лучше всего подходит для приложений, реализующих концепции витрин данных (data mart)/хранилищ данных (data warehouse). Такие приложения поддерживают небольшое количество пользователей, но требуют производительности для массированных операций последовательного ввода/вывода с интенсивной передачей данных. При условии, что операции полного табличного сканирования и/или операции диапазонного сканирования индексов являются нормой для данного приложения и популяция пользователей мала, RAID 3 может стать вашей палочкой-выручалочкой. Рисунок 4 иллюстрирует физическую компоновку и характеристики логического тома RAID 3.RAID 4: Этот уровень RAID представляет собой тоже самое, что и RAID3, но с контролем по четности на уровне блока. Применяется очень редко.RAID 5: Сегодня это несомненно одна из наиболее распространенных реализаций RAID. На этом уровне RAID избыточность данных обеспечивается с помощью контроля по четности подобно уровням RAID 2, 3, 4 и 7, но четность хранится вместе с данными. То есть информация о четности распределена по всем дискам, входящим в логический том. Для многих сред применения RAID 5 является очень привлекательным выбором, поскольку требует минимальных затрат дискового пространства для хранения четности и обеспечивает хорошую производительность операций чтения случайной природы и “легких” операций записи. RAID 5 предоставляет лучший показатель числа операций ввода/вывода в секунду (IOPS ) c поддержкой обслуживания многочисленных параллельных запросов ввода/вывода. Он не должен применяться для приложений с интенсивным характером операций записи, так как непрерывный процесс чтения дорожки данных (stripe), вычисления нового значения четности и записи дорожки обратно на диск значительно замедлит операции записи.Исключение из этого правила, которое необходимо упомянуть, составляет случай, когда подсистема ввода/вывода имеет значительные объемы “кэша по записи” и дополнительные расходы, накладываемые алгоритмами ECC, измеряются и подтверждаются анализом как минимальные. Определение “значительные” я оставляю на усмотрение читателя, но в общих чертах кэш по записи, измеряемый многими гигабайтами, может считаться значительным.Однако, для многих систем ухудшение производительности операций записи может быть существенным даже при наличии “значительного кэша по записи”. Это зависит от количества операций записи и объема каждой из них. Как и RAID 3, RAID 5 лучше всего подходит для приложений, реализующих концепции витрин данных/хранилищ данных, но может поддерживать большое число пользователей, выполняющих операции ввода/вывода случайной природы вместо операций последовательного ввода/вывода.Рисунок 6 показывает 4х-секционный логический том RAID 5 с реализацией страйпинга, где данные и информация контроля по четности распределены по всем дискам. Таблица иллюстрирует физическое размещение полос данных (Данные1 – Данные4) с соответствующей им информацией о четности, которая распределена по всем 5 дискам логического тома.Диск1Диск2Диск3Диск4Диск5Данные11Данные12Данные13Данные14Четность1Данные21Данные22Данные23Четность2Данные24Данные31Данные32Четность3Данные33Данные34Данные41Четность4Данные42Данные43Данные44Рисунок 6RAID 6: Для этого уровня RAID используется более сложный алгоритм контроля по четности и избыточность данных обеспечивается за счет использования улучшенного многомерного алгоритма контроля по четности. RAID 6 сохраняет 2 набора информации о четности для каждого блока данных и тем самым, по сравнению с RAID 5, еще более замедляет операции записи.RAID 7: Это лучший вариант реализации RAID 3. Так как операции чтения и записи на RAID 3 выполняются в синхронном режиме, диск, хранящий коды четности, может стать узким местом при операциях записи (не всегда!). RAID 7 позволяет выполнять асинхронные операции чтения и записи, которые в свою очередь улучшают общую производительность ввода/вывода. RAID 7 имеет те же характеристики, что и RAID 3, где все коды четности хранятся на выделенном диске. RAID 7 – относительно новое устройство на рынке и у него есть прекрасный потенциал стать хорошей кандидатурой в тех проектах, которые исторически выбирали RAID 3. Используя RAID 7, Вы можете “убить сразу двух зайцев”.RAID-S: Если Вы используете системы хранения данных от компании EMC, то это ваша версия RAID 3/5. Она хорошо подходит для приложений, реализующих витрины данных/хранилища данных. Этот уровень RAID не должен применяться для приложений с интенсивным характером записи или большим объемом транзакций по тем же причинам, как и любая реализация RAID 5. Решения систем хранения данных от EMC обычно поставляются с большими объемами кэша по записи, но вообще говоря, эти объемы не достаточно большие, чтобы компенсировать дополнительные накладные расходы, налагаемые вычислением кодов четности при операциях записи.AUTO RAID: В Auto RAID (разработанным HP) контроллер совместно с интеллектуальным модулем, встроенным в подсистему ввода/вывода, динамически изменяет уровень RAID для определенного “дискового блока” на RAID 0+1 или RAID 5 уровень, в зависимости от характера недавних запросов ввода/вывода к этому блоку. История характера недавних обращений поддерживается с помощью понятия “рабочего набора” (который представляет собой совокупность дисковых блоков). По очевидным причинам существует только по одному рабочему набору для операций чтения и операций записи, и блок мигрирует между ними в зависимости от типа активности. В этом случае размер блока равен 64К.Иными словами, блок типа RAID 5 может быть динамически преобразован в RAID 0+1 блок, если “интеллект” определит и спрогнозирует, что этот блок будет главным образом использоваться в операциях записи. Контроллер может также выполнять обратную операцию, то есть конвертировать RAID 0+1 блок в RAID 5 блок, если он определит и спрогнозирует, что этот блок будет в основном использоваться в операциях чтения. Чтобы поддерживать такую конфигурацию, все диски массива используются во всех RAID томах, которые конфигурируются в этом массиве. Это означает, что нельзя достичь независимости физических дисков между томами.Хотя эта реализация RAID освобождает SA и DBA от значительного объема работ по поддержке, Вы должны с вниманием отнестись к внедрению этого уровня RAID на гибридных Oracle системах, которые могут в одно и то же время иметь характер интенсивной записи и чтения. Если нагрузка на вашей системе после периода с характером “интенсивного чтения” вдруг резко становится “интенсивной по записи”, процесс конвертации не может начаться немедленно, и ваши блоки могут остаться в режиме RAID 5 (фазе чтения) несмотря на то, что уже наступила фаза записи. Это происходит в периоды большой нагрузки на систему, когда процесс конвертации откладывается до более “спокойного” периода. Такое поведение может превалировать на гибридных Oracle системах с высокой нагрузкой.Если Вы внедряете эту технологию RAID на нагруженных Oracle системах, будьте готовы к непредсказуемым изменениям производительности ввода/вывода, если только ваша система не имеет стабильный “интенсивный по записи” или “интенсивный по чтению” характер нагрузки с редкими исключениями, например, задачами ночной пакетной обработки. Таким образом, при внедрении Auto RAID усилия должны быть направлены на разделение компонентов с интенсивным характером записи и интенсивным характером чтения по разным RAID массивам. Рисунок 7 представляет краткое резюме различных уровней RAID:Уровень RAIDФункциональностьRAID 0Страйпинг. Нет возможностей восстановления. Требуется производительность при операциях чтения/записи без возможностей восстановления данныхRAID 1Зеркалирование. Предоставляет возможности восстановления. Требуется производительность при операциях записиRAID 0+1/1+0Комбинация уровней 0 и 1. Возможности восстановления данных. Требуется производительность при операциях чтения и записи. Очень широко распространен, 1+0 лучше чем 0+1 по критерию доступности данныхRAID 2Ранняя реализация страйпинга с контролем по четности. Для вычисления четности используется код Хемминга. Был замещен RAID 3, RAID 5 и RAID 7. Применяется очень редкоRAID 3Страйпинг с контролем по четности на бит/байт уровне. Выделенный диск для хранения кодов четности. Возможности восстановления данных. Требуется производительность при операциях массированного чтения. Требования к объему передаваемых данных выше, чем к IOPS. Не очень широко распространен, но набирает популярностьRAID 4Страйпинг с контролем по четности на уровне блока. Выделенный диск для хранения кодов четности. Возможности восстановления данных. Применяется очень редкоRAID 5Страйпинг с контролем по четности на уровне блока. Коды четности распределены по дискам тома вместе с данными. Возможности восстановления данных. Требуется производительность небольших по размеру операций чтения случайной природы. Требования к IOPS выше, чем к объему передаваемых данных. Очень широко распространенRAID 6Страйпинг с алгоритмом многомерного контроля по четности на уровне блока. Возможности восстановления. Более медленная запись данных по сравнению с RAID 5. Применяется очень редкоRAID 7Тоже самое, что и RAID 3, но с