Общие сведения о кэше пула носителей
Область применения: Azure Stack HCI, версии 22H2 и 21H2; Windows Server 2022, Windows Server 2019
Внимание
Azure Stack HCI теперь является частью Azure Local. Выполняется переименование документации по продукту. Однако старые версии Azure Stack HCI, например 22H2, будут продолжать ссылаться на Azure Stack HCI и не отражают изменение имени. Подробнее.
Локальные дисковые пространства, базовая технология виртуализации хранилища, лежащая в основе Azure Stack HCI и Windows Server, включает встроенный кэш на стороне сервера, чтобы повысить производительность хранилища при снижении затрат. Это большой, постоянный и постоянный кэш чтения и записи в режиме реального времени, который настраивается автоматически при развертывании. В большинстве случаев с ним ничего не нужно делать вручную. Работа кэша зависит от типов существующих дисков.
Типы дисков и варианты развертывания
Локальные дисковые пространства в настоящее время работает с четырьмя типами дисков:
Тип диска | Description |
---|---|
PMem относится к постоянной памяти, новому типу низкой задержки, высокопроизводительного хранилища. | |
NVMe (Non-Volatile Memory Express) — твердотельные накопители, подключаемые непосредственно к шине PCIe. Распространенные форм-факторы: 2,5" U.2, PCIe-in-Card (AIC) и M.2. NVMe предлагает более высокую пропускную способность ввода-вывода и пропускную способность ввода-вывода с меньшей задержкой, чем любой другой тип диска, который мы поддерживаем сегодня, кроме PMem. | |
SSD — твердотельные накопители, которые подключаются через традиционную технологию SATA или SAS. | |
HDD относится к поворотным, магнитным жестким дискам, которые обеспечивают огромную емкость хранилища с низкой стоимостью. |
Их можно объединить различными способами, которые мы группируем на две категории: "all-flash" и "hybrid". Развертывания со всеми HDD не поддерживаются.
Примечание.
В этой статье рассматриваются конфигурации кэша с NVMe, SSD и HDD. Сведения об использовании постоянной памяти в качестве кэша см. в статье "Общие сведения об использовании постоянной памяти и развертывании".
Возможности развертывания для категории "только флэш-диски"
Все развертывания флэш-памяти предназначены для повышения производительности хранилища и не включают HDD.
Возможности развертывания для категории "гибридная"
Гибридные развертывания предназначены для балансировки производительности и емкости или максимальной емкости и включения HDD.
Примечание.
Гибридное развертывание не поддерживается в конфигурации одного сервера. Все конфигурации типа одноуровневого хранилища (например, all-NVMe или all-SSD) являются единственным поддерживаемым типом хранилища для одного сервера.
Диски для кэша выбираются автоматически
В развертываниях с несколькими типами дисков Локальные дисковые пространства автоматически использует все диски самого быстрого типа для кэширования. Остальные диски используются для емкости.
Самый "быстрый" тип определяется в соответствии со следующей иерархией.
Например, если вы используете NVMe и SSD, диски NVMe будут выполнять роль кэша для SSD.
Если используются SSD и HDD, диски SSD будут выполнять роль кэша для HDD.
Примечание.
Диски кэша не вносят доступный объем хранилища в кластер. Все присутствующие в кэше данные хранятся еще где-то или будут сохранены после перемещения на накопительное устройство. Это означает, что общая емкость необработанного хранилища кластера — это только сумма дисков емкости.
Если все диски имеют одинаковый тип, то кэш не настраивается автоматически. Вы можете вручную настроить диски с меньшим уровнем износа в качестве кэша для дисков того же типа с большим уровнем износа, как описано в разделе Настройка вручную.
Совет
В некоторых случаях использование кэша пула носителей не имеет смысла. Например, в развертываниях all-NVMe или all-SSD, особенно в очень небольшом масштабе, отсутствие дисков "потрачено" на кэш может повысить эффективность хранения и повысить производительность. Аналогичным образом, небольшие развертывания удаленных или филиалов могут иметь ограниченное пространство для дисков кэша.
Поведение кэша настраивается автоматически
Поведение кэша определяется автоматически на основе типов дисков, которые кэшируются. При кэшировании для флэш-дисков (таких как кэширование NVMe для SSD), кэшируются только записи. При кэшировании для поворота дисков (таких как кэширование дисков SSD для жестких дисков), кэшируются как операции чтения, так и записи.
Кэширование только для записи в развертываниях "только флэш-диски"
Кэширование можно использовать в сценарии all-flash, например использование NVMe в качестве кэша для ускорения производительности SSD. При кэшировании для всех развертываний флэш-памяти кэшируются только записи. Это снижает нагрузку на диски емкости, так как многие операции записи и повторной записи могут объединяться в кэше, а затем отменять только по мере необходимости, уменьшая совокупный трафик к дискам емкости и расширяя их срок жизни. По этой причине мы рекомендуем выбрать для кэша диски с высокой устойчивостью к износу и оптимизированные для записи. Диски емкости могут иметь более низкую устойчивость к износу для операций записи, в разумных пределах.
Так как операции чтения не значительно влияют на продолжительность жизни флэш-памяти, и поскольку диски SSD универсально предлагают низкую задержку чтения, операции чтения не кэшируются: они обслуживаются непосредственно с дисков емкости (за исключением случаев, когда данные были записаны так недавно, что он еще не был удален). Это позволяет полностью посвятить кэш обработке операций записи, повышая его эффективность.
Это означает, что характеристики операций записи, например задержка записи, определяются дисками кэша, а характеристики чтения определяются дисками емкости. Это значит, что оба типа операций выполняются согласованно, прогнозируемо и однородно.
Кэширование чтения и записи для гибридных развертываний
При кэшировании для HDD кэшируются как операции чтения , так и записи, чтобы обеспечить задержку флэш-памяти (часто ~ 10x лучше) для обоих. Кэш чтения хранит недавно считанные и часто считываемые данные, чтобы ускорить доступ к ним и снизить количество обращений случайного доступа к дискам HDD. (Из-за задержек поиска и смены задержки задержки и потери времени, вызванные случайным доступом к HDD, значительно.) Операции записи кэшируются для поглощения всплесков и, как и раньше, для объединения операций записи и повторной записи и минимизации совокупного трафика на диски емкости.
Локальные дисковые пространства реализует алгоритм, который де-случайным образом записывает данные перед отменой промежуточного их выполнения, чтобы эмулировать шаблон ввода-вывода на диск, который кажется последовательным, даже если фактический ввод-вывод, поступающий из рабочей нагрузки (например, виртуальных машин), является случайным. Это позволяет повысить количество операций ввода-вывода в секунду и пропускную способность дисков HDD.
Кэширование в развертываниях с помощью NVMe, SSD и HDD
При наличии дисков всех трех типов диски NVMe обеспечивают кэширование для дисков SSD и HDD. Поведение кэша здесь такое же, как описано выше: для SSD кэшируются только операции записи, а для HDD — операции чтения и записи. Вся нагрузка кэширования для дисков HDD равномерно распределяется между дисками кэша.
Итоги
В этой таблице собраны сведения о дисках, которые могут использоваться для кэширования и в качестве дисков емкости, и о поведении кэша в каждом из вариантов развертывания.
Развертывание | Кэш-диски | Диски емкости | Поведение кэша (по умолчанию) |
---|---|---|---|
Все NVMe | Нет (необязательно: настройка вручную) | NVMe | Доступно только на запись (если настроено) |
Все SSD | Нет (необязательно: настройка вручную) | SSD | Доступно только на запись (если настроено) |
NVMe и SSD | NVMe | SSD | Только для записи |
NVMe и HDD | NVMe | HDD | Чтение и запись |
SSD и HDD | SSD | HDD | Чтение и запись |
NVMe, SSD и HDD | NVMe | SSD и HDD | Чтение и запись для HDD, только запись для SSD |
Архитектура на стороне сервера
Кэш реализуется на уровне диска, то есть отдельные диски кэша на одном сервере привязываются к одному или нескольким дискам емкости на том же сервере.
Поскольку такой кэш размещается ниже всех остальных элементов программно-определяемого стека хранилища Windows, он не имеет и не должен иметь никакой информации о любых концепциях, таких как дисковые пространства или отказоустойчивость. Вы можете подумать о создании гибридных дисков (часть флэш-памяти, диска части), которые затем представлены операционной системе. Как и в случае с обычным гибридным диском, перемещение данных между горячим и холодным уровнями доступа, размещенных на быстрых и медленных разделах физического носителя, почти невозможно отследить снаружи этой системы.
Учитывая то, что устойчивость в Локальных дисковых пространствах реализуется не ниже уровня сервера (то есть копии данных всегда записываются на разные серверы, и не более одной копии на сервер), данные в кэше получают все преимущества используемой схемы устойчивости, как и отсутствующие в кэше данные.
Например, при использовании трехстороннего зеркального отображения три копии данных записываются на разные серверы, где они попадают в кэш. Независимо от того, будут ли они сохранены впоследствии на диски емкости, всегда существуют три копии данных.
Привязки дисков являются динамическими
Привязки между дисками кэша и емкости могут выполняться в любом соотношении, от "1 к 1" до "1 к 12" и даже более. Они корректируются динамически при любом добавлении и удалении дисков, например при масштабировании и после любых сбоев. Это позволяет вам в любое время на свое усмотрение добавлять любые диски кэша и емкости.
Мы рекомендуем поддерживать количество дисков емкости, кратное количеству дисков кэша, чтобы соблюдать симметрию. Например, если вы используете 4 диска кэша, производительность с 8-ю дисками емкости (соотношение "1 к 2") будет более равномерной, чем с 7-ю или 9-ю.
Обработка сбоев дисков кэша
В случае сбоя диска кэша все операции записи, еще не переданные на диск емкости, утрачиваются в контексте локального сервера, то есть сохраняются только в других копиях на других серверах. Как и при любом другом сбое диска, дисковые пространства могут и будут выполнять автоматическое восстановление из сохранившихся копий.
На короткий период диски емкости, привязанные к утраченному диску кэша, будут отображаться как неработоспособные. Когда завершится автоматическая перепривязка кэша и автоматическое восстановление данных, для дисков емкости восстановится работоспособное состояние.
Именно для того, чтобы сохранить производительность в этом сценарии, нужно предоставить не менее двух дисков кэша на каждый сервер.
После сбоя вы можете заменить пострадавший диск кэша, как при любой обычной замене диска.
Примечание.
Для безопасной замены дисков NVMe форм-фактора Add-In Card (AIC) или M.2 может потребоваться отключение питания.
Связь с другими кэшами
В программно-определяемом стеке хранилища Windows существует еще несколько уровней кэширования, которые никак не связаны с рассматриваемым. Например, кэш обратной записи дисковых пространств и кэш чтения в памяти для общего тома кластера (CSV).
При использовании Azure Stack HCI дисковые пространства кэш обратной записи не следует изменять из его поведения по умолчанию. Например, не следует использовать параметры типа -WriteCacheSize в командлете New-Volume.
Вы можете на свое усмотрение выбрать, использовать кэш CSV или нет. Он включен по умолчанию в Azure Stack HCI, но не конфликтует с кэшем, описанным в этом разделе. В некоторых сценариях он даже обеспечит заметное повышение производительности. Дополнительные сведения см. в разделе "Использование кэша чтения в памяти CSV" с помощью Azure Stack HCI.
Настройка вручную
Для большинства развертываний вручную не требуется. Если у вас возникнет эта потребность, изучите следующие разделы.
Если вам нужно изменить модель устройства для кэша после ее настройки, отредактируйте документ дополнительных компонентов службы работоспособности, как описано в этом руководстве.
Выбор модели для диска кэша
Если в развертывании участвуют только диски одного типа (только NVMe или только SSD), кэш для них не настраивается, так как Windows не может автоматически оценить различия дисков одного типа по таким характеристикам, как устойчивость к износу.
Чтобы применить более устойчивые к износу диски для кэша, а менее устойчивые того же типа — для дисков емкости, выберите модель дисков с помощью параметра -CacheDeviceModel в командлете Enable-ClusterS2D. Все диски этой модели будут использоваться для кэширования.
Совет
Убедитесь, что строка модели в точности соответствует той, которая возвращается командлетом Get-PhysicalDisk.
Пример
Для начала получите список доступных физических дисков.
Get-PhysicalDisk | Group Model -NoElement
Вот пример выходных данных этой команды:
Count Name
----- ----
8 FABRIKAM NVME-1710
16 CONTOSO NVME-1520
Затем введите следующую команду, чтобы указать модель устройства для кэша:
Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"
Вы можете убедиться, что все выбранные диски используются для кэша, выполнив командлет Get-PhysicalDisk в PowerShell, где для каждого из них свойство Usage (Использование) должно иметь значение Journal (Журнал).
Возможности развертывания вручную
Настройка вручную позволяет реализовать следующие возможности развертывания:
Настройка поведения кэша
Вы можете переопределить поведение кэша, используемое по умолчанию. Например, настроить кэширование операций чтения даже при развертывании только на флэш-дисках. Мы рекомендуем не изменять поведение кэша, если у вас нет четкого понимания, почему вариант по умолчанию не подходит для вашей рабочей нагрузки.
Чтобы переопределить поведение по умолчанию, выполните командлет Set-ClusterStorageSpacesDirect с параметрами -CacheModeSSD и -CacheModeHDD. Параметр CacheModeSSD задает поведение кэша при кэшировании для SSD. Параметр CacheModeHDD задает поведение кэша при кэшировании для HDD.
Проверить текущие настройки поведения можно с помощью командлета Get-ClusterStorageSpacesDirect.
Пример
Для начала получите параметры Локальных дисковых пространств:
Get-ClusterStorageSpacesDirect
Вот пример выходных данных этой команды:
CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly
После этого выполните следующее:
Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite
Get-ClusterS2D
Вот пример выходных данных этой команды:
CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite
Определение размера кэша
Размер кэша следует подбирать так, чтобы он соответствовал объема рабочего набора (объему активно считываемых или записываемых данных в любой конкретный момент) ваших приложений и рабочих нагрузок.
Это особенно важно для гибридных развертываний, содержащих жесткие диски. Если объем рабочих данных превышает размер кэша или его содержимое изменяется слишком быстро, операции чтения будут реже попадать в кэш и операции записи придется более агрессивно перемещать из кэша, что негативно отразится на общей производительности.
В ОС Windows вы можете применить встроенную служебную программу системного монитора PerfMon.exe, чтобы оценить долю промахов кэша. В частности, сравните параметр Cache Miss Reads/sec (Чтение без кэша/с) из набора счетчиков Cluster Storage Hybrid Disk (Гибридный диск кластерного хранилища) с общим числом операций ввода-вывода в секунду для используемого развертывания. Каждый "Гибридный диск" здесь обозначает один диск емкости.
Например, 2 диска кэша и 4 диска емкости будут отображаться как 4 экземпляра объекта "Гибридный диск" на каждом сервере.
Не существует универсальных правил, но если слишком много операций чтения не попадают в кэш, его размер может быть недостаточным. Попробуйте добавить диски кэша, чтобы увеличить его объем. Вы можете в любое время на свое усмотрение добавлять диски кэша и емкости.
Следующие шаги
Дополнительные сведения о хранилище см. тут: