Поделиться через


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

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

Принцип работы

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

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

Контрольная сумма вычислений для данных файлов

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

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

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

Исправление записи восстанавливает целостность данных

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

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

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

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

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

Как описано выше, 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

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