Отказоустойчивость и эффективность хранения в кластерах Azure Stack HCI и Windows Server

Область применения: Azure Stack HCI версий 22H2 и 21H2; Windows Server 2022, Windows Server 2019

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

Общие сведения

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

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

Зеркальное отображение

Зеркальное отображение обеспечивает отказоустойчивость, сохраняя несколько копий всех данных. Это наиболее напоминает RAID-1. То, как эти данные чередуются и размещаются, нетривиальный (дополнительные сведения см. в этом блоге ), но абсолютно верно сказать, что любые данные, хранящиеся с помощью зеркального отображения, записываются целиком несколько раз. Каждая копия записывается на разное физическое оборудование (разные диски на разных серверах), которые, как предполагается, выходят из строя независимо друг от друга.

Вы можете выбрать один из двух вариантов зеркального отображения: "двусторонний" и "трехсторонние".

Двухстороннее зеркало

При двухстороннем зеркальном отображении записываются два экземпляра всех данных. Эффективность хранилища составляет 50 процентов. Для записи 1 ТБ данных требуется не менее 2 ТБ физического хранилища. Аналогично требуется по крайней мере два аппаратных домена сбоя с локальными дисковыми пространствами, то есть два сервера.

two-way-mirror

Предупреждение

Если у вас более двух серверов, рекомендуется использовать трехстороннее зеркальное отображение.

Трехстороннее зеркало

При трехстороннем зеркальном отображении записывается три экземпляра всех данных. Эффективность хранилища составляет 33,3 процента. Для записи 1 ТБ данных требуется не менее 3 ТБ физического хранилища. Аналогично требуется по крайней мере три аппаратных домена сбоя с локальными дисковыми пространствами, то есть три сервера.

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

three-way-mirror

Parity

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

дисковые пространства предлагает два варианта четности - "одинарный" и "двойной" паритет, последний использует передовые методы, называемые "локальными кодами реконструкции" в более крупных масштабах.

Важно!

Мы рекомендуем использовать зеркалирование для большинства требовательных к производительности рабочих нагрузок. Дополнительные сведения о том, как обеспечить баланс производительности и емкости в зависимости от рабочей нагрузки, см. в разделе Планирование томов.

Одинарная четность

Одинарная четность сохраняет только один битовый символ четности, что обеспечивает отработку только одного отказа за раз. Этот сценарий наиболее схож с RAID-5. Чтобы использовать одинарную четность, требуется по крайней мере три аппаратных домена сбоя с локальными дисковыми пространствами, то есть три сервера. Поскольку трехстороннее зеркальное отражение обеспечивает лучшую отработку отказа в тех же масштабах, использовать одинарную четность не рекомендуется. Однако при желании вы можете воспользоваться этим способом, он полностью поддерживается.

Предупреждение

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

Двойная четность

Двойная четность реализует коды исправления ошибок Рида-Соломона, чтобы сохранить два битовых символа четности и обеспечить такой же уровень отказоустойчивости, что и при трехстороннем зеркалировании (т. е. до двух сбоев за раз), но с большей экономичностью хранения. Этот сценарий наиболее схож с RAID-6. Чтобы использовать двойную четность, требуется по крайней мере четыре аппаратных домена сбоя с локальными дисковыми пространствами, то есть четыре сервера. В таких масштабах экономичность хранения данных равна 50 %, то есть для хранения 2 ТБ данных необходимо 4 ТБ физической памяти.

dual-parity

Эффективность хранения двойной четности увеличивает количество доменов сбоя оборудования с 50 до 80 процентов. Например, при семи (с Локальные дисковые пространства, это означает семь серверов) эффективность подскакивает до 66,7 % — для хранения 4 ТБ данных требуется всего 6 ТБ физического хранилища.

dual-parity-wide

Сведения об экономичности двойной четности и локальных кодах реконструкции для всех масштабов см. в разделе Сводка.

Локальные коды реконструкции

дисковые пространства представляет передовый метод, разработанный Microsoft Research, под названием "локальные коды реконструкции" или LRC. В крупных системах при использовании двойной четности LRC служат для разделения операций кодирования и декодирования на более мелкие группы, чтобы снизить нагрузку на систему в связи с записью данных или восстановлением после сбоя.

При использовании жестких дисков размер группы обозначается четырьмя символами, при использовании твердотельных накопителей — шестью символами. Например, так выглядит структура с жесткими дисками и 12 аппаратными доменами сбоя (т. е. 12 серверами): две группы по четыре символа данных. Это обеспечивает 72,7-процентную эффективность хранения.

