当 ZFS RAID0 或 RAID1(单盘)检测到数据故障时会发生什么?

当 ZFS RAID0 或 RAID1(单盘)检测到数据故障时会发生什么?

有很多关于 ZFS 如何保护数据和检测位腐烂等的文章。甚至有一个问题询问有关单个驱动器上的 ZFS。单个设备上的 zfs:当文件损坏时会发生什么? 但答案是使用copies=2。我想知道的是如果没有冗余会发生什么。

但是,我实在找不到如果没有该数据的冗余副本会发生什么。散布 FUD 的人似乎暗示一个位错误就会导致所有数据丢失。但是 ZFS 的设计似乎不太可能如此糟糕。

那么,当 ZFS 发现位腐烂且没有冗余数据副本时,从操作系统的角度来看究竟发生了什么?IO Error访问文件系统/文件的特定部分时,操作系统会显示吗?

也许其他部分可以继续工作?如果错误部分被覆盖,错误就会消失?或者?

您能指出关于这些故障模式的明确文档吗?

谢谢!

答案1

如果发生数据损坏,ZFS 将报告损坏的事实以及受影响的文件zpool status poolname -v。池中的所有文件都不会丢失。

如果有多个副本可用,则读取文件时 ZFS 会将良好的数据返回给操作系统,但仍需要修复:可以使用 进行恢复,zpool scrub poolname并使用 手动清除错误zpool clear poolname

如果没有其他可用副本,则读取文件时 ZFS 会将损坏的数据返回给操作系统。恢复包括读取文件(可选)、删除文件以及使用 清除错误zpool clear poolname

请注意,池清理应作为例行计划任务进行,部分是为了尽量减少此类错误的影响,并且池状态应由您的监控系统进行监控。

Oracle ZFS 文档修复损坏的 ZFS 数据可能对你有帮助。Linux 和 FreeBSD 上的 ZFS 工作方式几乎相同。

相关内容