Erasure coding — стирающее кодирование
Что такое стирающее кодирование (erasure coding) и чем оно отличается от RAID?
Стирающее кодирование (Erasure coding (EC)) — это метод защиты данных, при котором данные разбиваются на фрагменты, расширяются и кодируются с использованием избыточных фрагментов данных и хранятся в наборе различных местоположений или на различных носителях.
В случае сбоя диска или повреждения данных данные можно восстановить из сегментов, хранящихся на других дисках. Таким образом, EC может помочь увеличить избыточность данных без накладных расходов или ограничений, присущих различным реализациям RAID.
Как работает стирающее кодирование?
Стирающее кодирование работает путем разделения единицы данных, такой как файл или объект, на несколько фрагментов (блоков данных) и последующего создания дополнительных фрагментов (блоков четности), которые можно использовать для восстановления данных. Для каждого фрагмента четности алгоритм EC вычисляет значение четности на основе исходных фрагментов данных. Фрагменты данных и четности хранятся на нескольких дисках для защиты от потери данных в случае сбоя диска или повреждения данных на одном из дисков. Если такое событие происходит, фрагменты четности можно использовать для восстановления блока данных без потери данных.
Например, система хранения может использовать конфигурацию кодирования 5+2 для распределения данных по нескольким физическим дискам. В этой конфигурации алгоритм EC разбивает каждую единицу данных на пять фрагментов данных, а затем добавляет два фрагмента четности, которые вычисляются на основе исходных данных. Каждый фрагмент хранится на отдельном физическом диске. В результате система хранения должна включать не менее семи дисков.
В конфигурации 5+2 данные четности занимают 40% общей емкости хранилища. Такая конфигурация также допускает отказ до двух дисков, независимо от того, содержат ли диски фрагменты данных или фрагменты четности. Однако EC достаточно гибко, чтобы поддерживать широкий спектр конфигураций. Например, при кодировании 17+3 каждая единица данных будет разделена на 17 сегментов, а затем добавлены три сегмента четности. Хотя для этой конфигурации требуется как минимум 20 физических дисков, она может поддерживать одновременный отказ до трех дисков, снижая при этом накладные расходы на контроль четности составляют менее 18 %.

