我正在使用 VROC 为一些 NVMe 驱动器构建 CPU RAID。我的 RAID 1 阵列似乎出现了问题。我不想用细节来烦你,我有一个更一般的问题。
VROC(或一般的 RAID 1 控制器)如何处理驱动器位不一致的情况?它无法知道哪个是正确的,因为没有奇偶校验位。
大多数 RAID 控制器如何处理这个问题?
答案1
RAID 控制器从不从两个镜像驱动器读取数据来比较数据。因此答案是 - 您将获得不一致的读取,必须在文件系统级别检测和处理。现代文件系统(如 ZFS、BtrFS 甚至已停产的 ReFS)都有散列元数据和实际数据的选项。
答案2
传统的 RAID1 实现不是检查两个镜像以进行比较,既不在正常活动期间也不在清理期间。例如,Linux MDRAID 几乎总是从第一个镜像分支读取,而一些硬件控制器使用循环方法。
这意味着,即使镜像分支之一上存在正确版本,经典 RAID1 也可能返回不一致的数据。毕竟,如果不使用数据校验和,RAID1 阵列如何区分错误副本和正确副本?
BTRFS 和 ZFS 镜像完全不同:通过使用数据校验和,它们可以立即识别(并纠正)坏的/损坏的数据。