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


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

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

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

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

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

Вычислить контрольную сумму для данных файла

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

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

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

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

Performance

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

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

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

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

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

Note

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

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

Examples

Для отслеживания и изменения параметров целостности данных файлов 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

Дополнительные ссылки