При стирающем кодировании данные хранятся на разных дисках,
чтобы защитить их от любой точки отказа.
Стирающее кодирование позволяет защитить данные без необходимости их полной репликации, поскольку данные могут быть восстановлены из фрагментов четности. Например, в простой конфигурации 2+1 блок данных разбивается на два фрагмента с добавлением одного фрагмента четности для защиты. Если приложение пытается получить данные из любого из сегментов данных, и эти сегменты доступны, операция выполняется как обычно, даже если сегмент четности недоступен.
Однако, если первый фрагмент данных доступен, а второй фрагмент данных недоступен, или наоборот, данные считываются из первого фрагмента данных и фрагмента четности. Вместе эти два фрагмента используются для восстановления данных, которые были во втором фрагменте, что позволяет продолжать операции с данными в случае выхода диска из строя.
Стирающее кодирование или RAID
Стирающие коды, также известные как коды прямого исправления ошибок, были разработаны более 50 лет назад для обнаружения и исправления ошибок при передаче данных. С тех пор эта технология была адаптирована для хранения данных, чтобы помочь защитить данные в случае сбоя диска или повреждения данных. В последнее время EC набирает популярность для использования с большими наборами объектных данных, особенно в облаке. По мере роста объемов данных и более широкого внедрения объектных хранилищ, EC становится все более жизнеспособной альтернативой RAID.
RAID
RAID опирается на два основных механизма защиты данных: зеркалирование и чередование с контролем четности. Зеркалирование — одна из основных форм защиты данных. При отдельном использовании он называется RAID 1. В этой конфигурации несколько копий данных хранятся на двух или более дисках. Если один диск выходит из строя, данные можно получить с одного из других дисков без прерывания обслуживания. Зеркалирование легко внедрить и поддерживать, но оно использует большой объем ресурсов хранения, как и любая форма репликации.
Чередование с контролем четности, называемое RAID 5, распределяет данные по нескольким жестким дискам и добавляет блоки контроля четности для защиты данных. Если диск выходит из строя, недостающие данные можно восстановить, используя данные на других дисках. Однако RAID 5 может одновременно поддерживать сбой только одного диска. По этой причине некоторые поставщики предлагают системы хранения RAID 6, которые могут обрабатывать до одновременный отказ до двух дисков. Различные конфигурации RAID также можно комбинировать, как, например, RAID 10, в котором для защиты данных используется зеркальное отображение дисков и чередование данных без четности.
Различные конфигурации RAID уже много лет являются неотъемлемой частью работы центров обработки данных, поскольку технология хорошо изучена и доказала свою надежность в защите данных для широкого спектра рабочих нагрузок. Однако RAID сопряжен со значительными трудностями. Например, зеркалирование неэффективно, когда речь идет об использовании ресурсов, а чередование с контролем четности может защитить в лучшем случае от одновременного отказа только двух дисков.
Другая проблема с RAID связана с емкостью. По мере того, как диски становятся больше, требуется гораздо больше времени, чтобы восстановить диск, если он выйдет из строя. Это может не только повлиять на производительность приложения, но и увеличить риск потери данных. Например, если диск выходит из строя в конфигурации RAID 5, восстановление этого диска может занять несколько дней, в результате чего массив хранения остается в уязвимом положении до завершения восстановления. Вышедший из строя диск также может повлиять на производительность приложения.
Стирающее кодирование
В некоторых случаях вместо RAID можно использовать стирающее кодирование, чтобы устранить его ограничения. Стирающее кодирование может превзойти RAID 6 с точки зрения допустимого количества отказавших дисков, что повышает уровень отказоустойчивости. В конфигурации стирающего кодирования 10+6 16 фрагментов данных и четности распределены по 16 дискам, что позволяет обрабатывать до шести одновременных отказов дисков.
Стирающее кодирование также намного более гибкое, чем RAID, конфигурация которого довольно жесткая. С применением EC организации могут внедрить систему хранения для удовлетворения своих конкретных требований к защите данных. Кроме того, EC может сократить время, необходимое для восстановления отказавшего диска, в зависимости от конфигурации и количества дисков.
Несмотря на эти преимущества, EC имеет серьезный недостаток: его влияние на производительность. Стирающее кодирование — это операция, требующая интенсивной обработки. Алгоритм EC должен работать со всеми данными, записанными в хранилище, а фрагменты данных и четности должны быть записаны на все участвующие диски. Если диск выходит из строя, операции восстановления создают еще большую нагрузку на ресурсы ЦП, поскольку данные должны восстанавливаться на лету. Конфигурации RAID, будь то зеркалирование или чередование с контролем четности, гораздо меньше влияют на производительность и часто могут ее улучшить.
Почему стирающее кодирование полезно?
Крупные службы облачного хранения, такие как Amazon Simple Storage Service (S3), Microsoft Azure и Google Cloud, широко используют стирающее кодирование для защиты своих обширных хранилищ данных. Стирающее кодирование оказалось особенно полезным для защиты объектно-ориентированных систем хранения, а также распределенных систем, что делает его хорошо подходящим для служб облачного хранения. При этом стирающее кодирование также применяется в локальных системах хранения объектов, таких как платформа хранения объектов Dell EMC Elastic Cloud Storage (ECS).
Стирающее кодирование может быть полезно для больших объемов данных и любых приложений или систем, которые должны выдерживать сбои, таких как системы дисковых массивов, сети данных, приложения распределенного хранения, хранилища объектов и архивные хранилища. Большинство современных вариантов использования связаны с большими наборами данных, для которых использование RAID нецелесообразно. Для поддержки EC инфраструктура должна обеспечивать необходимую производительность, поэтому ее основной вариант использования связан с крупными облачными сервисами.
Стирающее кодирование часто рекомендуется для таких хранилищ, как резервные копии или архивы — типы наборов данных, которые довольно статичны и не требуют интенсивной записи. Тем не менее, стирающее кодирование находит применение во множестве систем, пытающихся избежать высоких затрат на репликацию. Например, многие реализации распределенной файловой системы Hadoop (HDFS) теперь используют EC для снижения накладных расходов, связанных с хранением избыточных данных в узлах данных. Кроме того, платформы хранения объектов, такие как Hitachi Content Platform, теперь поддерживают стирающее кодирование для защиты данных.
Каковы преимущества стирающего кодирования?
Хотя RAID по-прежнему может быть полезным инструментом для защиты данных, EC предлагает несколько важных преимуществ, которые следует учитывать при планировании хранения данных:
- Лучшее использование ресурсов. Методы репликации, такие как зеркальное отображение RAID 1, используют большой процент емкости хранилища для копий данных. Кодирование стирания может значительно сократить потребление памяти, сохраняя при этом защиту данных. Точный объем экономии емкости будет зависеть от конфигурации кодирования, но какой бы она ни была, она все равно приведет к повышению эффективности хранения и снижению затрат на хранение.
- Меньший риск потери данных. Когда RAID-массив состоит из дисков большой емкости, восстановление отказавшего диска может занять очень много времени, что увеличивает риск потери данных, если другой диск выйдет из строя до того, как будет восстановлен первый. Стирающее кодирование может обрабатывать гораздо больше одновременных отказов дисков, в зависимости от конфигурации кодирования, что означает меньший риск потери данных в случае отказа диска.
- Большая гибкость. RAID имеет тенденцию ограничиваться относительно фиксированными конфигурациями. Хотя поставщики могут реализовывать собственные конфигурации RAID, большинство реализаций RAID довольно стандартны. Стирающее кодирование обеспечивает гораздо большую гибкость. Организации могут выбрать соотношение сегментов данных к четности, которое наилучшим образом соответствует их конкретным рабочим нагрузкам и системам хранения.
- Большая долговечность. Стирающее кодирование позволяет организации настроить систему хранения, обеспечивающую высокую степень доступности и надежности. Например, Amazon S3 обеспечивает устойчивость объектов на уровне 99,999999999 % в нескольких зонах доступности. В отличие от RAID 6, который может выдержать только два одновременных отказа диска, система на основе EC может быть сконфигурирована так, чтобы обрабатывать значительно больше отказов.
При планировании своих стратегий хранения организации должны учитывать несколько факторов, в том числе способы защиты от потери данных и обеспечения аварийного восстановления. Простая репликация — это один подход, а RAID — другой, стирающее кодирование — третий.
Каждая стратегия имеет свои преимущества и недостатки. Однако с ростом объема данных и продолжающимся переходом к объектовому хранению EC суждено набрать обороты. Стирающее кодирование позволяет организациям удовлетворять свои потребности в масштабируемости и по-прежнему защищать свои данные, не неся при этом высоких затрат на полную репликацию. Тем не менее, ни одна технология не может процветать, не адаптируясь к отраслевым изменениям, и EC, используемый сегодня, через пять лет может выглядеть совсем иначе.
Источник: https://www.techtarget.com/searchstorage/definition/erasure-coding