Потоки целостности ReFS

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows 10

Потоки целостности — это необязательная функция в ReFS, которая проверяет и поддерживает целостность данных с помощью проверка sumsums. Хотя ReFS всегда использует проверка сумы для метаданных, ReFS по умолчанию не создает или проверяет проверка сумы для данных файлов. Потоки целостности — это необязательная функция, которая позволяет пользователям использовать проверка сумы для файловых данных. Если включены потоки целостности, ReFS может четко определить, являются ли данные допустимыми или поврежденными. Кроме того, ReFS и дисковые пространства могут автоматически исправлять поврежденные метаданные и данные.

Как это работает

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

После включения потоков целостности ReFS создаст и сохранит проверка sum для указанных файлов в метаданных этого файла. Эта проверка sum позволяет ReFS проверить целостность данных перед доступом к нему. Прежде чем возвращать все данные с включенными потоками целостности, ReFS сначала вычислит свой проверка sum:

Compute checksum for file data

Затем этот проверка sum сравнивается с проверка сумом, содержащимся в метаданных файла. Если проверка сумы соответствуют, данные помечаются как допустимые и возвращаются пользователю. Если проверка сумы не соответствуют, данные повреждены. Устойчивость тома определяет, как ReFS реагирует на повреждения:

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

ReFS записывает все повреждения в журнале событий системы, а журнал будет отражать, были ли исправлены повреждения.

Corrective write restores data integrity

Производительность

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

  • Если включены потоки целостности, все операции записи становятся операциями выделения по записи. Хотя это позволяет избежать узких мест для чтения и записи, так как ReFS не требует считывания или изменения существующих данных, данные файлов часто становятся фрагментированными, что задерживает чтение.
  • В зависимости от рабочей нагрузки и базового хранилища системы вычислительные затраты на вычисления и проверку проверка sum могут привести к увеличению задержки ввода-вывода.

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

Скраббер целостности

Как описано выше, ReFS автоматически проверяет целостность данных перед доступом к любым данным. ReFS также использует фоновый скраббер, который позволяет ReFS проверять редко доступ к данным. Этот скраббер периодически сканирует том, определяет скрытые повреждения и активирует восстановление поврежденных данных.

Примечание.

Краббер целостности данных может проверять только данные файлов, в которых включены потоки целостности.

По умолчанию scrubber выполняется каждые четыре недели, хотя этот интервал можно настроить в планировщике задач в рамках проверки целостности данных Microsoft\Windows\Data.

Примеры

Для отслеживания и изменения параметров целостности данных файлов ReFS использует командлеты Get-FileIntegrity и Set-FileIntegrity.

Get-FileIntegrity

Чтобы узнать, включены ли потоки целостности для файловых данных, используйте командлет Get-FileIntegrity .

PS C:\> Get-FileIntegrity -FileName 'C:\Docs\TextDocument.txt'

Можно также использовать командлет Get-Item для получения параметров потока целостности для всех файлов в указанном каталоге.

PS C:\> Get-Item -Path 'C:\Docs\*' | Get-FileIntegrity

Set-FileIntegrity

Чтобы включить или отключить потоки целостности для данных файла, используйте командлет Set-FileIntegrity .

PS C:\> Set-FileIntegrity -FileName 'H:\Docs\TextDocument.txt' -Enable $True

Можно также использовать командлет Get-Item , чтобы задать параметры потока целостности для всех файлов в указанной папке.

PS C:\> Get-Item -Path 'H\Docs\*' | Set-FileIntegrity -Enable $True

Командлет Set-FileIntegrity также можно использовать непосредственно в томах и каталогах.

PS C:\> Set-FileIntegrity H:\ -Enable $True
PS C:\> Set-FileIntegrity H:\Docs -Enable $True

Дополнительные справочники