Четверг, 25.04.2024, 00:13
Мой персональный сайт Добрым людям smart & sober

Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Калькулятор


Меню сайта
Календарь
«  Февраль 2011  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28


Форма входа


Архив записей
Мини-чат


Категории раздела


Наш опрос
В чем заключается ваш смысл жизни
Всего ответов: 154
 
Главная » 2011 » Февраль » 16 » RAID-4 / RAID-DP — превращаем недостатки в достоинства
01:39
RAID-4 / RAID-DP — превращаем недостатки в достоинства
image
Когда я в прошлом посте написал, что Snapshots были, на момент появления систем NetApp их главной «фичей», я отчасти слукавил (а отчасти просто забыл), так как у них, на тот момент, была как минимум еще одна особенность, радикально выделяющая их из ряда «традиционных» систем хранения — это «RAID тип 4».
Это тем более интересно, так как никто больше такой тип RAID для использования в дисковых системах хранения данных не использует.
Почему же был выбран именно такой тип, в чем его преимущества, и почему никто больше такой тип RAID сегодня не использует?

Для тех, кто далек от теории рэйдостроения, напомню, что из шести стандартных типов RAID, описанных в научной работе, положившей начало их использованию, RAID тип 2 (с защитой кодом Хэмминга) не применялся в «живой природе», оставшись забавным теоретическим упражнением, RAID-1 (и его вариант RAID-10, или, иногда, как RAID-0+1) это защита данных автоматическим синхронным зеркалированием на паре (или нескольких парах) физических дисков, а RAID-3, 4 и 5 (позже к ним добавился RAID тип 6) — это так называемые «RAID с чередованием и четностью». Между собой они отличаются способом организации и хранения данных четности, а также порядком чередования данных. В обычно хорошо известном всем RAID-5, данные чередуются по дискам вместе с информацией parity, то есть parity специального диска не занимает.
В RAID-3 и 4 для информации parity выделен отдельный диск (Между же 3 и 4 разница в размере блока чередования — сектор в type 3 и группа секторов, блок — в type 4).

image

У RAID-4, то есть «RAID с блочным чередованием и четностью на выделенном диске», есть одно важное достоинство. Его можно увеличивать в размерах, просто добавляя в RAID физические диски, и при этом нет необходимости перестраивать полностью весь RAID, как, например, обстоит дело в случае RAID-5. Если вы используете 5 дисков под данные (и один под parity) в RAID-4, то для того, чтобы увеличить его емкость, вы можете просто добавить в него один, два, и так далее дисков, и емкость RAID-массива немедленно увеличится на объем добавленных дисков. Никакого длительного процесса перестроения недоступного для использования RAID-массива, как в случае RAID-5, не нужно. Очевидное, и очень удобное на практике преимущество.

image

Отчего же тогда RAID-4 не применяют повсеместно вместо RAID-5?
Он имеет одну, но очень серьезную проблему — производительность на записи.
Дело в том что каждая операция записи блока на дисках RAID, сопровождается записью для обновления блока parity на диске Parity. Это означает, что сколько мы ни добавим к наш массив дисков, между которыми будет распараллелен ввод-вывод, он все равно весь упрется в один единственный диск — диск parity. По сути производительность RAID-4, в «классическом» его применении, ограничена производительностью диска Parity. Пока на этом диске не прошла запись обновления содержимого лежащих на нем блоков parity, все остальные диски, хранящие данные, крутятся и ждут завершения этой операции.

Отчасти эта проблема была решена в RAID-5, где блоки parity также распараллеливаются по дискам, как и блоки данных, и проблема «бутылочного горла» в отношении диска parity была отчасти решена, что, впрочем, не означает, что RAID-5 лишен всех недостатков, скорее наоборот, это, на сегодня, наихудший тип RAID из всех широко применяемых, страдающий и от ненадежности, и от низкой производительности, о чем я писал в статье «Почему RAID-5 — mustdie?».

Особо останавливаясь на вопросах производительности (о надежности читайте статью выше) следует отметить, что RAID-5 имеет одну, но очень серьезную «родовую травму», изначально конструктивно присущую этому типу RAID вообще (типов 3,4,5 и 6 — «чередование с четностью») — малой производительности на произвольной (random) записи. Этот аспект в реальной жизни очень важен, так как объемы произвольной, случайной по характеру, записи в общем трафике хранения довольно значительны (достигая 30-50%), и падение производительности на записи напрямую влияет на производительность хранилища вообще.