local-reconstruction-codes

Мы рекомендуем это подробное, но в значительной степени удобочитаемое пошаговое руководство по тому , как местные коды реконструкции обрабатывают различные сценарии сбоев и почему они привлекательны, Клаус Joergensen.

Четность с зеркальным ускорением

Том Локальные дисковые пространства может быть частью зеркало и четностью частей. Записанные данные сначала оказываются в зеркально отображаемом разделе, а затем постепенно перемещаются в раздел четности. Фактически, это использование зеркального отображения для ускорения помехоустойчивого кодирования.

Чтобы одновременно использовать трехстороннее зеркало и двойную четность, необходимо по меньшей мере четыре домена сбоя, то есть четыре сервера.

Экономичность хранения четности с зеркальным ускорением представляет собой нечто среднее между использованием исключительно зеркал или исключительно четности (все зависит от выбираемых пропорций). Например, демонстрация на 37-минутной отметке этой презентации показывает различные сочетания, достигаемые 46, 54 и 65 процентов эффективности с 12 серверами.

Важно!

Мы рекомендуем использовать зеркалирование для большинства требовательных к производительности рабочих нагрузок. Дополнительные сведения о том, как обеспечить баланс производительности и емкости в зависимости от рабочей нагрузки, см. в разделе Планирование томов.

Сводка

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

Типы устойчивости

Устойчивость Отказоустойчивость Экономичность хранения
Двухстороннее зеркало 1 50.0%
Трехстороннее зеркало 2 33,3 %
Двойная четность 2 50,0–80,0 %
Смешанный 2 33,3–80,0 %

Минимальные требования к масштабированию

Устойчивость Минимальное количество доменов сбоя
Двухстороннее зеркало 2
Трехстороннее зеркало 3
Двойная четность 4
Смешанный 4

Совет

Если вы не используете отказоустойчивость на уровне корпуса или стоек, количество доменов сбоя соответствует количеству серверов. Число накопителей в каждом сервере не влияет на то, какие типы устойчивости можно использовать, если выполняются минимальные требования для локальных дисковых пространств.

Эффективность двойной четности для гибридных развертываний

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

Домены сбоя Layout Эффективность
2
3
4 RS 2+2 50.0%
5 RS 2+2 50.0%
6 RS 2+2 50.0%
7 RS 4+2 66,7 %
8 RS 4+2 66,7 %
9 RS 4+2 66,7 %
10 RS 4+2 66,7 %
11 RS 4+2 66,7 %
12 LRC (8, 2, 1) 72,7 %
13 LRC (8, 2, 1) 72,7 %
14 LRC (8, 2, 1) 72,7 %
15 LRC (8, 2, 1) 72,7 %
16 LRC (8, 2, 1) 72,7 %

Эффективность двойной четности для развертываний с применением только флэш-накопителей

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

Домены сбоя Layout Эффективность
2
3
4 RS 2+2 50.0%
5 RS 2+2 50.0%
6 RS 2+2 50.0%
7 RS 4+2 66,7 %
8 RS 4+2 66,7 %
9 RS 6+2 75.0%
10 RS 6+2 75.0%
11 RS 6+2 75.0%
12 RS 6+2 75.0%
13 RS 6+2 75.0%
14 RS 6+2 75.0%
15 RS 6+2 75.0%
16 LRC (12, 2, 1) 80 %

Примеры

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

Примеры, в которых вся система сохраняет функциональность

Следующие шесть примеров показывают, какие ситуации допустимы при использовании трехстороннего зеркалирования и (или) двойной четности.

  • 1. Один диск потерян (включая диски кэша)
  • 2. Один сервер потерян

fault-tolerance-examples-1-and-2

  • 3. Один сервер и один диск потеряны
  • 4. Два диска потеряны на разных серверах

fault-tolerance-examples-3-and-4

  • 5. Потеряно более двух дисков, при условии, что затронуты не более двух серверов
  • 6. Два сервера потеряны

fault-tolerance-examples-5-and-6

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

Примеры, в которых вся система отключается

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

  • 7. Одновременный отказ накопителей на трех и более серверах.
  • 8. Одновременный отказ трех и более серверов.

fault-tolerance-examples-7-and-8

Использование

Ознакомьтесь с статьей Создание томов.

Дальнейшие действия

Дополнительные сведения о темах, упомянутых в этой статье, см. в следующих статьях: