如何知道 ReFS 上发生了位腐烂?

Dam*_*les 5 windows filesystems file-corruption refs

我读过 ReFS 有一个内置的校验和机制。似乎只有在使用冗余(存储空间)时才会进行自动位腐烂修复。

如果有一个没有冗余的 ReFS 卷,我认为系统至少仍然可以检测到发生了 bit-rot。那么,在这种情况下,ReFS 文件系统如何通知用户?即使没有自动修复,能够知道发生了位腐烂仍然应该是有帮助的。

是否有 API 或内置实用程序来了解 bit-rotten 文件列表?

Mat*_*att 3

ReFS 会将事件记录到事件日志中:

Event Viewer/Application and Services Log/Microsoft/Windows/DataIntegrityScan
Run Code Online (Sandbox Code Playgroud)
  • 日志名称: Microsoft-Windows-DataIntegrityScan/Admin
  • 来源: Microsoft-Windows-DataIntegrityScan
  • 事件ID: 54
  • 级别:警告
  • 描述:

    检测到文件数据不一致并已成功修复。文件名:M:\VirtualMachines\WindowsServer2012R2_Prod.vhd;范围偏移:0x3A8314000;范围长度:0x4000字节;已修复:0x4000 字节;状态:STATUS_SUCCESS。

在此输入图像描述

您可以创建自定义事件视图并按源过滤,选择 ReFS 源。如果您不使用镜像存储空间卷,那么这实际上并不是 Microsoft 的最佳实现,系统事件日志会覆盖自身,并且事件将会丢失。

来源 - Kate Li(微软特遣队员工): https://social.technet.microsoft.com/Forums/lync/en-US/99c5a067-a8f1-4ab8-b28c-25d0d8cd45b0/refs-salvage-log-entry-for-有缺陷的文件清理过程配置?forum=w8itprogeneral

运行数据完整性扫描计划任务将扫描 ReFS 卷上的所有文件:

  • 任务计划程序/任务计划程序库/Microsoft/Windows/数据完整性扫描
    • 数据完整性扫描
    • 用于崩溃恢复的数据完整性扫描

但我只能假设您有存储空间卷时才有效,因为在我的 24TB(数据量大于 7TB)硬件 RAID 6 卷上,它会立即退出。否则,仅在实时访问文件时扫描文件,并且仅扫描实际正在读取的块,而不是整个文件。

在台式电脑上,默认情况下禁用任务:

在此输入图像描述

但在服务器计算机上,每月任务默认启用

在此输入图像描述