Этой проблемой «болеют», повторюсь, все «классические» системы хранения, использующие RAID такого типа (3, 4, 5 и 6).
Все, кроме NetApp.

Каким образом NetApp удалось решить сразу и проблему «бутылочного горла» с диском parity, и проблему низкой производительности при random write?
Тут нам опять придется вспомнить структуру WAFL, о которой я уже писал ранее.
Как сказал по этому поводу инженер NetApp Kostadis Roussos: «Почти любая файловая система сегодня лежит поверх того или иного RAID. Но только WAFL и RAID на NetApp при этом знают друг о друге столько, чтобы взаимно использовать возможности, и компенсировать недостатки друг друга». Это действительно так, ведь для WAFL уровень RAID есть просто еще один логический уровень data layout внутри самой файловой системы. Напомню, что NetApp не использует аппаратные RAID-контроллеры, предпочитая строить RAID средствами своей файловой системы (аналогичный подход позже выбрала ZFS со свои RAID-Z)

Что же это за «взаимные возможности»?
Как вы помните из моего рассказа про WAFL, она устроена таким образом, что данные на ней, однажды записанные, в дальнейшем не перезаписываются. В случае же необходимости внести изменения содержимого внутри уже записанного файла, выделяется место в пространстве свободных блоков, запись измененного блока проводится туда, а затем указатель на содержимое старого блока переставляется на новый блок, бывший пустым, а теперь несущий новое содержимое.

Такая стратегия записи позволяет нам превратить случайную (random) запись в последовательную (sequental). А раз так, мы можем делать запись максимально эффективным способом — «полным страйпом» предварительно подготовив его, и собрав все «перезаписи», нацеленные в разные участки дисков, в одну удобную для записи область. То есть вместо перезаписи отдельных блоков, записывая в один прием готовую, сформированную «полосу» данных, разом на все диски RAID, включая и предварительно вычисленную parity всего страйпа на соответствующий ему диск. Вместо трех операций чтения-записи — одна.
Ни для кого не секрет, что sequental операции значительно быстрее и удобнее для системы, чем операции типа random.

image

image

Запись «полным страйпом», то есть на все диски RAID с чередованием, это максимально желанный алгоритм записи для такого типа RAID. Именно для этого на RAID-контроллерах наращивают объемы кэш-памяти, достигающих на high-end системах весьма впечатляющих размеров (и стоимости). Чем больше кэш на запись в традиционных массивах, и чем дольше в нем «зависает» блок данных, пришедший с сервера на запись на диск, тем больше шансов на то, что в этом кэше однажды соберется из таких блоков «полный страйп», и его можно будет слить на диски максимально выгодно.
Именно поэтому write-back кэши RAID-контроллеров стремятся сливать (flush) данные на диски пореже, и обязательно нуждаются в автономном питании своей памяти от батарейки для сохранения блоков данных, ожидающих своей очереди в кэше.

С ростом объемов дисков NetApp, как и все другие, столкнулась с необходимостью обеспечить повышенную надежность хранения данных RAID. Именно по этой причине, начиная с 2005 года, именно RAID-DP, NetApp-овская реализация RAID-6, является рекомендуемой, предпочтительной, и вообще «конфигурацией по умолчанию». В этом NetApp также первенствует, так как RAID -DP, защищая, как и RAID-6, от потери данных при потере двух дисков разом (например, сбое во время ребилда ранее отказавшего диска), не ухудшает показатели производительности, в отличие от RAID-6, в сравнении с RAID-5 или RAID-10.

Причины этому все те же. Ситуация у «других вендоров» с RAID-6, по сравнению с RAID-5 еще более ухудшается. Принято считать, что производительность RAID-6 падает по сравнению с RAID-5 на 10-15%, а по сравнению с RAID-10 на 25-35%. Теперь надо проводить не только чтение-запись одного блока parity, но надо делать это для двух разных групп блоков.
Однако RAID-DP по прежнему не нуждается в этом, причины этому все те же — случайная запись в произвольное место массива превращается в нем усилиями WAFL в последовательную запись в заранее выделенное пространство, а такая запись осуществляется гораздо быстрее и выгоднее.

