Общие сведения о кэше пула носителей
Область применения: Azure Stack HCI версий 22H2 и 21H2; Windows Server 2022, Windows Server 2019
Локальные дисковые пространства, базовая технология виртуализации хранилища, лежащая в основе Azure Stack HCI и Windows Server, содержит встроенный кэш на стороне сервера, чтобы повысить производительность хранилища и снизить затраты. Это большой постоянный кэш для чтения и записи в режиме реального времени, который настраивается автоматически при развертывании. В большинстве случаев никакого ручного управления не требуется. Способ работы кэша зависит от типов имеющихся накопителей.
Типы накопителей и варианты развертывания
Локальные дисковые пространства в настоящее время работает с четырьмя типами дисков:
Тип диска | Описание |
---|---|
PMem относится к постоянной памяти, новому типу хранилища с низкой задержкой и высокой производительностью. | |
NVMe (Non-Volatile Memory Express) — это твердотельные диски, подключенные непосредственно к шине PCIe. Распространенные форм-факторы: 2,5 дюйма U.2, плата расширения PCIe (AIC) и M.2. NVMe предлагает более высокую пропускную способность операций ввода-вывода и операций ввода-вывода с меньшей задержкой, чем любой другой тип диска, который мы поддерживаем сегодня, кроме PMem. | |
SSD — это твердотельные накопители, которые подключаются через обычные SATA или SAS. | |
HDD — это вращаемые магнитные жесткие диски, которые обеспечивают большую емкость хранилища по низкой цене. |
Их можно комбинировать различными способами, которые мы сгруппируем по двум категориям: "all-flash" и "hybrid". Развертывания со всеми жесткими дисками не поддерживаются.
Примечание
В этой статье рассматриваются конфигурации кэша с NVMe, SSD и HDD. Сведения об использовании постоянной памяти в качестве кэша см. в статье Общие сведения об использовании и развертывании постоянной памяти.
Варианты развертывания только с флэш-накопителями
Развертывания с поддержкой всего флэш-накопителя нацелены на максимальную производительность хранилища и не включают жесткие диски.
Варианты гибридного развертывания
Гибридные развертывания предназначены для балансировки производительности и емкости или для максимальной емкости и включают HDD.
Примечание
Гибридное развертывание не поддерживается в конфигурации с одним сервером. Все конфигурации неструктурированного типа одного хранилища (например, все NVMe или все SSD) являются единственным поддерживаемым типом хранилища для одного сервера.
Кэш-накопители выбираются автоматически
В развертываниях с несколькими типами дисков Локальные дисковые пространства автоматически использует для кэширования все диски самого быстрого типа. Остальные диски используются для хранения.
Скорость работы накопителя определяется согласно следующей иерархии.
Например, если у вас есть накопители NVMe и SSD, NVMe будут использоваться в качестве кэша для SSD.
Если у вас есть твердотельные накопители (SSD) и жесткие диски, SSD будут использоваться в качестве кэша для жестких дисков.
Примечание
Кэш-диски не обеспечивают использование емкости хранилища в кластере. Все данные, хранящиеся в кэше, хранятся и в других местах или будут храниться там после их переноса из кэша на устройство. Это означает, что общая емкость необработанного хранилища кластера является суммой только дисков емкости.
Если все накопители принадлежат к одному типу, кэш не настраивается автоматически. Вы можете вручную задать более износостойкие накопители в качестве кэша для менее износостойких накопителей того же типа. Соответствующие инструкции см. в разделе Ручная настройка.
Совет
В некоторых случаях использование кэша пула носителей не имеет смысла. Например, в развертываниях с все NVMe или SSD, особенно в очень небольших масштабах, отсутствие дисков, затраченных на кэш, может повысить эффективность хранилища и повысить производительность. Аналогичным образом, небольшие удаленные развертывания или развертывания филиалов могут иметь ограниченное пространство для дисков кэша.
Режим работы кэша задается автоматически
Поведение кэша определяется автоматически на основе типов дисков, которые кэшируются. При кэшировании для устройств флэш-памяти (например, при кэшировании NVMe для ssd) кэшируются только операции записи. При кэшировании для вращающихся дисков (например, кэширования SSD для жестких дисков) кэшируются операции чтения и записи.
Кэширование только операций записи для развертываний только с флэш-накопителями
Кэширование можно использовать в сценарии с использованием всех флэш-накопителей, например использование NVMe в качестве кэша для ускорения производительности накопителей SSD. При кэшировании для развертываний на основе флэш-памяти кэшируются только операции записи. Это снижает износ дисков емкости, так как многие операции записи и повторной записи могут объединиться в кэше, а затем деактивироваться только по мере необходимости, уменьшая совокупный трафик на диски емкости и продлевая их срок службы. Поэтому для кэша рекомендуется выбирать более износостойкие и оптимизированные для записи накопители. Накопители-хранилища в целом могут иметь менее высокий ресурс записи.
Так как операции чтения не влияют на срок службы флэш-памяти и диски SSD обеспечивают низкую задержку чтения, операции чтения не кэшируются: они обслуживаются непосредственно с дисков емкости (за исключением случаев, когда данные были записаны так недавно, что они еще не были де-этапированы). Это позволяет ориентировать работу кэша исключительно на операции записи, повышая их эффективность.
Это приводит к тому, что характеристики записи (например, задержка записи) определяются кэш-накопителями, а характеристики чтения — накопителями-хранилищами. И те, и другие согласованы, предсказуемы и унифицированы.
Кэширование операций чтения и записи для гибридных развертываний
При кэшировании hdd кэшируются как операции чтения, так и записи, чтобы обеспечить задержку, подобную флэш-памяти (часто примерно в 10 раз лучше). Кэш чтения хранит недавно считанные и часто считываемые данные для организации быстрого доступа к ним и сведения к минимуму объема произвольных обращений к жестким дискам. (Из-за задержек во время операций поиска и раскрутки диска вызванные произвольными обращениями к жесткому диску потери времени и задержки имеют существенное значение.) Операции записи кэшируются, чтобы объединить последовательности запросов, а также объединить операции записи и перезаписи для снижения общего потока данных на накопители-хранилища.
Локальные дисковые пространства реализует алгоритм, который отменяет случайные операции записи перед их отменой, чтобы эмулировать шаблон ввода-вывода на диск, который кажется последовательным, даже если фактические операции ввода-вывода, поступающие от рабочей нагрузки (например, виртуальных машин), являются случайными. Это позволяет увеличить количество операций ввода-вывода в секунду и пропускную способность для жестких дисков.
Кэширование в развертываниях с помощью NVMe, SSD и HDD
При наличии дисков всех трех типов диски NVMe обеспечивают кэширование как для ssd, так и для жестких дисков. Режим работы соответствует описанному ранее: для накопителей SSD кэшируются только операции записи, для жестких дисков — операции чтения и записи. Работа по кэшированию жестких дисков равномерно распределяется среди кэш-накопителей.
Сводка
В этой таблице приведена сводная информация о том, какие накопители используются для кэширования, какие — для хранения данных и как осуществляется кэширование в каждом варианте развертывания.
Развертывание | Кэш-накопители | Накопители-хранилища | Режим кэширования (по умолчанию) |
---|---|---|---|
Только NVMe | Нет (как вариант — настройка вручную) | NVMe | Только запись (если настроено) |
Только SSD | Нет (как вариант — настройка вручную) | SSD | Только запись (если настроено) |
NVMe + SSD | NVMe | SSD | Только на запись |
NVMe + жесткий диск | NVMe | HDD | Чтение + запись |
SSD + жесткий диск | SSD | HDD | Чтение + запись |
NVMe + SSD + жесткий диск | NVMe | SSD + жесткий диск | Для жесткого диска — чтение + запись, для SSD — только запись |
Серверная архитектура
Кэш реализуется на уровне накопителя: отдельные кэш-накопители на одном сервере привязаны к одному или нескольким накопителям-хранилищам на том же сервере.
Поскольку кэш находится ниже остального стека программно-определяемого хранилища Windows, он не использует такие концепции, как дисковые пространства или отказоустойчивость, и не нуждается в них. Это можно представить как создание "гибридных" дисков (часть флэш-памяти, часть диска), которые затем будут представлены операционной системе. Как и в случае с реальным гибридным накопителем, перемещение в режиме реального времени «горячих» и «холодных» данных между более быстрыми и более медленными зонами физического носителя почти незаметно извне.
С учетом того, что устойчивость в локальных дисковых пространствах реализуется как минимум на уровне сервера (то есть, копии данных всегда записываются на разные сервера; не более одной копии на сервер), на данные в кэше распространяются те же преимущества устойчивости, что и на данные не в кэше.
Например, при использовании трехстороннего зеркалирования три копии любых данных записываются на разные серверы и оказываются там в кэше. Вне зависимости от того, будут ли они позднее перенесены из кэша на устройство или нет, три эти копии всегда существуют.
Привязки к накопителям являются динамическими
Привязка кэш-накопителей к накопителям-хранилищам может иметь любой коэффициент — от 1:1 до 1:12 и так далее. Он настраивается динамически всякий раз, когда добавляются или удаляются накопители, например при увеличении масштаба системы или после сбоев. Это означает, что вы можете добавлять кэш-накопители или накопители-хранилища независимо друг от друга, когда это необходимо.
Рекомендуется делать число накопителей-хранилищ кратным числу кэш-накопителей для соблюдения симметрии. Например, если у вас четыре кэш-накопителя, то при наличии восьми накопителей-хранилищ (соотношение 1:2) производительность будет более постоянной, чем при наличии семи или девяти накопителей-хранилищ.
Обработка сбоев кэш-накопителей
При сбое в работе кэш-накопителя все операции записи, которые еще не были перенесены из кэша на устройство, теряются на локальном сервере, то есть существуют только в других копиях (на других серверах). Так же, как и при сбоях других накопителей, дисковые пространства могут выполнять автоматическое восстановление и делают это, обращаясь к сохранившимся копиям.
В течение небольшого периода времени накопители-хранилища, которые были привязаны к отказавшему кэш-накопителю, будут отображаться как неисправные. После повторной привязки кэша (выполняется автоматически) и завершения восстановления данных (выполняется автоматически) они снова будут отображаться как исправные.
Этот сценарий показывает, почему для поддержания работоспособности сервера требуется не менее двух кэш-накопителей на сервер.
Затем можно заменить кэш-накопитель, следуя стандартной процедуре замены любых накопителей.
Примечание
Может потребоваться отключение питания для безопасной замены накопителя NVMe в виде дополнительной карты (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 (Гибридный диск системы хранения данных кластера) с общим числом операций чтения в вашем развертывании. Каждый «гибридный диск» соответствует одному накопителю-хранилищу.
Например, два кэш-накопителя, привязанные к четырем накопителям-хранилищам, дадут четыре экземпляра объекта «гибридный диск» на сервер.
Универсальных правил нет, но если слишком много операций чтения не попадают в кэш, его размер может быть недостаточным. В этом случае рекомендуется добавить дополнительные кэш-накопители для увеличения размера кэша. Добавлять кэш-накопители и накопители-хранилища можно независимо друг от друга, когда это необходимо.
Дальнейшие действия
Дополнительные сведения о хранилище см. также: