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

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

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

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

是否有 API 或内置实用程序可以了解位腐烂文件的列表?

答案1

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

Event Viewer/Application and Services Log/Microsoft/Windows/DataIntegrityScan
  • 日志名称:微软-Windows-DataIntegrityScan/Admin
  • 来源:微软Windows数据完整性扫描
  • 事件 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-defective-files-scrubbing-process-configuration?forum=w8itprogeneral

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

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

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

在台式电脑上,这些任务默认是禁用的:

在此处输入图片描述

但在服务器机器上,每月的任务默认启用。

在此处输入图片描述

相关内容