Подтверждение того, что использование RAID-4 (и его варианта — RAID-DP, аналога RAID-6) на системах NetApp объективно не приводит к ухудшению производительности — авторитетные тесты производительности дисковых систем SAN (Storage Performance Council, SPC-1/SPC-1E) и NAS (SPECsfs2008), которые NetApp демонстрирует на RAID-4 (и RAID-DP с 2005 года).
Более того, системы NetApp с RAID-DP на равных соревнуются там с системами с RAID-10, то есть показывают производительность значительно выше привычной для «RAID с чередованием и четностью», сохраняя высокую эффективность использования пространства, ведь, как вы знаете, на RAID-10 можно использовать под данные всего 50% от купленной емкости, в то время, как на RAID-DP, при более высокой надежности, но сравнимом c RAID-10 быстродействии, и для стандартного размера группы, получается доступного места для данных свыше 87%.

Таким образом, остроумное использование совместно двух «фич» — RAID-4 и режима записи в WAFL, позволило получить преимущества от них обоих, одновременно избавившись от их недостатков. А дальнейшее развитие RAID-4 в RAID-DP, обеспечивающего защиту от двойного дискового сбоя, позволило повысить надежность хранения данных не жертвуя при этом традиционно высокой производительностью. А это непросто. Достаточно сказать, что использование RAID-6 (аналога RAID-DP, с эквивалентно высоким уровнем защиты), по причине низкой производительности на записи не практикуется и не рекомендуется для primary data больше никем из производителей систем хранения.

Как стать одновременно богатым, сильным и здоровым (и чтобы за это ничего не было)? Как обеспечить высокую степень защиты данных от сбоя, при этом не пожертвовав ни высокой производительностью, ни объемом дискового пространства?
Ответ знает NetApp.
Обращайтесь к его компаниям-партнерам ;)

UPD: в главной роли на фото в заставке статьи — NetApp FAS2020A из хозяйства хабраюзера foboss.

