Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Дисковые пространства может предоставить отказоустойчивость данных с помощью двух основных методов: зеркалирования и использования четности. В Storage Spaces Direct ReFS вводит зеркально-ускоренную четность, что позволяет создавать тома, использующие как зеркальную, так и четную устойчивость. Зеркально-ускоренная четность предлагает недорогое и эффективное по пространству хранилище без ущерба для производительности.
Общие сведения
Схемы устойчивости зеркального отображения и четности имеют принципиально разные характеристики хранения и производительности:
- Устойчивость зеркального резервирования позволяет пользователям обеспечить быструю запись, но репликация данных для каждой копии неэффективна.
- Паритет, с другой стороны, должен повторно вычислить паритет для каждой записи, что ухудшает производительность случайной записи. Однако четность позволяет пользователям хранить свои данные с большей эффективностью пространства. Для получения дополнительной информации см. раздел отказоустойчивость дисковых пространств.
Таким образом, зеркальное отображение предназначено для обеспечения производительной работы хранилища, а четность обеспечивает более эффективное использование его емкости. В режиме зеркального ускорения четности ReFS использует преимущества каждого типа устойчивости для обеспечения эффективного и производительного хранения, сочетая обе схемы устойчивости в одном томе.
Поворот данных в режиме зеркального ускорения четности
ReFS активно поворачивает данные между зеркальным и паритетным режимом в режиме реального времени. Это позволяет быстро записывать входящие записи в зеркальное отображение, а затем конвертировать в данные четности для эффективного хранения. При этом входящие операции ввода-вывода быстро обслуживаются в зеркальном режиме, а холодные данные хранятся эффективно в четности, обеспечивая оптимальную производительность и хранилище потерянных затрат в одном томе.
Для промежуточного хранения данных в зеркальном или паритетном виде, ReFS логически делит том на области по 64 МиБ, которые служат единицей изменения расположения. Ниже приведено изображение объема данных с паритетом, ускоренного с использованием зеркал, который разделен на регионы.
ReFS начинает поворот полных областей от зеркала до четности после достижения указанного уровня емкости. Вместо немедленного перемещения данных из зеркального отображения в четность ReFS ожидает и сохраняет данные в зеркальном режиме до тех пор, пока это возможно, что позволяет ReFS продолжать обеспечить оптимальную производительность данных (см. раздел "Производительность операций ввода-вывода" ниже).
При перемещении данных из зеркального диска в диск с четностью данные считываются, вычисляются коды четности, а затем данные записываются в диск с четностью. В приведенной ниже анимации показано, как трехсторонняя зеркальная область преобразуется в область с стиранием кодом при вращении:
Число операций ввода-вывода в режиме зеркального ускорения
Поведение операций ввода-вывода
Записывает: ReFS обрабатывает входящие записи тремя разными способами:
Записывает в Mirror:
- 1a. Если входящие записи изменяют существующие данные в зеркальном отображении, ReFS изменит данные на месте.
- 1b. Если входящая запись является новой записью, и ReFS может успешно найти достаточно свободного места в зеркальном отображении для обслуживания этой записи, ReFS будет записывать в зеркальное отображение.
Записывает в зеркальное отображение, перераспределенное из паритета:
Если входящие данные записи изменяют данные, которые находятся в чётности, и ReFS может успешно найти достаточно свободного места в зеркальном отображении для обслуживания входящей записи, ReFS сначала аннулирует предыдущие данные в чётности, а затем запишет в зеркальное отображение. Инвалидирование является быстрой и недорогой операцией с метаданными, которая помогает значительно улучшить производительность записи в системах с четностью.
Записывает данные в паритет:
Если ReFS не удается найти достаточно свободного места в зеркале, ReFS будет записывать новые данные для четности или изменять существующие данные напрямую. В разделе "Оптимизация производительности" ниже приведены рекомендации, которые помогут свести к минимуму количество операций записи в четность.
Считывает: ReFS будет считывать непосредственно с уровня, содержащего соответствующие данные. Если четность создается с HDD, кэш в Storage Spaces Direct будет кэшировать эти данные для ускорения последующего чтения.
Примечание.
Операции чтения никогда не приводят к повороту данных ReFS обратно на зеркальный уровень.
Производительность операций ввода-вывода
Записи. Каждый тип записи, описанный выше, имеет собственные характеристики производительности. Грубо говоря, записи на зеркальный уровень гораздо быстрее, чем перераспределенные записи, и перераспределенные записи значительно быстрее, чем записи, сделанные непосредственно на уровень четности. Эта связь иллюстрируется неравенством ниже:
- Зеркальный уровень > Перераспределенные записи >> Уровень четности
Чтение: при чтении из паритета нет значимого, отрицательного влияния на производительность:
- Если зеркальное отображение и четность создаются с тем же типом носителя, производительность чтения будет эквивалентна.
- Если зеркальное отображение и четность создаются с различными типами носителей — например, зеркальные SSD и HDD с четностью, — кэш в Storage Spaces Direct поможет кэшировать горячие данные для ускорения операций чтения из четности.
Сжатие ReFS
Сжатие для ReFS доступно в Windows Server 2019 и более поздних версиях, что значительно повышает производительность для томов с зеркально ускоренным паритетом, заполненных на более чем 90%.
Предыстория: Ранее, когда тома четности с зеркальным ускорением заполнялись, их производительность могла снижаться. Производительность снижается, так как горячие и холодные данные со временем перемешиваются по всему объему. Это означает, что менее горячие данные могут храниться в зеркале, так как холодные данные занимают место, которое иначе могло бы быть использовано для горячих данных. Хранение горячих данных в зеркальном отображении крайне важно для обеспечения высокой производительности, так как записи непосредственно в зеркальное отображение гораздо быстрее, чем перераспределенные записи, и на порядок быстрее, чем записи по эквиваленту четности. Таким образом, наличие холодных данных в зеркальном отображении плохо для производительности, так как это снижает вероятность того, что ReFS может выполнять записи непосредственно в зеркальное отображение.
Сжатие ReFS устраняет эти проблемы с производительностью, освобождая место в зеркальном режиме для горячих данных. Сначала сжатие объединяет все данные из зеркальных и паритетных копий в паритет. Это уменьшает фрагментацию в томе и увеличивает объем адресного пространства в зеркальном отображении. Более важно, что этот процесс позволяет ReFS консолидировать горячие данные обратно в зеркальное отображение:
- При появлении новых записей они будут обслуживаться в зеркальном режиме. Таким образом, недавно записанные горячие данные находятся в зеркале.
- При изменении данных в четности ReFS выполняет перераспределенную запись, поэтому эта запись также осуществляется зеркально. Следовательно, горячие данные, которые были перемещены в четность во время сжатия, будут перераспределены обратно в зеркало.
Оптимизация производительности
Внимание
Рекомендуется размещать виртуальные жесткие диски (VHD) с высокой нагрузкой на запись в разных подкаталогах. Это связано с тем, что ReFS записывает изменения метаданных на уровне каталога и его файлов. Таким образом, если вы распределяете файлы с высокой нагрузкой на запись между каталогами, операции метаданных меньше и выполняются параллельно, уменьшая задержку для приложений.
Счетчики производительности
ReFS поддерживает счетчики производительности, помогающие оценить производительность зеркального ускорения паритета.
Как описано выше в разделе "Запись в четность", ReFS будет записывать непосредственно в четность, когда не удается найти свободное место в зеркальном отображении. Как правило, это происходит, когда зеркальный уровень заполняется быстрее, чем ReFS может повернуть данные на четность. Другими словами, ротация ReFS не успевает за скоростью приема. Счетчики производительности, приведенные ниже, определяют, когда ReFS записывает непосредственно в четность:
# Windows Server 2016 ReFS\Data allocations slow tier/sec ReFS\Metadata allocations slow tier/sec # Windows Server 2019 ReFS\Allocation of Data Clusters on Slow Tier/sec ReFS\Allocation of Metadata Clusters on Slow Tier/sec
Если эти счетчики не равны нулю, это означает, что ReFS не перемещает данные достаточно быстро из зеркала. Чтобы смягчить это, можно изменить агрессивность поворота или увеличить размер зеркального слоя.
Агрессивность вращения
ReFS начинает поворот данных после того, как зеркальное отображение достигло заданного порогового значения емкости.
- Более высокие значения этого порогового значения поворота приводят к тому, что ReFS сохраняет данные на зеркальном уровне дольше. Оставление горячих данных на зеркальном уровне оптимально для производительности, но ReFS не сможет эффективно обслуживать большие объемы входящих операций ввода-вывода.
- Более низкие значения позволяют ReFS упреждающе сбрасывать данные на диск и лучше осуществлять обработку входящих операций ввода-вывода. Это применимо к нагрузкам с большим объемом данных, таким как архивное хранилище данных. Однако более низкие значения могут снизить производительность для рабочих нагрузок общего назначения. Ненужное перемещение данных из зеркального уровня влечет за собой снижение производительности.
ReFS вводит параметр, который можно настроить для изменения этого порога с помощью ключа реестра. Этот раздел реестра должен быть настроен на каждом узле в развертывании Storage Spaces Direct, и для вступления изменений в силу требуется перезапуск.
- Ключ: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies
- Имя значения (DWORD): DataDestageSsdFillRatioThreshold
- ValueType: Процент
Если этот раздел реестра не задан, ReFS будет использовать значение по умолчанию, равное 85 %. Это значение по умолчанию рекомендуется для большинства развертываний, а значения ниже 50 % не рекомендуется. В приведенной ниже команде PowerShell показано, как задать этот ключ реестра со значением 75%:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75
Чтобы настроить этот раздел реестра на каждом узле в развертывании Storage Spaces Direct, можно использовать следующую команду PowerShell:
$Nodes = 'S2D-01', 'S2D-02', 'S2D-03', 'S2D-04'
Invoke-Command $Nodes {Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75}
Увеличение размера зеркального уровня
Увеличение размера зеркального уровня позволяет ReFS хранить большую часть рабочего набора в зеркале. Это повышает вероятность того, что ReFS может записывать непосредственно в зеркальное отображение, что поможет повысить производительность. Приведенные ниже командлеты PowerShell демонстрируют, как увеличить размер зеркального уровня.
Resize-StorageTier -FriendlyName "Performance" -Size 20GB
Resize-StorageTier -InputObject (Get-StorageTier -FriendlyName "Performance") -Size 20GB
Совет
Не забудьте изменить размер раздела и тома после изменения размера StorageTier. Дополнительные сведения и примеры см. в разделе "Расширение базового тома".
Создание тома четности с зеркальным ускорением
Ниже приведенная команда PowerShell создает том с зеркальным ускорением четности с отношением Зеркало:Паритет 20:80, что является рекомендуемой конфигурацией для большинства нагрузок. Дополнительные сведения и примеры см. в "Создание томов в Storage Spaces Direct".
New-Volume -FriendlyName "TestVolume" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "StoragePoolName" -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes 200GB, 800GB