Введение

Технология виртуализации хранения данных – это технология хранения данных.

RAID (/r//eɪ//d/; "избыточный массив недорогих дисков")

Данные распределяются по дискам одним из нескольких способов, называемых уровнями RAID, в зависимости от требуемого уровня избыточности и производительности. Различные схемы, или планировки распределения данных, обозначаются словом "RAID", за которым следует номер, например RAID 0 или RAID 1. Каждая схема, или уровень RAID, обеспечивает различный баланс между ключевыми задачами: надежность, доступность, производительность и емкость. Уровни RAID выше RAID 0 обеспечивают защиту от необратимых ошибок чтения секторов, а также от выхода из строя целых физических дисков.

Обзор

Многие уровни RAID используют схему защиты от ошибок, называемую "паритетом" – широко распространенный метод в информационных технологиях для обеспечения отказоустойчивости заданного набора данных. Большинство используют простой XOR, но RAID 6 использует два отдельных паритета, основанных соответственно на сложении и умножении в определенном поле Галуа или с применением коррекции ошибок Рида — Соломона. RAID также может обеспечить безопасность данных с использованием твердотельных накопителей (SSD) без затрат на полностью SSD-систему. Например, быстрый SSD может быть зеркалирован с механическим диском. Для того чтобы эта конфигурация обеспечивала существенное повышение скорости, требуется соответствующий контроллер, использующий быстрый SSD для всех операций чтения. Adaptec называет это "гибридным RAID".

Стандартные уровни

Первоначально существовало пять стандартных уровней RAID, но со временем появилось множество вариаций, включая несколько вложенных уровней и большое количество нестандартных уровней (в основном проприетарных). Уровни RAID и связанные с ними форматы данных стандартизированы Ассоциацией индустрии сетевых хранилищ (SNIA) в стандарте Common RAID Disk Drive Format (DDF):

RAID 0 состоит из разделения на блоки (striping) без зеркального отображения или паритета. По сравнению с объединенным томом (spanned volume), емкость RAID 0 тома такая же – она равна сумме емкостей дисков в наборе. Однако, поскольку разделение распределяет содержимое каждого файла по всем дискам в наборе, выход из строя любого диска приводит к потере всего RAID 0 тома и всех файлов. В отличие от этого, объединенный том сохраняет файлы на исправных дисках. Преимущество RAID 0 заключается в том, что скорость чтения и записи любого файла увеличивается в зависимости от количества дисков, поскольку, в отличие от объединенных томов, чтение и запись выполняются параллельно. По состоянию на 2014 год он не используется ни в одной коммерчески доступной системе. RAID 3 состоит из разделения на уровне байтов с выделенным паритетом. Все шпиндельные вращения дисков синхронизированы, а данные разделены таким образом, что каждый последовательный байт находится на отдельном диске. Паритет вычисляется для соответствующих байтов и хранится на выделенном диске паритета. RAID 3 редко используется на практике. RAID 4 состоит из разделения на блоки с выделенным паритетом. Ранее этот уровень использовался NetApp, но теперь в значительной степени заменен проприетарной реализацией RAID 4 с двумя дисками паритета, называемой RAID DP. Основное преимущество RAID 4 перед RAID 2 и 3 – параллелизм операций ввода/вывода: в RAID 2 и 3 для выполнения одной операции чтения требуется чтение всей группы дисков данных, в то время как в RAID 4 одна операция чтения не требует обращения ко всем дискам данных. В результате, больше операций ввода/вывода могут выполняться параллельно, что повышает производительность при небольших передачах данных. RAID 10 также минимизирует эти проблемы.

Гнездо (гибридный) RAID

В том, что первоначально называлось гибридным RAID, многие контроллеры хранения позволяют вкладывать уровни RAID друг в друга. Элементами RAID могут быть как отдельные диски, так и сами массивы. Массивы редко вкладываются более чем на один уровень в глубину. Конечный массив известен как верхний массив. Когда верхний массив является RAID 0 (например, в RAID 1+0 и RAID 5+0), большинство производителей опускают знак "+" (получая RAID 10 и RAID 50 соответственно). RAID 0+1: создает две полосы и зеркалирует их. В случае отказа одного диска, одно из зеркал выходит из строя, и в этот момент система фактически работает как RAID 0 без резервирования. Риск во время восстановления существенно выше, чем в RAID 1+0, поскольку необходимо прочитать данные со всех дисков в оставшейся полосе, а не только с одного диска, что увеличивает вероятность необратимой ошибки чтения (URE) и значительно увеличивает время восстановления. RAID 1+0: (см. RAID 10) создает полосатый набор из серии зеркальных дисков. Массив может выдержать множественные отказы дисков, пока ни одно из зеркал не потеряет все свои диски. JBOD RAID N+N: С JBOD (просто набор дисков) можно объединять диски, а также тома, такие как наборы RAID. При увеличении емкости дисков задержка записи и время восстановления резко возрастают (особенно, как описано выше, для RAID 5 и RAID 6). Разделение большего набора RAID N на меньшие подмножества и их объединение с помощью линейного JBOD позволит сократить время записи и восстановления. Если аппаратный RAID-контроллер не поддерживает вложение линейного JBOD в RAID N, то линейный JBOD можно реализовать с помощью программного RAID на уровне операционной системы в сочетании с отдельными подмножествами томов RAID N, созданными в одном или нескольких аппаратных RAID-контроллерах. Помимо значительного увеличения скорости, это также дает существенное преимущество: возможность начать линейный JBOD с небольшого набора дисков и впоследствии расширить общий набор дисками разного размера (со временем на рынке появляются диски большей емкости). Существует еще одно преимущество в виде аварийного восстановления (если подмножество RAID N выйдет из строя, данные на других подмножествах RAID N не будут потеряны, что сократит время восстановления).

Нестандартные уровни

Возможны многие конфигурации, отличные от базовых пронумерованных уровней RAID, и многие компании, организации и группы создали свои собственные нестандартные конфигурации, во многих случаях предназначенные для удовлетворения специализированных потребностей небольшой нишевой группы. Такие конфигурации включают следующее: Linux MD RAID 10 предоставляет общий драйвер RAID, который в своей конфигурации "near" по умолчанию использует стандартный RAID 1 с двумя дисками и стандартный RAID 1+0 с четырьмя дисками; однако он может включать любое количество дисков, включая нечетное. В конфигурации "far" MD RAID 10 может работать как в режиме striping, так и в режиме mirroring, даже с двумя дисками в расположении f2; это обеспечивает зеркальное отображение с полосатыми чтениями, давая производительность чтения, сравнимую с RAID 0. Стандартный RAID 1, реализованный в программном обеспечении Linux RAID, не использует полосатые чтения, но может выполнять чтение параллельно. Hadoop имеет систему RAID, которая генерирует файл четности, вычисляя XOR для полосы блоков в одном файле HDFS. BeeGFS, параллельная файловая система, имеет встроенные опции striping (аналогичные RAID0 на уровне файлов) и репликации (аналогичные RAID10 на уровне файлов) для агрегирования пропускной способности и емкости нескольких серверов и обычно строится поверх базового RAID, чтобы сбои дисков были прозрачными. Declustered RAID распределяет двойные (или более) копии данных по всем дискам (возможно, сотням) в подсистеме хранения, при этом сохраняя достаточный резервный объем для обеспечения отказоустойчивости нескольких дисков. Распределение основано на алгоритмах, создающих впечатление случайности. При выходе из строя одного или нескольких дисков недостающие копии восстанавливаются из резервного объема, также случайным образом. Поскольку восстановление выполняется со всех оставшихся дисков, оно происходит значительно быстрее, чем в традиционных RAID-массивах, что снижает общее влияние на клиентов системы хранения.

Реализация

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

На основе аппаратного обеспечения

Аппаратные RAID-контроллеры могут быть сконфигурированы через BIOS карты или Option ROM до загрузки операционной системы, а после загрузки операционной системы проприетарные утилиты конфигурации доступны от производителя каждого контроллера. В отличие от сетевых контроллеров для Ethernet, которые обычно могут быть полностью настроены и обслуживаться посредством стандартных парадигм операционной системы, таких как ifconfig в Unix, без необходимости использования сторонних инструментов, каждый производитель RAID-контроллеров обычно предоставляет собственные программные средства для каждой операционной системы, которую он поддерживает, обеспечивая зависимость от поставщика и способствуя проблемам с надежностью. Например, в FreeBSD для доступа к конфигурации RAID-контроллеров Adaptec пользователям требуется включить уровень совместимости с Linux и использовать инструменты Adaptec для Linux, что потенциально может скомпрометировать стабильность, надежность и безопасность их системы, особенно в долгосрочной перспективе. Некоторые другие операционные системы реализовали собственные универсальные фреймворки для взаимодействия с любым RAID-контроллером и предоставляют инструменты для мониторинга состояния RAID-томов, а также для облегчения идентификации дисков посредством мигания светодиодов, управления сигналами тревоги и назначения дисков в качестве горячих запасных непосредственно из операционной системы, без необходимости перезагрузки в BIOS карты. Например, такой подход был реализован в OpenBSD в 2005 году с использованием псевдо-устройства bio(4) и утилиты bioctl, которые предоставляют информацию о состоянии томов и позволяют управлять светодиодами, сигналами тревоги и горячими запасными дисками, а также датчиками (включая датчики дисков) для мониторинга состояния; впоследствии этот подход был принят и расширен NetBSD в 2007 году.

Основанные на прошивке и драйверах

Программная реализация RAID не всегда совместима с процессом загрузки системы и обычно непрактична для десктопных версий Windows. Однако аппаратные RAID-контроллеры дороги и являются проприетарными решениями. Чтобы восполнить этот пробел, были разработаны недорогие "RAID-контроллеры", которые не содержат выделенного чипа RAID-контроллера, а используют стандартный чип контроллера дисков или встроенную в чипсет функцию RAID, дополненные проприетарной прошивкой и драйверами. На ранних этапах загрузки RAID реализуется прошивкой, а после более полной загрузки операционной системы управление переходит к драйверам. Следовательно, такие контроллеры могут не работать при отсутствии поддержки драйверов для хост-операционной системы. Примером является технология Intel Rapid Storage Technology, реализованная на многих материнских платах потребительского уровня. Поскольку требуется минимальная аппаратная поддержка, эта реализация также называется "аппаратно-поддерживаемым программным RAID". Если поддерживается RAID 5, аппаратное обеспечение может включать аппаратный XOR-ускоритель. Преимущество этой модели перед чисто программным RAID заключается в том, что при использовании режима избыточности загрузочный диск защищен от сбоев (благодаря прошивке) в процессе загрузки, даже до того, как драйверы операционной системы возьмут управление на себя.

Совершенство

Очистка данных (в некоторых средах называемая патрульным чтением) включает периодическое чтение и проверку контроллером RAID всех блоков в массиве, включая те, к которым не осуществлялся доступ. Это позволяет выявлять поврежденные блоки до их использования. Очистка данных проверяет наличие неисправных блоков на каждом устройстве хранения в массиве, но также использует избыточность массива для восстановления поврежденных блоков на одном диске и перераспределения восстановленных данных в резервные блоки в другом месте на диске. Часто контроллер RAID настроен на "исключение" компонентного диска (то есть на предположение о его неисправности), если диск не отвечает в течение примерно восьми секунд; это может привести к ошибочному исключению исправного диска, которому просто не было предоставлено достаточно времени для завершения внутренней процедуры восстановления ошибок. Следовательно, использование дисков, предназначенных для потребительского рынка, в RAID-массивах может быть рискованным, и так называемые диски "корпоративного класса" ограничивают время восстановления ошибок для снижения риска. В десктопных дисках Western Digital ранее существовала специальная утилита для решения этой проблемы. Программа WDTLER.exe позволяла ограничить время восстановления ошибок диска. Эта утилита активировала TLER (Time-Limited Error Recovery) – технологию ограничения времени восстановления ошибок до семи секунд. Примерно в сентябре 2009 года Western Digital отключила эту функцию в своих десктопных дисках (например, в линейке Caviar Black), что сделало их непригодными для использования в RAID-конфигурациях. Однако диски корпоративного класса Western Digital поставляются с завода с включенным TLER. Аналогичные технологии используются компаниями Seagate, Samsung и Hitachi. Для использования вне RAID-массива диск корпоративного класса с коротким временем восстановления ошибок, которое нельзя изменить, менее предпочтителен, чем десктопный диск, например, в ситуации, когда оператор сервера заменяет неисправный диск в RAID-массиве и при этом отключает систему (даже временно). Массив может быть перегружен катастрофическим сбоем, превышающим его возможности восстановления, и весь массив может подвергнуться риску физического повреждения в результате пожара, стихийного бедствия или человеческого фактора, однако резервные копии можно хранить вне площадки. Массив также уязвим к сбоям контроллера, поскольку не всегда возможно перенести его на новый контроллер без потери данных.

Соответствующие сбои

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

Невосстанавливаемые ошибки в чтении во время восстановления

Невосстанавливаемые ошибки чтения (URE) проявляются как сбои при чтении секторов, также известные как скрытые дефектные сектора (LSE). Соответствующий показатель оценки носителя, частота неисправимых битовых ошибок (UBE), обычно гарантированно составляет менее одного бита на 10¹⁵ для дисков корпоративного класса (SCSI, FC, SAS или SATA) и менее одного бита на 10¹⁴ для дисков настольного класса (IDE/ATA/PATA или SATA). Увеличение емкости дисков и использование больших массивов RAID 5 привели к тому, что максимальные допустимые частоты ошибок стали недостаточными для гарантии успешного восстановления, из-за высокой вероятности возникновения такой ошибки на одном или нескольких оставшихся дисках во время восстановления RAID-массива. При восстановлении схемы, основанные на чётности, такие как RAID 5, особенно уязвимы к воздействию URE, поскольку они влияют не только на сектор, в котором произошла ошибка, но и на реконструированные блоки, использующие этот сектор для вычисления чётности. Схемы с двойной чётностью, такие как RAID 6, направлены на решение этой проблемы, обеспечивая избыточность, позволяющую пережить двойной отказ диска; однако, такие схемы характеризуются повышенной нагрузкой на запись – количеством обращений к носителю информации, необходимых для выполнения одной операции записи. Схемы, дублирующие (зеркалирующие) данные между дисками, такие как RAID 1 и RAID 10, имеют меньший риск, связанный с URE, чем схемы, использующие вычисление чётности или зеркальное отображение между полосами. Проверка данных в фоновом режиме (data scrubbing) может использоваться для обнаружения и восстановления после URE, эффективно снижая риск их возникновения во время восстановления RAID-массива и приводящего к двойному отказу диска. Восстановление URE включает в себя переназначение (remapping) затронутых базовых секторов диска с использованием пула переназначенных секторов диска; в случае обнаружения URE во время фоновой проверки, избыточность данных, обеспечиваемая полностью исправным RAID-массивом, позволяет реконструировать недостающие данные и перезаписать их в переназначенный сектор.

Увеличение времени восстановления и вероятности отказа

Емкость накопителей растет гораздо быстрее, чем скорость передачи данных, а частота ошибок снизилась лишь незначительно. Поэтому восстановление накопителей большей емкости может занять часы, а то и дни, в течение которых другие накопители могут выйти из строя или проявиться скрытые ошибки чтения. Время восстановления также ограничено, если весь массив продолжает работать в режиме пониженной емкости. В массиве с единственным резервным диском (что применимо к уровням RAID 3, 4 и 5, а также к "классическому" RAID 1 с двумя дисками) второй отказ диска приведет к полному выходу массива из строя. Хотя среднее время наработки на отказ (MTBF) отдельных дисков со временем увеличилось, это увеличение не успевает за ростом емкости накопителей. Время восстановления массива после отказа одного диска, а также вероятность повторного отказа во время восстановления, увеличились с течением времени. Некоторые эксперты утверждают, что RAID 6 является лишь временным решением этой проблемы, поскольку лишь отодвигает ее на некоторое время. Ненадежный источник: дата=октябрь 2020

Атомность

Сбой системы или другое прерывание операции записи может привести к состояниям, когда паритет не соответствует данным из-за неотъемлемости процесса записи, в результате чего паритет не может быть использован для восстановления в случае сбоя диска. Это обычно называют "дырой записи" (write hole), известной проблемой повреждения данных в старых и бюджетных RAID-системах, вызванной прерванным вытеснением данных на диск. "Дыру записи" можно устранить несколькими способами:

Предварительная запись в журнал (Write Ahead Logging). Аппаратные RAID-системы используют для этого встроенный энергонезависимый кэш. mdadm может использовать выделенное устройство журналирования (для избежания снижения производительности обычно предпочтительны SSD и NVM). Запись намерения (Write Intent Logging). mdadm использует "битовую карту намерения записи" (write intent bitmap). Если при запуске обнаруживается область, помеченная как незавершенная запись, она пересинхронизируется. Это закрывает "дыру записи", но не защищает от потери данных в процессе передачи, в отличие от полноценного WAL. Частичный паритет. mdadm может сохранить "частичный паритет", который, в сочетании с измененными блоками, восстанавливает исходный паритет. Это также закрывает "дыру записи", но не защищает от потери данных в процессе передачи. Динамический размер полосы. RAID Z гарантирует, что каждый блок является собственной полосой, поэтому каждый блок является полным. Транзакционная семантика "копирование при записи" (Copy on Write, COW) защищает метаданные, связанные с полосами. Недостатком является фрагментация ввода-вывода. "Дыра записи" – малоизученный и редко упоминаемый режим отказа избыточных систем хранения, не использующих транзакционные функции. Исследователь баз данных Джим Грей написал "Обновление на месте – отравленное яблоко" в ранние годы коммерциализации реляционных баз данных.

Надежность кэша

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