комментарии (49)

  • Так-так, если я все правильно понял, то можно обойтись без WAFL, если использовать SSD как parity-диск.
    И это будет намного дешевле текущих решении NetApp. Ничего против NetApp не имею, но хочется мм… съэкономить. Ждем таких RAID-ов.
    • Вы напрасно считаете SSD какой-то панацеей. На запись SSD значительно менее эффективен, чем на чтение. По оценке, которой я склонен доверять, производительность в IOPS на random write для типового enterprise-class SSD всего в полтора-два раза выше, чем у 15KRPM SAS.
      И это мы еще не трогаем проблемы с конечностью ресурсов записи у SSD.

      SSD действительно очень эффективен на random read небольшими блоками, за что его и любят, но странно считать его совсем уж лишенным недостатков и универсальным решением.

      Насчет «дешевле» есть обоснованные сомнения. Тем более о том, во что это «дешевле» обойдется в долгосрочной перспективе.
      • Ясно, спасибо за просвещение неразумного…
        • То есть даже если SSD будет быстрее SAS на запись в пять раз, это будет значить, что такой parity disk не будет тормозить RAID только при размере RAID-группы размером в пять SAS data-disks, а это, по сути, совсем немного, типовой размер RAID-групп у NetApp для SAS сейчас это 20-24, максимально возможный — 28.
          Обычно стремятся максимально увеличивать длину RAID-группы, так как это увеличивает ее быстродействие.

          А с использованием Flash есть другая, в крайний год очень популярная идея — использовать его как своеобразный persistent cache для данных. У NetApp такое устройство тоже есть, расскажу парой постов далее.
      • А что насчет надежности parity диска. что произойдет при выходе его из строя? А если после сбоя parity диска выйдет еще один диск из строя?
        • В случае RAID-DP выносится выход из строя любых двух дисков в RAID-группе. Двух parity, parity и data, двух data, по любому. Данные сохраняются. При потере двух parity остаются все data. При потере одного — данные второго восстанавливаются за счет избыточности на оставшихся дисках.
          То есть все как обычно для RAID, например RAID-6.

          Сразу после выхода из строя (или при спрогнозированном выходе) начинается переливание всего уцелевшего на диск hot spare, который всегда должен быть в системе, все что не читается — восстанавливается из избыточных байтов.
          Сбойный (или ненадежный) диск начинает внутри системы прогоняться тестами, и, если удается восстановить его работу, возвращается в hotspare, если нет — отмечается как убитый, и заменяется.
      • В таком случае есть вариант RAM диска. Но это уже совсем энтерпрайз… Да и сложно сделать RAM диск на парочку терабайтов…
  • RAID10 как производительный вариант используют не для линейного чтения/записи, а для случайного доступа, и как раз в этом виде и показывается его высокая производительность, RAID-DP может конкурировать в этом режиме работы?
    • А почему нет? Чтение не является его слабой стороной, а запись превращяется в линейную. Цифры должны быть сопоставимы.
      • Чтение в десятке быстрее, т.к. можно одновременно читать в разных дисков в разных местах. Простой пример — raid10, 4 диска, файл записывается на 4 диска разом, чтобы записать надо записать удвоенный размер файла на 4 диска, т.е. условно по пол файла на диск, а чтобы прочитать файл надо прочитать по четвертинке с диска, т.е. с каждого диска по половине информации о файле, записанной на диск, в других вариантах рэйдов надо с каждого диска прочитать всю информацию о файле, записанную на диск.
        • В RAID10 мы так же читаем с 4х дисков одновременно если их там 4.
        • Чтение сравнимо и у RAID-5, на равном количестве дисков.
          Чтение успешно параллелится, это не проблема ни для RAID-5,6 ни для RAID-10, вот с записью начинаются проблемы.
          А запись это, оценочно, до 30% операций.

          Поэтому улучшение характеристик записи у RAID-4/DP естественным образом улучшает показатели массива в целом, так как мы минимум втрое ускоряем 30% всех операций.
          • Ну, все зависит от приложений, есть и «пишущие» системы, и «читающие».
            • Согласен, но если мы возьмем, например, характерную для ынтерпрайза задачу — OLTP-базу, то принято считать, что это 100% random и 66%/33% read/write.

              Да, для вебсервера, отдающего статику это будет 100% random read, для системы видеонаблюдения — 100% sequental write.
              Но все же 100% только read или только write то какой-то небольшой нишевой случай.
    • Упс. Промахнулся. Вот ответ.
      habrahabr.ru/company/netapp/blog/113427/#comment_3663033
  • > RAID10 как производительный вариант используют не для линейного чтения/записи, а для случайного доступа

    Так и я о том же. На сегодня sequental операции сравнительно редки, строго говоря это только задачи backup-restore, ну и всякие специфические, типа видеозаписи и иногда DSS-операции в базах.

    > RAID-DP может конкурировать в этом режиме работы?

    Именно тут он и конкурирует. Поскольку random-записи в WAFL автоматически, вследствие его организации, превращаются в sequental, это снимает основную проблему в RAID-c-чередованием-и-четностью — высокий penalty при random-записи.

    Простой пример — никто из вендоров не демонстрирует результаты на SPC-1 на RAID-5 или RAID-6, например. А NetApp показывает их на RAID-DP, и во многих случаях они оказываются сравнимыми с результатами на RAID-10.
  • > RAID-10, или, иногда, как RAID-0+1

    RAID-10 это совсем не RAID-0+1, отличия в том что у одного сначала половину дисков в Stripe, а потом Mirror, а у другого сначала Mirror и потом собираем Stripe.
    • На этот счет существуют разные мнения, и чтобы не устраивать тут спор остроконечников с тупоконечниками, что в каком порядке зеркалится и страйпится, я не хотел останавливать на этом внимания, речь тут, собственно, не об этом.
  • Адаптек давно решил проблему батареек у рейда с помощью ионистора и маленькой флешки.
    • Не вполне понял к чему был этот комментарий, поясните?
      • К утверждению, что требуется батарея для рейда, чтобы юзать wb-кеш.
  • Никогда не понимал почему стоимость «батарейки» для контроллеров превышает $100
    3ware adaptec
Просмотров: 793 | Добавил: Breger | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024