ZoL(Linux 上的 ZFS)重新同步优先级

ZoL(Linux 上的 ZFS)重新同步优先级

我正在对嵌入式系统的一些磁盘问题进行故障排除,并且大约有一半的时间在我重新启动时 SATA 驱动器丢失。该设备使用 ZFS 镜像作为根分区,并具有 1 个 SATA 驱动器和 1 个 NVME 驱动器。显然,当我重新启动并且 SATA 驱动器存在时,它需要重新同步镜像以使用新的根内容更新驱动器。

ZFS 如何选择要复制的块/文件?它是基于时间戳,还是有某种内部计数器用于确保新数据不会被旧数据覆盖?

答案1

我认为ZFS主要依靠校验和。当一个块被写入时,它也会存储它的 SHA256 校验和。通常它会检测位损坏或逻辑问题,从具有正确校验和的块恢复原始块。

在你的情况下,我敢打赌它更简单,因为一半的时间数据看起来根本丢失(或者至少没有检测到)

编辑:如果在未检测到磁盘时修改了数据,从 C 源来看,它看起来vdev_uberblock_compare会直接检查时间戳,以便确定最新的超级块并重新同步。

相关内容