AFAIK。RAID 有 3 种类型:
- 硬件 - 例如昂贵的 PCIE RAID 卡/或很少有板载 RAID,它有一个专用的 CPU,可能带有写缓存和 BBU
- 软件 - 例如 ZFS、MD、BTRFS 软件 RAID
- 假的 - 例如便宜的 PCIE RAID 卡/或大多数使用主板上的 RAM 和 CPU 的板载 RAID。
通过使用 BTRFS 软件 RAID,文件系统了解驱动器,当它发现校验和错误的块时,它可以使用克隆 (RAID1/10) 或奇偶校验 (RAID5/6) 来恢复受影响的块并修复错误. 所以我们的文件不会随着时间的推移而降级。
问题是相同的自我修复机制是否适用于硬件或 BTRFS 的假 RAID?
我想应该有一个 API,BTRFS 可以使用它来访问受影响块的克隆/奇偶校验并修复它。我认为板载 RAID 更有可能获得类似的东西,但我不知道这样的事情是否存在,或者每个 RAID 的实现方式都不同,并且 BTRFS 没有可以使用的标准 API。
努力从这个问题中弄清楚,但我想我还是可以回答的。
BTRFS 是软件 RAID,由 Linux 内置的 BTRFS 软件处理。为了对阵列进行任何类型的维护,您需要在操作系统中使用 btrfs 命令。
就您的硬件而言,包括任何 RAID 控制器,磁盘只是基本的块设备。除了 Linux* 中的 BTRFS 软件之外,没有任何东西知道磁盘是阵列的一部分。
*其他操作系统也有可能实现 BTRFS,但我认为这不太可能,至少目前是这样。
更新:在现有 RAID 阵列上使用 BTRFS。
在这种情况下,RAID 和 BTRFS 是完全分开的。以硬件镜像为例:
/dev/raid
在本例中调用它)。由 RAID 控制器在两个磁盘上进行镜像。/dev/raid
功能和读/写数据到剩余磁盘。更换磁盘时,还要由 RAID 控制器来重建阵列。无论如何提供 RAID(硬件/“假”或软件),情况都是如此
我认为我解释得不是很好,但这是一个非常简单的概念......如果单独的设备(或软件)正在处理 RAID,则修复 RAID 数据不取决于 BTRFS。它在单个磁盘上看到单个文件系统,就像在 RAID 阵列上运行的任何其他文件系统一样。