我读到过 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 卷上它会立即退出。否则,只有在实时访问文件时才会扫描文件,而且只扫描实际正在读取的块,而不是整个文件。
在台式电脑上,这些任务默认是禁用的:
但在服务器机器上,每月的任务是默认启用。